/*! * Init board. */ void BoardInit(void) { /* Initialise ports. */ PortInit(); /* Initialise system clock. */ SystemClkInit(); /* Initialise SPI1. */ Spi1Init(); /* Initialise Timer0. */ Timer0Init(); /* Initialise Timer3. */ Timer3Init(); /* Initialise interrupts. */ InterruptInit(); /* Initialise the LCD. */ LcdInit(); /* Clear LCD. */ LcdClearDisplay(); /* Initialise LEDs. */ LEDInit(); #ifdef RTC_ENABLED /* RTC init. */ RTC_Init(); #endif //RTC_ENABLED #ifdef UART0_ENABLED /* UART0 init. */ Uart0Init(); #endif //UART0_ENABLED }
void main (void) { TTaskHandle xdata A2DTaskHandle, HeaterStatusTaskHandle, HeaterControlTaskHandle; TTaskHandle xdata EdenProtocolTaskHandle, OHDBMessageDecodeTaskHandle; WDTCN = 0xde; // disable watchdog timer WDTCN = 0xad; XBR_Init(); // Initialize cross bars SysClkInit(); Uart0Init(); Timer_0_Init(); SchedulerInit(); InitCoolingFans(); // Material and UV XilinxWatchdogInit(); SpiA2D_Init(); A2D_Init(); SpiInit(); E2PROMInit(); XilinxInit(); OHDBPotenmtrInit(); Roller_Init(); Bumper_Init(); CommunicationLossTaskInit(); EdenProtocolInit(); MessageDecodeInitOHDB(); HeadData_Init(); EA |= ENABLE; HeaterControlInit(); PrintDrv_Init(); SendWakeUpNotification(); HeadData_ReadDataFromAllE2PROMs(); A2DTaskHandle = SchedulerInstallTask(SpiA2D_Task); EdenProtocolTaskHandle = SchedulerInstallTask(EdenProtocolDecodeTask); OHDBMessageDecodeTaskHandle = SchedulerInstallTask(OHDBMessageDecodeTask); HeaterStatusTaskHandle = SchedulerInstallTask(HeaterStatusTask); HeaterControlTaskHandle = SchedulerInstallTask(HeaterControlTask); HeaterSetTasksHandles(HeaterStatusTaskHandle, HeaterControlTaskHandle); SchedulerResumeTask(GetXilinxWatchdogTaskHandle(),0); SchedulerResumeTask(A2DTaskHandle,0); SchedulerResumeTask(HeaterStatusTaskHandle,0); SchedulerResumeTask(EdenProtocolTaskHandle,0); SchedulerResumeTask(OHDBMessageDecodeTaskHandle,0); while(1) { SchedulerRun(); } }
int main (int argc, char** argv) { hw_init(); sys_time_init(); led_init(); adc_init(); adc_buf_channel(ADC_0, &buf_adc[0], ADC_NB_SAMPLES); adc_buf_channel(ADC_1, &buf_adc[1], ADC_NB_SAMPLES); adc_buf_channel(ADC_2, &buf_adc[2], ADC_NB_SAMPLES); adc_buf_channel(ADC_3, &buf_adc[3], ADC_NB_SAMPLES); adc_buf_channel(ADC_4, &buf_adc[4], ADC_NB_SAMPLES); adc_buf_channel(ADC_5, &buf_adc[5], ADC_NB_SAMPLES); #ifdef ADC_6 adc_buf_channel(ADC_6, &buf_adc[6], ADC_NB_SAMPLES); #endif #ifdef ADC_7 adc_buf_channel(ADC_7, &buf_adc[7], ADC_NB_SAMPLES); #endif #if NB_ADC != 8 #error "8 ADCs expected !" #endif #ifdef USE_UART0 Uart0Init(); #endif #ifdef USE_UART1 Uart1Init(); #endif int_enable(); while(1) { if (sys_time_periodic()) { LED_TOGGLE(1); uint16_t values[NB_ADC]; uint8_t i; for(i = 0; i < NB_ADC; i++) values[i] = buf_adc[i].sum / ADC_NB_SAMPLES; uint8_t id = 42; DOWNLINK_SEND_ADC(&id, NB_ADC, values); } } return 0; }
static void csc_main_init( void ) { mcu_init(); sys_time_init(); led_init(); Uart0Init(); Uart1Init(); ppm_init(); // Configure P0.21 as GPIO, output and then pull high as we use it to drive ppm input transistor PINSEL1 = PINSEL1 & ~(0x3 << 10); IO0DIR = IO0DIR | (0x1 << 21); IO0PIN = IO0DIR | (0x1 << 21); mcu_int_enable(); }
main() { SysCtlClockSet(SYSCTL_SYSDIV_2_5| SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ); IntMasterEnable(); Uart0Init(19200); Uart1Init(19200); DPRINTF(("Bat=%d ,cha=%x ,Temp=%f \n",1,20,3.0)); // ADCBAT_init(); // Ssi0Init(); //AD7367 //spi_ad7705Init(); //AD7705 IoPortInit(); //IO口初始化 // I2CM_Init(); //Fm31256 //TimerInit(); PIN_JR_relay(ERelay_off); PIN_JRTG_relay(ERelay_off); PIN_JUNX_relay(ERelay_off); PIN_JUN_relay(ERelay_off); PIN_JUX_relay(ERelay_off); FlashUsecSet(49); AD7367_init(); AD7705_init(); // PIN_JR_relay(ERsample_1M); /* { uint32 i; set.Debug=EDebug_sub; set.Fre=EFre_500; gainchange(); Vac_read(); for(i=0;i<500;i++) { Fourier_Samplestart(); ; delay(0xf000*200); } } */ /* { uint32 i; set.Debug=EDebug_sub; set.Fre=EFre_000; V_read(); for(i=0;i<50;i++) { DPRINTF(("I=%x \n",Read_ad7705_I(0x07,1))); } for(i=0;i<50;i++) { DPRINTF(("U=%x \n",Read_ad7705_U(0x07,1))); } for(i=0;i<500;i++) { R_test(); delay(0xf000*200); } } */ modifyK_js(); rx_flag=0; while(1) { // uint8 option=0; if((rx_flag==rx_succeed)) { Sendstc_ask(); set.Work=0x0f&rx_data.mune.workcommand; set.Debug=0x0f&(rx_data.mune.workcommand>>4); set.Fre=rx_data.mune.Fre; set.Voltage=rx_data.mune.Voltage; rx_flag=0x00; switch(set.Work) { case EstartV_main: V_read(); break; case EstartTg_main://AC Fourier_Samplestart(); PIN_JRTG_relay(ERelay_off); PIN_JUNX_relay(ERelay_off); PIN_JUN_relay(ERelay_off); PIN_JUX_relay(ERelay_off); break; case EstartR_main://DC R_test(); PIN_JRTG_relay(ERelay_off); break; case Emodifyin_main: modify_save(); modifyK_js(); //DPRINTF(("In \n")); break; case Emodifyout_main : delay(0x80000); modify_ToView(); modifyK_js(); //DPRINTF(("out \n")); break; case EstartX_main : Vacx_read(); break; case ERelay_main: PIN_JRTG_relay(ERelay_on); PIN_JR_relay(ERsample_50); break; default : SysCtlReset(); break; } if((rx_flag==rx_succeed)) { if(set.Work==0x0f&rx_data.mune.workcommand) { rx_flag=0; } } } }
/*! * Init board. */ void BoardInit(void) { SPI_InitTypeDef SPI_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; #ifdef STM32F10X_MD RCC_APB2PeriphClockCmd( 0 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO , ENABLE); #else #ifdef STM32L1XX_MD RCC_AHBPeriphClockCmd( 0 | RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB , ENABLE); #else #error "Unknown CPU type" #endif #endif DBGMCU_Config( 0 | DBGMCU_TIM2_STOP | DBGMCU_TIM3_STOP | DBGMCU_SLEEP | DBGMCU_STOP | DBGMCU_STANDBY , ENABLE); MAC_TIMER_CLOCK(); DELAY_TIMER_CLOCK(); LED1_OFF(); LED1_INIT(); LED2_OFF(); LED2_INIT(); TimerInit( MAC_TIMER, MAC_TIMER_PRESCALER, MAC_TIMER_IRQn ); TimerInit( DELAY_TIMER, DELAY_TIMER_PRESCALER, 0 ); RF_SDN_HIGH(); RF_SDN_INIT(); RF_NSS_HIGH(); RF_NSS_INIT(); RF_SCLK_INIT(); RF_MISO_INIT(); RF_MOSI_INIT(); RF_IRQ_INIT(); DELAY_uS(10 * DELAY_1MS_TIMER2); RF_SDN_LOW(); DELAY_uS(50 * DELAY_1MS_TIMER2); RF_SPI_CLOCK(); SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(RF_SPI, &SPI_InitStructure); SPI_Cmd(RF_SPI, ENABLE); #ifdef STM32F10X_MD GPIO_EXTILineConfig(RF_IRQ_EXT_PORT, RF_IRQ_EXT_PIN); #else #ifdef STM32L1XX_MD SYSCFG_EXTILineConfig(RF_IRQ_EXT_PORT, RF_IRQ_EXT_PIN); #endif #endif EXTI_InitStructure.EXTI_Line = RF_IRQ_EXT_LINE; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); DISABLE_MAC_EXT_INTERRUPT(); CLEAR_MAC_EXT_INTERRUPT(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NVIC_InitStructure.NVIC_IRQChannel = RF_IRQ_EXT_IRQ; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); #ifdef RTC_ENABLED RTC_INIT(); #endif #ifdef UART0_ENABLED Uart0Init(); #endif }
main() { uint8 option=0; uint8 key; SysCtlClockSet(SYSCTL_SYSDIV_4| SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_6MHZ); Uart0Init(19200); Uart1Init(9600); Uart2Init(19200); IntMasterEnable(); SysLinearTimer =0; IoPortInit(); //IO口初始化 I2C1Init() ;//Fm31256 TimerInit(); xs6963_init(); PIN_TDA7367stand_Write(ETDA7367work_no); FlashUsecSet(49); //T1Init_LM331(); DPRINTF(("Bat=%d ,cha=%d ,Temp=%d \n",1,2,3)); Usb_Host_Init(); mainHandleinit(); signPWM_init(50.0); PWM_sign_stop(); /*LCD初始化*/ start_mune(); /* fm31256 eeprom 8 */ readbyte_much(setsto_addr,settype_nub,set.byte ); /*修正系数*/ modify_read(); /**/ Oiltempset.oilTwork=EOiltemp_Workon; /*lm331初始化 温度测量使用*/ T1Init_LM331(); /*系统节拍*/ SysLinearTimer=0; while(SysLinearTimer<3*TIMER_FREQ)//后台参数设置 { key=Keyset.keyEfficiency; if(key==key_modify) { while(Keyset.keyEfficiency==key_modify); option++; if(option>=4) { modify_read();//读取修正参数 TgC_read(); modify();//修正 } } } modifyK_js(); SysLinearTimer=0; rx_flag=0; option=0; mainset_go: key=Keyset.keyEfficiency; mainset_mune(); Reversepic(mainset_lin+option*mainset_high, mainset_column, mainset_high, 2*4); while(1) { while(key==Keyset.keyEfficiency) { if(SysLinearTimer>(3*TIMER_FREQ/4)) { // Temp_account(); if(TRUE_z==Gandispose())//地线检测 { mainset_mune(); Reversepic(mainset_lin+option*mainset_high, mainset_column, mainset_high, 2*4); } read_time(); { uint8 byte[12]; Clock_viewxs(byte) ; } SysLinearTimer=0; } } key=Keyset.keyEfficiency; /*按键处理*/ switch(key) { case key_no: case key_back: continue; case key_down: case key_up: Reversepic(mainset_lin+option*mainset_high, mainset_column, mainset_high, 2*4); option=keyoption_js(option, key,4,Emune_key);// Reversepic(mainset_lin+option*mainset_high, mainset_column, mainset_high, 2*4); /* if(key==key_up) { PWM_sign_acc(0.0, 0.0); delay(0x80000); PIN_DCAC_pwm(EDC_power); PWM_sign_acc(0.0, 0.7); } else { PWM_sign_acc(0.0, 0.0); delay(0x80000); PIN_DCAC_pwm(EAC_power); PWM_sign_acc(50.0, 0.8); } */ break; case key_ok: switch(option) { case ELan_main://语言 set.mune.Langue++; set.mune.Langue&=0x01; //ShowtextLine(mainset_lin+option*mainset_high, mainset_column+0x10,Lanset_p[set.mune.Langue]); break; case EOilset_main://油样设置 oidset(); break; case EView_main://历史数据 Viewdata_Hander(); break; case EClock_main://时钟设置 clockset_mune(); break; } goto mainset_go ; case key_oil: Oilclear();//排油 break; } } }
void init_ap( void ) { #ifndef SINGLE_MCU /** init done in main_fbw in single MCU */ hw_init(); sys_time_init(); #ifdef LED led_init(); #endif #ifdef ADC adc_init(); #endif #endif /* SINGLE_MCU */ /************* Sensors initialization ***************/ #ifdef USE_INFRARED ir_init(); #endif #ifdef USE_GYRO gyro_init(); #endif #ifdef USE_GPS gps_init(); #endif #ifdef USE_UART0 Uart0Init(); #endif #ifdef USE_UART1 Uart1Init(); #endif #ifdef USE_UART2 Uart2Init(); #endif #ifdef USE_UART3 Uart3Init(); #endif #ifdef USE_USB_SERIAL VCOM_init(); #endif #ifdef USE_GPIO GpioInit(); #endif #ifdef USE_I2C0 i2c0_init(); #endif #ifdef USE_I2C1 i2c1_init(); #endif #ifdef USE_I2C2 i2c2_init(); #endif /************* Links initialization ***************/ #if defined USE_SPI spi_init(); #endif #if defined MCU_SPI_LINK link_mcu_init(); #endif #ifdef MODEM modem_init(); #endif /************ Internal status ***************/ h_ctl_init(); v_ctl_init(); estimator_init(); #ifdef ALT_KALMAN alt_kalman_init(); #endif nav_init(); modules_init(); /** - start interrupt task */ int_enable(); /** wait 0.5s (historical :-) */ sys_time_usleep(500000); #if defined GPS_CONFIGURE gps_configure_uart(); #endif #if defined DATALINK #if DATALINK == XBEE xbee_init(); #endif #endif /* DATALINK */ #if defined AEROCOMM_DATA_PIN IO0DIR |= _BV(AEROCOMM_DATA_PIN); IO0SET = _BV(AEROCOMM_DATA_PIN); #endif power_switch = FALSE; /************ Multi-uavs status ***************/ #ifdef TRAFFIC_INFO traffic_info_init(); #endif }
/******************************************************************** 函数功能:主函数。 入口参数:无。 返 回:无。 备 注:无。 ********************************************************************/ void main(void) { #ifdef DEBUG0 int i; #endif int InterruptSource; SystemClockInit(); //系统时钟初始化 LedInit(); //LED对应的管脚初始化 LcdInit(); //LCD初始化 AdcInit(); //ADC初始化 Timer1Init(); //定时器1初始化,用来产生10ms的定时扫描信号 KeyInit(); //键盘初始化 Uart0Init(); //串口0初始化 #ifdef DEBUG0 for(i=0;i<16;i++) //显示头信息 { Prints(HeadTable[i]); } #endif UsbChipInit(); //初始化USB部分 while(1) { InterruptSource=(*AT91C_UDP_ISR)&(0x0F|(1<<8)|(1<<12)); //取出需要的中断 if(InterruptSource) //如果监视的中断发生 { if(InterruptSource&(1<<8)) { *AT91C_UDP_ICR=1<<8; //清除中断 UsbBusSuspend(); //总线挂起中断处理 } if(InterruptSource&(1<<12)) { *AT91C_UDP_ICR=1<<12; //清除中断 UsbBusReset(); //总线复位中断处理 } if(InterruptSource&(1<<0)) { if(AT91C_UDP_CSR[0]&((1<<1)|(1<<2)|(1<<6))) //如果是SETUP包、缓冲未空等 { UsbEp0Out(); //端点0输出中断处理 } if(AT91C_UDP_CSR[0]&(1<<0)) //如果是端点0输入完成 { UsbEp0In(); //端点0输入中断处理 } } if(InterruptSource&(1<<1)) { UsbEp1In(); //端点1输入中断处理 } if(InterruptSource&(1<<2)) { UsbEp2Out(); //端点2输出中断处理 } if(InterruptSource&(1<<3)) { UsbEp3In(); //端点3输入中断处理 } } if(KeyUp||KeyDown) //如果用户操作了按键 { DispKey(); //在LCD上显示按键情况 if(ConfigValue!=0) //如果已经设置为非0的配置,则可以返回报告数据 { if(!Ep1InIsBusy) //如果端点1输入没有处于忙状态,则可以发送数据 { KeyCanChange=0; //禁止按键扫描 if(KeyUp||KeyDown) //如果有按键事件发生 { SendReport(); //则返回报告 } KeyCanChange=1; //允许按键扫描 } } //清除KeyUp和KeyDown KeyUp=0; KeyDown=0; LcdRefresh(); //刷新LCD显示 } } }