/* * 函数名:main * 描述 : 主函数 * 输入 :无 * 输出 : 无 */ int main(void) { /* 配置系统时钟为 72M */ SystemInit(); LED_GPIO_Config(); Nvic_Init(); I2C_GPIO_Config(); Delay(0xFFFF); InitMPU6050(); Delay(0xFFFF); Init_HMC5883L(); Delay(0xFFFF); Tim3_Init(2500); usart1_config(); while(1) { if(sentFlag) { sentFlag = 0; UART1_ReportIMU(); } } }
/** * @brief 使用EMW3081模块和EDP协议向ONENET平台发送一个二进制文件,其中二进制文件为一个图片文件。 **/ int main(void) { //SystemInit(); LED_Init(); //LED指示灯初始化函数 usart1_config(); //USART1串口初始化函数 usart2_config(); //USART2串口初始化函数 Delay(2000); while(1) { LED_Switch(LED_ON,LED_R|LED_G|LED_Y|LED_B); //点亮开发板四个指示灯,表示程序进入主流程 EMW3081_Reboot(); //重启EMW3081模块 printf("%s\r\n","[main]ENTER COITINIT."); SendCmd(CIOTINIT,"+OK",40); //初始化EMW3081在ONENET平台的设备参数 printf("%s\r\n","[main]ENTER COITSTART."); SendCmd(CIOTSTART,"+OK",40); //启动EMW3081向平台发送数据 LED_Switch(LED_OFF,LED_R|LED_G|LED_Y|LED_B); //熄灭开发板四个指示灯,表示程序完成设备连接,进入数据发送循环 while(1) { EMW3081_SendBinDat(); //使用EMW3081向平台发送数据 if((NULL != strstr(usart2_rcv_buf, "+ERR"))) //检测EMW3081发送一个二进制文件过程是否出错 { break; //如果文件发送出错,退出数据发送循环 } } } }
void IAC_Init(void) { delay_init(72); MCO_INIT(); Nvic_Init(); LED_GPIO_Config(); I2C_INIT(); delay(0XFFF); TIM3_Init(2500); usart1_config(); ADC1_Init(); NRF24L01_Init(); Moto_Init(); LED_SHOW(); FLASH_Unlock(); EE_Init(); }
/** * \brief * * \param * * \return void */ void uart_config(void) { const sam_uart_opt_t uart_settings = { .ul_mck = sysclk_get_peripheral_hz(), .ul_baudrate = 19200, .ul_mode = UART_MR_PAR_NO }; sysclk_enable_peripheral_clock(ID_UART); uart_init( BOARD_UART, &uart_settings ); } /** * \brief * * \param * * \return void */ void usart0_config(void) { const sam_usart_opt_t usart_0_settings = { .baudrate = 19200, .char_length = US_MR_CHRL_8_BIT, .parity_type = US_MR_PAR_NO, .stop_bits = US_MR_NBSTOP_1_BIT, .channel_mode = US_MR_CHMODE_NORMAL, /* This field is only used in IrDA mode. */ .irda_filter = 0 }; sysclk_enable_peripheral_clock(BOART_ID_USART0); usart_init_rs232(BOARD_USART0, &usart_0_settings, sysclk_get_peripheral_hz()); /* Disable all the interrupts. */ usart_disable_interrupt(BOARD_USART0, 0xffffffff); /* Enable the receiver and transmitter. */ usart_enable_tx(BOARD_USART0); usart_enable_rx(BOARD_USART0); /* Configure and enable interrupt of USART. */ NVIC_EnableIRQ(USART0_IRQn); usart_enable_interrupt(BOARD_USART0, US_IER_RXRDY); } /** * \brief * * \param * * \return void */ void usart1_config(void) { const sam_usart_opt_t usart_1_settings = { .baudrate = 115200, .char_length = US_MR_CHRL_8_BIT, .parity_type = US_MR_PAR_NO, .stop_bits = US_MR_NBSTOP_1_BIT, .channel_mode = US_MR_CHMODE_NORMAL, /* This field is only used in IrDA mode. */ .irda_filter = 0 }; sysclk_enable_peripheral_clock( BOART_ID_USART1 ); usart_init_rs232( BOARD_USART1, &usart_1_settings, sysclk_get_peripheral_hz() ); /* Disable all the interrupts. */ usart_disable_interrupt(BOARD_USART1, 0xffffffff); /* Enable the receiver and transmitter. */ usart_enable_tx(BOARD_USART1); usart_enable_rx(BOARD_USART1); /* Configure and enable interrupt of USART. */ NVIC_EnableIRQ( USART1_IRQn ); usart_enable_interrupt( BOARD_USART1, US_IER_RXRDY); } /** * \brief * * \param uxPriority * * \return void */ void vStartUartTaskLauncher( unsigned portBASE_TYPE uxPriority ) { /* Spawn the Sentinel task. */ xTaskCreate( vUartTask, (const signed portCHAR *)"SPILAUNCH", TASK_RADIO_STACK_SIZE, NULL, uxPriority, (xTaskHandle *)NULL ); } /** * \brief UART handle task.. * * \param * \param * * \return None */ portTASK_FUNCTION_PROTO( vUartTask, pvParameters ) { uint8_t i, sms_text[] = "AT\r"; (void)pvParameters; /* Initialize UART model.*/ uart_config(); usart0_config(); usart1_config(); gpio_set_pin_low( PIO_PA17_IDX ); for (;;) { vTaskDelay(1000); uart_write( BOARD_UART, '1' ); usart_serial_write_packet( BOARD_USART1, sms_text, sizeof(sms_text) ); } } /** * \brief * * \param * * \return void */ void USART0_Handler(void) { uint32_t ul_status; /* Read USART Status. */ ul_status = usart_get_status( BOARD_USART0 ); /* Receive buffer is full. */ if (ul_status & US_CSR_RXRDY) { usart_read( BOARD_USART0, (uint32_t *)&gs_ul_read_buffer[0] ); } }