static rt_err_t rt_uart_init (rt_device_t dev) { struct uart_device * uart_dev; uart_dev = (struct uart_device*)dev; UART_QuickInit(BOARD_UART_DEBUG_MAP, BOARD_UART_BAUDRATE); UART_CallbackRxInstall(HW_UART0, UART0_ISR); UART_CallbackRxInstall(HW_UART1, UART1_ISR); UART_CallbackRxInstall(HW_UART2, UART2_ISR); UART_CallbackRxInstall(HW_UART3, UART3_ISR); UART_CallbackRxInstall(HW_UART4, UART4_ISR); UART_ITDMAConfig(uart_dev->hw_instance, kUART_IT_Rx, true); switch(uart_dev->hw_instance) { case 0: uart_dev->hw_isr = UART0_ISR; break; case 1: uart_dev->hw_isr = UART1_ISR; break; case 2: uart_dev->hw_isr = UART2_ISR; break; case 3: uart_dev->hw_isr = UART2_ISR; break; case 4: uart_dev->hw_isr = UART2_ISR; break; } return RT_EOK; }
int main(void) { DelayInit(); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); printf("CHBootloader\r\n"); UART_CallbackRxInstall(HW_UART0, UART_ISR); FLASH_Init(); Boot.name = "MK6xDN1M(512)VLQ12"; Boot.AppStartAddr = 0x5000; Boot.TimeOut = 2000; Boot.FlashPageSize = FLASH_GetSectorSize(); Boot.send = send; Boot.flash_erase = flash_erase; Boot.flash_write = flash_write; BootloaderInit(&Boot); UART_ITDMAConfig(HW_UART0, kUART_IT_Rx, true); while(1) { BootloaderProc(); } }
uint32_t UARTB_Init(int rate) { uint32_t instance; instance = UART_QuickInit(UART4_RX_PE25_TX_PE24, rate); /* 配置UART 中断配置 打开接收中断 安装中断回调函数 */ UART_CallbackRxInstall(HW_UART4, UART_RX_ISR); /* 打开串口接收中断功能 IT 就是中断的意思*/ UART_ITDMAConfig(HW_UART4, kUART_IT_Rx, true); return instance; }
int main(void) { uint32_t i; uint32_t len; DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07, 115200); UART_CallbackRxInstall(HW_UART0, UART_ISR); UART_ITDMAConfig(HW_UART0, kUART_IT_Rx, true); printf("NRF24L01 test\r\n"); /* 初始化 NRF2401模块 的SPI接口及片选 */ PORT_PinMuxConfig(HW_GPIOE, 1, kPinAlt2); PORT_PinMuxConfig(HW_GPIOE, 2, kPinAlt2); PORT_PinMuxConfig(HW_GPIOE, 3, kPinAlt2); PORT_PinMuxConfig(HW_GPIOE, 4, kPinAlt2); /* 初始化2401所需的CE引脚 */ GPIO_QuickInit(HW_GPIOE, 0 , kGPIO_Mode_OPP); /* 初始化2401模块*/ SPI_QuickInit(SPI1_SCK_PE02_SOUT_PE01_SIN_PE03, kSPI_CPOL0_CPHA0, 1*1000*1000); nrf24l01_init(HW_SPI1, 0); //检测是否存在无线设备,并配置接收和发送地址 if(nrf24l01_probe()) { printf("no nrf24l01 device found!\r\n"); } /* 进入Rx模式 */ nrf24l01_set_rx_mode(); while(1) { /* 如果收到串口数据则发送 */ if(gpRevChar != NULL) { nrf24l01_set_tx_mode(); nrf24l01_write_packet(gpRevChar, 1); nrf24l01_set_rx_mode(); gpRevChar = NULL; } /* 如果收到2401 的数据 则传输到串口 */ if(!nrf24l01_read_packet(NRF2401RXBuffer, &len)) { i = 0; while(len--) { UART_WriteByte(HW_UART0, NRF2401RXBuffer[i++]); } } } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PD06_TX_PD07 , 115200); printf("type any character which will echo...\r\n"); /* 配置UART 中断配置 打开接收中断 安装中断回调函数 */ UART_CallbackRxInstall(HW_UART0, UART_RX_ISR); /* 打开串口接收中断功能 IT 就是中断的意思*/ UART_ITDMAConfig(HW_UART0, kUART_IT_Rx, true); while(1) { GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(500); } }
int main(void) { DelayInit(); DelayMs(10); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PB16_TX_PB17 , 115200); printf("ATCMD test\r\n"); UART_CallbackRxInstall(HW_UART0, UART_RX_ISR); UART_ITDMAConfig(HW_UART0, kUART_IT_Rx, true); ATP_Init(ATCMD, ARRAY_SIZE(ATCMD)); while(1) { GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(500); } }
int main(void) { DelayInit(); GPIO_QuickInit(HW_GPIOD, 7, kGPIO_Mode_OPP); GPIO_QuickInit(HW_GPIOE, 6, kGPIO_Mode_OPP); UART_QuickInit(UART0_RX_PA01_TX_PA02, 115200); printf("HelloWorld\r\n"); /* ´ò¿ª´®¿ÚÖÐ¶Ï */ UART_ITDMAConfig(HW_UART0, kUART_IT_Rx, true); UART_CallbackRxInstall(HW_UART0, UART_ISR); while(1) { GPIO_ToggleBit(HW_GPIOD, 7); GPIO_ToggleBit(HW_GPIOE, 6); DelayMs(50); } }