/*------------------------------------------------------------ * Function Name : All_Init * Description : 全局初始化 * Input : None * Output : None * Return : None *------------------------------------------------------------*/ void All_Init( void ) { NVIC_Configuration(); /* 配置优先级分组 */ bsp_InitTimer(); /* 定时器初始化 */ key_init(); /* 按键初始化 */ print_init(); /* 打印机初始化 */ uart1_init(38400); /* 通讯串口初始化 */ rtc_init(); /* 时钟初始化 */ lcd_init(); /* LCD初始化 */ font_init(); /* 字体初始化 */ SysTick_Init(); /* 滴答定时器初始化 */ bsp_InitSFlash(); /* 外置 FLASH 初始化 */ USB_Init(); /* USB初始化 */ Ethernet_Init(); /* LWIP初始化 */ #ifdef ENABLE_BEEP BEEP_START(); #endif SetPage(SYS_INIT); }
int main(void) { initControl(); initLED1(); initLED2(); initLED3(); initLED4(); while(1) { turnOnLED2(); if(switchControl() == GPIO_PIN_SET) { turnOnLED4(); if(Ethernet_Init() == 1) { HAL_ETH_Start(&heth); blink_LED1(); } turnOffLED4(); } } }
int main(void) { sys_time = 0; NVIC_SetPriorityGrouping(3); // enable GPIO RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOEEN; act::mode(GPIO_OUTPUT); stat::mode(GPIO_OUTPUT); error::mode(GPIO_OUTPUT); estop::mode(GPIO_INPUT); // setup ethernet phy_rst::mode(GPIO_OUTPUT_2MHz); phy_rst::high(); // release reset line eth_mii_crs::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_rx_clk::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mdio::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_col::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_rx_dv::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_rxd2::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_rxd3::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_rx_er::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_tx_en::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_txd0::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_txd1::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mdc::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_txd2::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_tx_clk::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_rxd0::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_rxd1::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_txd3::mode(GPIO_ALTERNATE | GPIO_AF_ETH); /* setup usarts RCC->APB2ENR |= RCC_APB2ENR_USART1EN; // APB2 also has USART6 RCC->APB1ENR |= RCC_APB1ENR_USART2EN; // ABP1 also has USART3, UART4/5 */ RCC->APB1ENR |= RCC_APB1ENR_USART3EN; usart3_tx::mode(GPIO_ALTERNATE | GPIO_AF_USART3); usart3_rx::mode(GPIO_ALTERNATE | GPIO_AF_USART3); usart3_en::mode(GPIO_OUTPUT); //NVIC_EnableIRQ(USART3_IRQn); // setup systick SysTick_Config(SystemCoreClock/1000); NVIC_EnableIRQ(SysTick_IRQn); //NVIC_SetPriority(SysTick_IRQn,2); Ethernet_Init(); LwIP_Init(); if (!netapp_init()) while(1) { error::high(); delay_ms(50); error::low(); delay_ms(1000); } __enable_irq(); while(1) { /* check if any packet received */ if (ETH_CheckFrameReceived()) { /* process received ethernet packet */ LwIP_Pkt_Handle(); } LwIP_Periodic_Handle(sys_time); /* process devices */ } }
UINT8 main(void) { volatile UINT8 errflag = 0; volatile UINT32 nFlashID = 0; volatile UINT8 nRetLoadSts = 0; //Disable the L1D and L1P cache before loading the sections #ifdef DEBUG printf("L1D and L1P cache disabled\n"); #endif CACHE_setL1pSize(CACHE_L1_0KCACHE); CACHE_setL1dSize(CACHE_L1_0KCACHE); //Initialize the swPLL Controller Loader_InitPLL(); Gpo_Init(&oBootGreenLED, BOOT_GREEN_LED); Gpo_Init(&oBootRedLED, BOOT_RED_LED); Gpo_Clear(&oBootRedLED); Gpo_Clear(&oBootGreenLED); #ifdef DEBUG printf("Boot Loader program running...\n"); #endif //Initialize the DDR2 #ifdef DEBUG printf("Initializing the DDR2...\n"); #endif Loader_InitDDR2(); //Init the 16 Mbyte Flash SpiFlash_Init(&oFlash, NUMONYX_16MB); //FlashImage_check(); nFlashID = SpiFlash_GetFlashID( &oFlash ); while(nFlashID != FLASH_ID ) { volatile UINT32 nCounter = 0; while((nCounter++) <= 0x1000 ); nFlashID = SpiFlash_GetFlashID( &oFlash ); nFlashReadCount++; if(nFlashReadCount > 10 ) break; } if(nFlashID != FLASH_ID ) { volatile UINT32 nCounter = 0; while(1) { while((nCounter++) <= 0xCC0000 ); Gpo_Toggle(&oBootRedLED); nCounter = 0; } } #ifdef FILE_USAGE if(errflag = Loader_GetImage((UINT8 *)"AppC2.hex",APP_DDR_START_ADDR_CORE2 ,APP_SIZE_CORE2)) { showErr(errflag); } if(errflag = Loader_GetImage((UINT8 *)"AppC1.hex",APP_DDR_START_ADDR_CORE1,APP_SIZE_CORE1)) { showErr(errflag); } if(errflag = Loader_GetImage((UINT8 *)"AppC0.hex",APP_DDR_START_ADDR_CORE0,APP_SIZE_CORE0)) { showErr(errflag); return 0; } //Write the Downloaded Images to Flash Loader_WriteImagesToFlash(); #endif #ifdef ETHERNET_USAGE #ifdef DEBUG printf("sizeof BootPkt -> %d\n", sizeof(BootPkt)); #endif //Init the Mac interface bInEthernetScope = TRUE; EVM_init(); if(TRUE == Ethernet_Init()) { //Download the Images to DDR if(TRUE == BootPkt_Download()) { //Write the Downloaded Images to Flash Loader_WriteImagesToFlash(); } } bInEthernetScope = FALSE; Gpo_Clear(&oBootGreenLED); #endif #ifdef FLASH_BOOT #ifdef DEBUG printf("Reading the images from flash\n"); #endif SpiFlash_Read(&oFlash, (UINT8 *)APP_DDR_START_ADDR_CORE2, APP_FLASH_START_ADDR_CORE2, APP_SIZE_CORE2); SpiFlash_Read(&oFlash, (UINT8 *)APP_DDR_START_ADDR_CORE1, APP_FLASH_START_ADDR_CORE1, APP_SIZE_CORE1); SpiFlash_Read(&oFlash, (UINT8 *)APP_DDR_START_ADDR_CORE0, APP_FLASH_START_ADDR_CORE0, APP_SIZE_CORE0); #endif nRetLoadSts = Loader_LoadApp((UINT32)APP_DDR_START_ADDR_CORE2, APP_SIZE_CORE2); if(nRetLoadSts) { Gpo_Set(&oBootRedLED); while(1); } nRetLoadSts = Loader_LoadApp((UINT32)APP_DDR_START_ADDR_CORE1, APP_SIZE_CORE1); if(nRetLoadSts) { Gpo_Set(&oBootRedLED); while(1); } //it should be last .... nRetLoadSts = Loader_LoadApp((UINT32)APP_DDR_START_ADDR_CORE0, APP_SIZE_CORE0); if(nRetLoadSts) { Gpo_Set(&oBootRedLED); while(1); } Gpo_Set(&oBootGreenLED); { volatile UINT32 nCounter = 0; while(nCounter++ < (0xCC0000*4)); } if(errflag = Loader_SetAppLoadCompleteFlag((UINT32 *)APPC1_LOAD_COMPLETE_FLAG_ADDR)) { showErr(errflag); } if(errflag = Loader_SetAppLoadCompleteFlag((UINT32 *)APPC2_LOAD_COMPLETE_FLAG_ADDR)) { showErr(errflag); } #ifdef DEBUG printf("Starting Application program ...\n"); #endif Loader_ExecuteAppC0(); return 0; }
int main(void) { NVIC_SetPriorityGrouping(3); /* enable GPIO */ RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOEEN; act::mode(GPIO_OUTPUT); stat::mode(GPIO_OUTPUT); error::mode(GPIO_OUTPUT); error::high(); estop::mode(GPIO_INPUT); /* setup ethernet */ phy_rst::mode(GPIO_OUTPUT_2MHz); phy_rst::high(); // release reset line eth_mii_crs::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_rx_clk::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mdio::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_col::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_rx_dv::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_rxd2::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_rxd3::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_rx_er::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_tx_en::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_txd0::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_txd1::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mdc::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_txd2::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_tx_clk::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_rxd0::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_rxd1::mode(GPIO_ALTERNATE | GPIO_AF_ETH); eth_mii_txd3::mode(GPIO_ALTERNATE | GPIO_AF_ETH); /* Initialize Table */ register_table.model_number = 302; register_table.version = 0; register_table.id = 253; register_table.baud_rate = 34; // 57600???? register_table.last_packet = 0; register_table.system_time = 0; register_table.led = 0; dynamixel_init(); /* setup analog */ RCC->APB2ENR |= RCC_APB2ENR_ADC1EN | RCC_APB2ENR_ADC2EN | RCC_APB2ENR_ADC3EN; adc1.init(VOLTAGE_SENSE_ANALOG_CHANNEL, CURRENT_SENSE_ANALOG_CHANNEL); voltage_sense::mode(GPIO_INPUT_ANALOG); current_sense::mode(GPIO_INPUT_ANALOG); /* setup systick */ SysTick_Config(SystemCoreClock/1000); NVIC_SetPriority(SysTick_IRQn,2); NVIC_EnableIRQ(SysTick_IRQn); Ethernet_Init(); LwIP_Init(); if (!netapp_init()) while(1); __enable_irq(); /* done with setup, turn off err led */ error::low(); while(1) { /* check if any packet received */ if (ETH_CheckFrameReceived()) { /* process received ethernet packet */ LwIP_Pkt_Handle(); } LwIP_Periodic_Handle(register_table.system_time); } }
/*------------------------------------------------------------------------------------------------*/ int main(void) { Bool_e NouveauMode; Horodatage_s Time = { .Heure = 0, .Minute = 0, .Seconde = 0, }; // ------------------------------------------------------------------------ // --- INIT DU SYSTEME // --- Initialisations uC, Peripheriques, Fonctions et Interfaces BSP_Init(); // Init carte SysTick_Config(SystemCoreClock / 1000); // Init Tick 1ms HAL_Console_Init(115200); RTC_StartInit(TRUE); // Start Init RTC I2C1_Init(100 * 1000); // 100kHz ADC1_Init(); _CONSOLE(0, "\n"); _CONSOLE(LogId, "--- START - ALJ%s ---\n", VERSION_SW); //AM23xx_Test(); REGLAGE_RTC(); //---------------------------------- // FONCTIONNALITES MemoireFAT_Init((Diskio_drvTypeDef*) &SdCard_SPI_Driver); #if USE_TEMP_HYGRO TempHygro_Init(TEMPERATURE_PERIODE_ACQUISITION_ms); #endif Delay_ms(50); // Hygrometre_Init(); ConfIni_Init(); Arrosage_Init(USE_CONF_INI_FILE); Chauffage_Init(USE_CONF_INI_FILE); Ventilation_Init(USE_CONF_INI_FILE); Logs_Init(); PC_Init(); Terminal_Init(); Terminal_Cmd_Init(); //_CONSOLE(LogId, "MODE_FCT_SERVEUR\n"); ModeFct = MODE_FCT_SERVEUR; //MemoireFAT_PrintFileList("httpserver"); Ethernet_Init(USE_CONF_INI_FILE); if (RTC_BkpRegister_Read(0) != 0) { _CONSOLE(LogId, "MODE_FCT_USB\n"); ModeFct = MODE_FCT_USB; //USB_Init((Diskio_drvTypeDef*) &SdCard_SPI_Driver); RTC_BkpRegister_Write(0, 0); } // Lancement des timers TSW_Start(&TmrAffichTempHygro, 3000); //Mode_Test(); WDG_InitWWDG(10000); while (RTC_Main() != RTC_ETAPE_READY); TSW_Start(&Tmr_RTC, 10000); RTC_Lire(&StartTime); RTC_Lire(&Time); //-------------------------------------------------------------------------------- _CONSOLE(LogId, "--------------------------\n"); _CONSOLE(LogId, "StartupTime=%dms\n", TSW_GetTimestamp_ms()); _CONSOLE(LogId, "--------------------------\n\n"); while(1) { WDG_Refresh(); // if (PC_Read((uint8_t*) BufferIn, NULL) == TRUE) // { // Terminal_Parser(BufferIn, BufferOut, 1024); // if (strlen(BufferOut) > 0) // PC_Write(BufferOut, strlen(BufferOut)); // } // Choix du mode de fonctionnement // WKUP = ACTIF -> USB - WKUP = INACTIF -> WebServer //if (GPIO_Get(PORT_WKUP) == Etat_ACTIF) //{ // RTC_BkpRegister_Write(0, 1); // while (GPIO_Get(PORT_WKUP) == Etat_ACTIF) // TSW_Delay(100); // GOTO(0); //} //---------------------------------- // PROCESSUS LifeBit_Main(); MemoireFAT_Main(); #if USE_TEMP_HYGRO TempHygro_Thread(); #endif if (Mode != MODE_DEMARRAGE) { Arrosage_Management(); Chauffage_Management(); Ventilation_Management(); Hygrometrie_Management(); } if (ModeFct == MODE_FCT_SERVEUR) { Ethernet_Management(); } Logs_Management(); //---------------------------------- // LECTURE TEMPERATURE if ((TempHygro_IsValide() == FALSE) && (Mode != MODE_DEMARRAGE)) { Mode = MODE_DEFAUT; } else { Temperature = TempHygro_GetTemperature(); Hygrometrie = TempHygro_GetHygrometrie(); } //---------------------------------- // RTC if (TSW_IsFinished(&Tmr_RTC)) { RTC_Lire(&Time); TSW_ReStart(&Tmr_RTC); //_CONSOLE(LogId, "RTC = %d-%02d-%02d %02d:%02d:%02d;%08d;", // Time.Annee, Time.Mois, Time.Jour, // Time.Heure, Time.Minute, Time.Seconde, // TSW_GetTimestamp_ms()); } //---------------------------------- // AFFICHAGE TEMPERATURE /* if (TSW_IsRunning(&TmrAffichTempHygro) == FALSE) { _CONSOLE(LogId, "TempHygro = "); if (TempHygro_IsValide() == FALSE) _CONSOLE(LogId, "Non valide\n"); else { _CONSOLE(LogId, "%.01f %c\t%.01f %c\n", Temperature, '°', Hygrometrie, '%'); } TSW_Start(&TmrAffichTempHygro, 2500); } */ //---------------------------------- // GESTION DES MODES NouveauMode = FALSE; if (LastMode != Mode) { LastMode = Mode; NouveauMode = TRUE; } switch (Mode) { //-------------------------------------------------------------- case MODE_DEMARRAGE : if (NouveauMode) { _CONSOLE(LogId, "----- MODE_DEMARRAGE -----\n"); Logs_Data(); } if (Mode_Demarrage() == Status_Fini) { Mode = MODE_SURVEILLANCE; } break; //-------------------------------------------------------------- case MODE_SURVEILLANCE : if (NouveauMode) { _CONSOLE(LogId, "----- MODE_SURVEILLANCE -----\n"); Logs_Data(); GPIO_Set(PORT_IHM_LED1, Etat_ACTIF); GPIO_Set(PORT_IHM_LED2, Etat_INACTIF); GPIO_Set(PORT_IHM_LED3, Etat_INACTIF); EtatVentillation = Etat_INACTIF; EtatChauffage = Etat_INACTIF; TSW_Start(&Tmr_ATTENTE, 1000 * 30); // On reste au moins 30sec en mode attente } if (TSW_IsRunning(&Tmr_ATTENTE) == TRUE) { break; } // Pas de chauffage dessuite après l'extraction if ((TSW_IsRunning(&Tmr_EXT) == FALSE) && (Temperature < Chauffage_Get()->Cfg_SeuilStart_DegC)) { Mode = MODE_CHAUFFAGE; } // Pas d'extraction dessuite après le chauffage if ((TSW_IsRunning(&Tmr_CH) == FALSE) && (Temperature >= Ventilation_Get()->Cfg_SeuilStart_DegC)) { Mode = MODE_VENTILLATION; } break; //-------------------------------------------------------------- case MODE_CHAUFFAGE : if (NouveauMode) { _CONSOLE(LogId, "----- MODE_CHAUFFAGE -----\n"); Logs_Data(); GPIO_Set(PORT_IHM_LED1, Etat_INACTIF); GPIO_Set(PORT_IHM_LED2, Etat_ACTIF); GPIO_Set(PORT_IHM_LED3, Etat_INACTIF); if (Ventilation_Get()->Cfg_ActiverPendantChauffage) EtatVentillation = Etat_ACTIF; else EtatVentillation = Etat_INACTIF; EtatChauffage = Etat_ACTIF; } // Attente franchissement seuil if (Temperature >= Chauffage_Get()->Cfg_SeuilStop_DegC) { EtatChauffage = Etat_INACTIF; TSW_Start(&Tmr_CH, 1000 * Chauffage_Get()->Cfg_TempoApresCh_s); Mode = MODE_SURVEILLANCE; } break; //-------------------------------------------------------------- case MODE_VENTILLATION : if (NouveauMode) { _CONSOLE(LogId, "----- MODE_VENTILLATION -----\n"); Logs_Data(); GPIO_Set(PORT_IHM_LED1, Etat_ACTIF); GPIO_Set(PORT_IHM_LED2, Etat_ACTIF); GPIO_Set(PORT_IHM_LED3, Etat_INACTIF); EtatChauffage = Etat_INACTIF; EtatVentillation = Etat_ACTIF; } if (Temperature < Ventilation_Get()->Cfg_SeuilStop_DegC) { EtatVentillation = Etat_INACTIF; TSW_Start(&Tmr_EXT, 1000 * Ventilation_Get()->Cfg_TempoApresEXT_s); Mode = MODE_SURVEILLANCE; } break; //-------------------------------------------------------------- case MODE_DEFAUT : if (NouveauMode) { _CONSOLE(LogId, "----- MODE_DEFAUT -----\n"); Logs_Data(); GPIO_Set(PORT_IHM_LED1, Etat_INACTIF); GPIO_Set(PORT_IHM_LED2, Etat_INACTIF); GPIO_Set(PORT_IHM_LED3, Etat_ACTIF); EtatVentillation = Etat_INACTIF; EtatChauffage = Etat_INACTIF; //Arrosage_Stop(); TSW_Start(&Tmr_DEFAULT, 60 * 1000); TSW_Start(&Tmr_DEFAULT_Max, 600 * 1000); } if (TempHygro_IsValide() == TRUE) { Mode = MODE_VENTILLATION; break; } if ((TSW_IsRunning(&Tmr_DEFAULT) == FALSE) && (REBOOT_ON_DEFAULT_MODE == TRUE) && (Arrosage_IsActive() == FALSE)) { if ((Telnet_GetNbActiveConnection() == 0) || (TSW_IsRunning(&Tmr_DEFAULT_Max) == FALSE)) { _CONSOLE(LogId, "REBOOT...\n"); MemoireFAT_DeInit(); TSW_Delay(5000); GOTO(0); Mode = MODE_DEMARRAGE; } } break; } //---------------------------------- // MAJ DES SORTIES if (GPIO_Get(PORT_RELAIS_V_EXT) != EtatVentillation) { _CONSOLE(LogId, "Ventillation = %d\n", EtatVentillation); GPIO_Set(PORT_RELAIS_V_EXT, EtatVentillation); Logs_Data(); } if (GPIO_Get(PORT_RELAIS_CH) != EtatChauffage) { _CONSOLE(LogId, "Chauffage = %d\n", EtatChauffage); GPIO_Set(PORT_RELAIS_CH, EtatChauffage); Logs_Data(); } } return 0; } /*------------------------------------------------------------------------------------------------*/ extern void SdCard_SPI_timerproc (void); void ApplicationTickHook (void) { static uint8_t ucTick_10ms=0; static uint8_t ucTick_100ms=0; /* Gestion du Tick Timer Software */ TSW_Refresh(); /* Tick 10ms */ ucTick_10ms++; if (ucTick_10ms >= 10){ ucTick_10ms = 0; ADC1_Tick(); SdCard_SPI_timerproc(); } /* Tick 100ms */ ucTick_100ms++; if (ucTick_100ms >= 10){ ucTick_100ms = 0; } } /*------------------------------------------------------------------------------------------------*/ void Delay(uint32_t nCount) { /* Capture the current local time */ uint32_t timingdelay = TSW_GetTimestamp_ms() + nCount; /* wait until the desired delay finish */ while(timingdelay > TSW_GetTimestamp_ms()) { } }
// ***************************************************************************** // InitialiseHW // Setup the processor // ***************************************************************************** void InitialiseHW ( void ) { // If running on Rev A2 silicon, turn the LDO voltage up to 2.75V. This is // a workaround to allow the PLL to operate reliably. // if(REVISION_IS_A2) { SysCtlLDOSet(SYSCTL_LDO_2_75V); } // 50 MHz SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_8MHZ); // Enable Peripherals SysCtlPeripheralEnable(SYSCTL_PERIPH_ETH); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH); SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0); SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1); // Set interrupt priority levels IntPrioritySet(INT_ETH, 0x20); IntPrioritySet(FAULT_SYSTICK, 0x40); // // Enable the peripherals that should continue to run when the processor // is sleeping. // SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_GPIOA); SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_GPIOB); SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_GPIOC); SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_GPIOD); SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_GPIOE); SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_GPIOF); SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_GPIOG); SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_GPIOH); SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_UART0); SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_UART1); SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_ETH); SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_TIMER0); SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_TIMER1); SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_TIMER2); // // Enable peripheral clock gating. Note that this is required in order to // measure the the processor usage. // SysCtlPeripheralClockGating(true); // Grab the Config from Flash SysConfigInit(); AdcInit(); pwmInit(); RelayInit(); //usrand(0x23482937); // Note (From the DriverLib) : // It takes five clock cycles after the write to enable a peripheral // before the the peripheral is actually enabled. During this time, attempts // to access the peripheral result in a bus fault. Care should be taken // to ensure that the peripheral is not accessed during this brief time // period. #ifdef SERIAL_ENABLED Serial_Init(); #endif #ifdef UPNP_ENABLED UPnPInit(); #endif Ethernet_Init(); #ifdef LOGIC_ENABLED LogicStartStop(true); #endif #ifdef SOLDERBRIDGES_ENABLED SB_Init(); ExtGpio_Init(); SolderBridge_StartScan(); ExtGpio_Scan(); #endif #ifdef SPLASHPIXEL_ENABLED SP_Init(); #endif // Set up the GPIO as specified by the user UserGpioInit(); // Most, if not all M3's have a SysTick which you can use for scheduling your code SysTickPeriodSet(SysCtlClockGet() / SYSTICKHZ); SysTickEnable(); SysTickIntEnable(); }