蓝桥杯嵌入式学习笔记----基于STM32G431RB---串口收发数据

一,配置

首先基于cubemax进行i/o口,串口初始化,中断初始化的相关配置。

从赛点资料包中的产品手册里面的原理图可以找到,PA9和PA10两个引脚分别连接串口的TX和RX

所以要对这两个引脚的模式进行配置

1)将其配置成串口模式,并将其配置为开漏输出,其余参量不变。

 

2)对串口模式参数进行相关配置,模式选择成奇偶校验,再进行波特率的配置,其余参数默认即可。

 3)对串口中断和滴答定时器中断的优先级进行配置

 4)将生成的代码移植到自己所建立的工程文件中

二,发送数据

1,串口配置函数

 2,硬件层的i/o配置函数

3,发送数据函数

 基于滴答定时器每500ms发送一次数据,注意HAL_UART_Transmit函数的入口参数,第一个参数代表使用的是串口一,第二个是发送的内容,第三个是发送的字节大小,最后一个是速率。

    int counter = 0;
    char str[40];

三,数据接收

1,将配置好的中断函数cv到it.c文件中

 

 2在while前调用底层的接收函数

     HAL_UART_Receive_IT(&huart1, &rx_buffer, 1);

别忘了定义存储数据的变量,unsigned char rx_buffer;

3,定义接收函数

 这里要特别注意串口中断和滴答定时器的抢占中断优先级问题,要不会进不去延时。要特别注意这个回调函数才是真正写中断执行程序的地方。

要是程序一直报错大概率是配置的问题,可以去hal_config.h文件中UART是否被注释了。

#define  TICK_INT_PRIORITY           (0)  这个文件中这个语句可以对滴答定时器的抢占优先级进行配置

猜你喜欢

转载自blog.csdn.net/qq_59320783/article/details/128512939