/*********************************************************************//** * @brief c_entry: Main program body * @param[in] None * @return int **********************************************************************/ int c_entry (void) { PINSEL_CFG_Type PinCfg; EXTI_InitTypeDef EXTICfg; /* Initialize debug via UART0 * – 115200bps * – 8 data bit * – No parity * – 1 stop bit * – No flow control */ debug_frmwrk_init(); // print welcome screen print_menu(); /* Initialize LEDs * - If using MCB1700 board: * LEDs: P1.28 and P1.29 are available * - If using IAR1700 board: * LEDs: LED1(P1.25) and LED2(P0.4) are available * Turn off LEDs after initialize */ InitLED(); /* Initialize EXT pin and registers * - If using MCB1700 board: EXTI0 is configured * - If using IAR1700 board: EXTI2 is configured */ #ifdef MCB_LPC_1768 /* P2.10 as /EINT0 */ PinCfg.Funcnum = 1; PinCfg.OpenDrain = 0; PinCfg.Pinmode = 0; PinCfg.Pinnum = 10; PinCfg.Portnum = 2; PINSEL_ConfigPin(&PinCfg); #elif defined (IAR_LPC_1768) /* P2.12 as /EINT2 */ PinCfg.Funcnum = 1; PinCfg.OpenDrain = 0; PinCfg.Pinmode = 0; PinCfg.Pinnum = 12; PinCfg.Portnum = 2; PINSEL_ConfigPin(&PinCfg); #endif EXTI_Init(); EXTICfg.EXTI_Line = _EXTINT; /* edge sensitive */ EXTICfg.EXTI_Mode = EXTI_MODE_EDGE_SENSITIVE; EXTICfg.EXTI_polarity = EXTI_POLARITY_LOW_ACTIVE_OR_FALLING_EDGE; EXTI_ClearEXTIFlag(_EXTINT); EXTI_Config(&EXTICfg); NVIC_SetPriorityGrouping(4); NVIC_SetPriority(_EXT_IRQ, 0); NVIC_EnableIRQ(_EXT_IRQ); _DBG_("First LED is blinking in normal mode...\n\r" \ "Press '1' to enter system in sleep mode.\n\r"\ "If you want to wake-up the system, press INT/WAKE-UP button."); while(_DG !='1') { //Blink first LED #ifdef MCB_LPC_1768 //blink LED P1.28 GPIO_SetValue(1, (1<<28)); delay(); GPIO_ClearValue(1, (1<<28)); delay(); #elif defined (IAR_LPC_1768) //blink LED1 (P1.25) GPIO_SetValue(1, (1<<25)); delay(); GPIO_ClearValue(1, (1<<25)); delay(); #endif } _DBG_("Sleeping..."); // Enter target power down mode CLKPWR_Sleep(); // MCU will be here after waking up _DBG_("System wake-up! Second LED is blinking..."); //turn off first LED #ifdef MCB_LPC_1768 GPIO_ClearValue(1, (1<<29)); #elif defined (IAR_LPC_1768) GPIO_SetValue(1, (1<<25)); #endif while (1) { //Blink second LED #ifdef MCB_LPC_1768 //blink LED P1.29 GPIO_SetValue(1, (1<<29)); delay(); GPIO_ClearValue(1, (1<<29)); delay(); #elif defined (IAR_LPC_1768) //blink LED2 (P0.4) GPIO_SetValue(0, (1<<4)); delay(); GPIO_ClearValue(0, (1<<4)); delay(); #endif } }
/*********************************************************************//** * @brief c_entry: Main program body * @param[in] None * @return int **********************************************************************/ int c_entry(void) { GPDMA_Channel_CFG_Type GPDMACfg; /* Initialize debug via UART0 * – 115200bps * – 8 data bit * – No parity * – 1 stop bit * – No flow control */ debug_frmwrk_init(); // print welcome screen print_menu(); /* GPDMA block section -------------------------------------------- */ /* Initialize buffer */ _DBG_("Initialize Buffer..."); Buffer_Init(); /* Disable GPDMA interrupt */ NVIC_DisableIRQ(DMA_IRQn); /* preemption = 1, sub-priority = 1 */ NVIC_SetPriority(DMA_IRQn, ((0x01<<3)|0x01)); /* Initialize GPDMA controller */ GPDMA_Init(); // Setup GPDMA channel -------------------------------- // channel 0 GPDMACfg.ChannelNum = 0; // Source memory GPDMACfg.SrcMemAddr = DMA_SRC; // Destination memory GPDMACfg.DstMemAddr = DMA_DST; // Transfer size GPDMACfg.TransferSize = DMA_SIZE; // Transfer width GPDMACfg.TransferWidth = GPDMA_WIDTH_WORD; // Transfer type GPDMACfg.TransferType = GPDMA_TRANSFERTYPE_M2M; // Source connection - unused GPDMACfg.SrcConn = 0; // Destination connection - unused GPDMACfg.DstConn = 0; // Linker List Item - unused GPDMACfg.DMALLI = 0; // Setup channel with given parameter GPDMA_Setup(&GPDMACfg); /* Reset terminal counter */ Channel0_TC = 0; /* Reset Error counter */ Channel0_Err = 0; _DBG_("Start GPDMA transfer and enter system in sleep mode..."); // Enable GPDMA channel 0 GPDMA_ChannelCmd(0, ENABLE); /* Enable GPDMA interrupt */ NVIC_EnableIRQ(DMA_IRQn); /* Enter in sleep mode */ CLKPWR_Sleep(); /* Wait for GPDMA processing complete */ while ((Channel0_TC == 0) && (Channel0_Err == 0)); /* Verify buffer */ Buffer_Verify(); _DBG(compl_menu); /* Loop forever */ while(1); return 1; }