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

2024-11-14 08:11 364 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

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

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

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

写的好,学习和参考,很适用
相关推荐阅读
丙丁先生 2025-01-21 12:10
聊聊RISC-V MCU技术
嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的...
丙丁先生 2025-01-12 10:30
Armv8-A到底是什么东西
ARMv8-A是ARM公司为满足新需求而重新设计的一个架构,是近20年来ARM架构变动最大的一次。以下是对ARMv8-A的详细介绍: 1. 背景介绍    ARM公司最初并未涉足...
丙丁先生 2025-01-11 11:35
“回望2024展望2025”专题博文
新年伊始,又到了对去年做总结,对今年做展望的时刻 不知道你在2024年初立的Flag都实现了吗? 2025年对自己又有什么新的期待呢? 2024年注定是不平凡的一年, 一年里我测评...
丙丁先生 2025-01-10 08:44
定时器周期性调度任务
定时器周期性调度任务是一种在计算机操作系统中常用的技术,它通过定时器中断触发任务切换,以实现多任务的并行处理。以下是对定时器周期性调度任务的详细分析: 1. 基本概述   定义:...
我要评论
1
3
关闭 站长推荐上一条 /3 下一条