热度 4
2024-11-14 08:11
245 次阅读|
1 个评论
以下是一个完整的示例代码片段,展示了如何配置USART3并启用接收功能: #include "usart.h" #include "gpio.h" #include "interrupt.h" int main(void) { // USART3 初始化 ustart(USART3, CRM_USART3_PERIPH_CLOCK, TRUE); gpio_init(GPIOB, &GPIOInitStruct); // 假设USART3的TX和RX分别连接到GPIOB的某些引脚 gpio_pin_mux_config(GPIOB, GPIO_PIN_SOURCE11, GPIO_MUX_7); gpio_pin_mux_config(GPIOB, GPIO_PIN_SOURCE10, GPIO_MUX_7); // USART3 参数配置 usart_parameter_struct usart3initstruct; usart3initstruct.usart_baudrate = 9600; usart3initstruct.usart_mode = USART_MODE_Rx | USART_MODE_Tx; usart3initstruct.usart_wordlength = USART_WLEN_8BITS; usart3initstruct.usart_stopbits = USART_STOPBITS_1; usart3initstruct.usart_parity = USART_PARITY_NO; usart3initstruct.usart_hardwareflow = USART_HARDWAREFLOWTH_NONE; usart_init(USART3, &usart3initstruct); // 使能USART3 usart_enable(USART3, ENABLE); // 使能USART3接收中断 uart_interrupt_receive_enable(USART3, ENABLE); uart_interrupt_receive_flag_clear(USART3, RESET); mvic_irq_enable(USART3_IRQn); mpri_config(USART3_IRQn, PRIGROUP_PRIO3, 0); // 主循环 while (1) { // 显示固定文本 LCD_ShowString(0, 0, "Loc:", 0xffff, 0x0000); LCD_ShowString(0, 16, "Lat:", 0xffff, 0x0000); // 检查是否有数据可读 if (SET == usart_flag_get(USART3, USART_RDBF_FLAG)) { uint8_t RxData = usart_data_receive(USART3); UsartSendByte(RxData); // 回显接收到的数据 } } } 请根据上述建议逐一排查问题,并确保所有配置都正确无误。如果问题依然存在,可以尝试逐步简化代码,找出具体的问题所在。