/********** INIT *************************************************************/ void init_rctx( void ) { hw_init(); sys_time_init(); #ifdef LED led_init(); #endif #ifdef USE_UART1 Uart1Init(); #endif #ifdef ADC adc_init(); adc_buf_channel(ADC_CHANNEL_VSUPPLY, &vsupply_adc_buf, DEFAULT_AV_NB_SAMPLE); #endif #ifdef RADIO_CONTROL ppm_init(); #endif int_enable(); /** - wait 0.5s (for modem init ?) */ uint8_t init_cpt = 30; while (init_cpt) { if (sys_time_periodic()) init_cpt--; } #if defined DATALINK #if DATALINK == XBEE xbee_init(); #endif #endif /* DATALINK */ }
/** * Initializes all PIC functionality beyond the clock. * * Maps all ECAN/UART pins * * Assigns pins as input/output * * Initializes the UART */ void Init(void) { // And configure the Peripheral Pin Select pins: PPSUnLock; #ifdef __dsPIC33FJ128MC802__ // To enable ECAN1 pins: TX on 7, RX on 4 PPSOutput(OUT_FN_PPS_C1TX, OUT_PIN_PPS_RP7); PPSInput(IN_FN_PPS_C1RX, IN_PIN_PPS_RP4); // To enable UART1 pins: TX on B11/P11, RX on B13/P13 PPSOutput(OUT_FN_PPS_U1TX, OUT_PIN_PPS_RP11); PPSInput(IN_FN_PPS_U1RX, IN_PIN_PPS_RP13); #elif __dsPIC33EP256MC502__ // To enable ECAN1 pins: TX on 39, RX on 36 PPSOutput(OUT_FN_PPS_C1TX, OUT_PIN_PPS_RP39); PPSInput(IN_FN_PPS_C1RX, IN_PIN_PPS_RP36); // To enable UART1 pins: TX on B11/P43, RX on B13/P45 PPSOutput(OUT_FN_PPS_U1TX, OUT_PIN_PPS_RP43); PPSInput(IN_FN_PPS_U1RX, IN_PIN_PPS_RPI45); #else #error Invalid processor selected. #endif PPSLock; // Initialize status LEDs for use. // A3 (output): Red LED, off by default. _TRISA3 = 0; _LATA3 = 0; // A4 (output): Amber LED, on by default. _TRISA4 = 0; _LATA4 = 1; _TRISB7 = 0; // Set ECAN1_TX pin to an output _TRISB4 = 1; // Set ECAN1_RX pin to an input; _TRISB11 = 0; // Set UART1_TX pin to an output _TRISB13 = 1; // Set UART1_RX pin to an input; // Set up UART1 for 57600 baud. There's no round() on the dsPICs, so we implement our own. double brg = (double) F_OSC / 2.0 / 16.0 / UART_BAUD - 1.0; if (brg - floor(brg) >= 0.5) { brg = ceil(brg); } else { brg = floor(brg); } Uart1Init((uint16_t)brg); // Initialize the Canaconda interface library callback functions commandFunction[COMMAND_FUNCTION_INDEX_OPEN] = CommandOpen; commandFunction[COMMAND_FUNCTION_INDEX_CLOSE] = CommandClose; commandFunction[COMMAND_FUNCTION_INDEX_SETUP] = CommandSetup; commandFunction[COMMAND_FUNCTION_INDEX_TRANSMIT] = CommandTransmit; }
/*************************************************************** ** 作 者: Songyimiao ** 官 网:http://www.miaowlabs.com ** 淘 宝:http://miaowlabs.taobao.com ** 日 期: 2015年11月29日 ** 函数名称: DriversInit ** 功能描述: 底层驱动初始化 ** 输 入: ** 输 出: ** 备 注: ********************喵呜实验室版权所有************************** ***************************************************************/ void DriversInit(void) { GPIOInit(); Timer1Init(); PWMInit(); Uart1Init(); Uart2Init(); Timer3Timer4Init(); }
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; } } } }
int main ( void ) { //uint8_t static active= 0; //uint8_t static ledstat; SystemInit();//系统时钟等初始化 if(SysTick_Config(72000*1)) //配置错误返回1,max 16777216 默认72Mhz 时钟 ,1ms延时 { //LED4_ON; //错误处理 while(1); } LED_Init(); //LED端口初始化 LED2_ON; NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级 Uart1Init ( 115200 ); //串口初始化为115200 GSM_RST = 0; //启动GSM模块 delay_ms(1800); USB_Port_Set(0); //USB??? delay_ms(700); USB_Port_Set(1); //USB???? Set_USBClock(); USB_Interrupts_Config(); USB_Init(); Uart2Init ( 115200 ); //串口初始化为115200 Uart3Init ( 115200 );//串口初始化为115200 //Uart1SendStr(STR("uart1 init\r\n")); //Uart2SendStr(STR("uart2 init\r\n")); //Uart3SendStr(STR("uart3 init\r\n")); C_bt_init(); C_bt_module_reset(); C_bt_module_init(); GSM_RST = 1; //启动GSM模块 while(1) { if(C_bt_device_active()) { LED2_ON; if(USB_USART_RX_STA&0x8000){ //delay_ms(100); C_bt_sendBinary((char*)USB_USART_RX_BUF,USB_USART_RX_STA&0x3FFF); USB_USART_RX_STA=0; } } else { LED2_OFF; } if((ms_timer %2) == 0){ C_bt_step(); } //模块初始化 if(C_bt_selftest()){ LED2_OFF; }else{ //LED2_ON; } } }
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 ImuNodeInit(uint32_t f_osc) { // And configure the Peripheral Pin Select pins: PPSUnLock; PPSUnLock; #ifdef __dsPIC33FJ128MC802__ // To enable ECAN1 pins: TX on 7, RX on 4 PPSOutput(OUT_FN_PPS_C1TX, OUT_PIN_PPS_RP7); PPSInput(IN_FN_PPS_C1RX, IN_PIN_PPS_RP4); // To enable UART1 pins: TX on 9, RX on 8 PPSOutput(OUT_FN_PPS_U1TX, OUT_PIN_PPS_RP9); PPSInput(IN_FN_PPS_U1RX, IN_PIN_PPS_RP8); #elif __dsPIC33EP256MC502__ // To enable ECAN1 pins: TX on 39, RX on 36 PPSOutput(OUT_FN_PPS_C1TX, OUT_PIN_PPS_RP39); PPSInput(IN_FN_PPS_C1RX, IN_PIN_PPS_RP36); // To enable UART1 pins: TX on 41, RX on 40 PPSOutput(OUT_FN_PPS_U1TX, OUT_PIN_PPS_RP41); PPSInput(IN_FN_PPS_U1RX, IN_PIN_PPS_RP40); #endif PPSLock; // Also disable analog functionality on B8 so we can use it for UART1 RX. // This only applies to the dsPIC33E family. #ifdef __dsPIC33EP256MC502__ ANSELBbits.ANSB8 = 0; #endif // Initialize status LEDs for use. // A3 (output): Red LED, off by default, and is solid when the system hit a fatal error. _TRISA3 = 0; _LATA3 = 0; // A4 (output): Amber LED, blinks at 1Hz when disconnected from the IMU, 2Hz otherwise. _TRISA4 = 0; _LATA4 = 0; _TRISB7 = 0; // Set ECAN1_TX pin to an output _TRISB4 = 1; // Set ECAN1_RX pin to an input; // Set up UART1 for 115200 baud. There's no round() on the dsPICs, so we implement our own. double brg = (double)f_osc / 2.0 / 16.0 / 115200.0 - 1.0; if (brg - floor(brg) >= 0.5) { brg = ceil(brg); } else { brg = floor(brg); } Uart1Init((uint16_t)brg); // Initialize ECAN1 for input and output using DMA buffers 0 & 2 Ecan1Init(f_osc, NODE_CAN_BAUD); // Set the node ID nodeId = CAN_NODE_IMU_SENSOR; // Set up all of our tasks. // Blink at 1Hz if (!AddMessageRepeating(&taskSchedule, TASK_BLINK, RATE_TRANSMIT_BLINK_DEFAULT)) { FATAL_ERROR(); } // Transmit node status at 2Hz if (!AddMessageRepeating(&taskSchedule, TASK_TRANSMIT_STATUS, RATE_TRANSMIT_NODE_STATUS)) { FATAL_ERROR(); } // Transmit IMU data at 25Hz if (!AddMessageRepeating(&taskSchedule, TASK_TRANSMIT_IMU, RATE_TRANSMIT_IMU_DATA)) { FATAL_ERROR(); } }