原创 配置USART3并启用接收功能完整的示例代码片段

2024-11-14 08:11 236 3 4 分类: 物联网 文集: 博客

以下是一个完整的示例代码片段,展示了如何配置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); // 回显接收到的数据
        }
    }
}


请根据上述建议逐一排查问题,并确保所有配置都正确无误。如果问题依然存在,可以尝试逐步简化代码,找出具体的问题所在。 

作者: 丙丁先生, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3996156.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论1条评论)

登录后参与讨论

开发工匠 2024-11-16 20:04

写的好,学习和参考,很适用
相关推荐阅读
丙丁先生 2024-12-01 17:37
RDDI-DAP错误
RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST...
丙丁先生 2024-11-26 15:03
【东软载波 ES32VF2264 开发板】Arduino
ES32VF2264LT是一款基于RISC-V架构的高性能、低功耗微控制器,具有丰富的外设接口和灵活的应用能力。在Arduino平台上,它可以通过ESP-IDF或Arduino IDE进行编程,适用于...
丙丁先生 2024-11-25 21:28
【东软载波 ES32VF2264 开发板】例程修改
#include "ald_gpio.h" // 定义 GPIO 端口地址为指针类型 #define ALD_GPIO_PORT_A ((GPIO_TypeDef *)0x40021000) // ...
丙丁先生 2024-11-25 18:49
CE接反却能正常工作
CE接反却能正常工作,可能是因为电路设计具有一定的容错性或者实际使用中的电气特性与理论分析存在差异。以下是一些可能的原因: 1. 三极管类型与工作状态:虽然S8550是PNP型三极管,但在某些特定条...
丙丁先生 2024-11-25 18:47
CDK如何生成.hex
CDK(Continuous Delivery Kit)是一个开源的持续交付工具,它用于自动化构建、测试和部署软件。CDK本身并不直接生成.hex文件,但可以通过配置和使用一些工具来间接实现这一目标。...
丙丁先生 2024-11-25 18:44
将CDK项目迁移到Keil中
将CDK项目迁移到Keil中,需要遵循以下步骤: 1. 导出源代:     首先,确保你已经从CDK项目中导出了所有的源代码文件。这些文件通常包括`.c`、`.h`和可能的配置文件...
我要评论
1
3
关闭 站长推荐上一条 /2 下一条