文章目录
- 前言
- 一、板子串口原理图
- 2.cubeMx配置
- 3.波特率的简单讲解
- 4.代码编写
- 一、发送数据函数
- 二、开启接收中断函数
- 三、中断回调函数
- 四、具体使用
- 总结
前言
本篇文章将带大家了解串口的编程,串口在比赛当中和实际工程中都是非常重要的,串口的难度也比较大一点,希望大家可以好好理解。
一、板子串口原理图
串口一共有两个引脚
PA9—串口发送引脚(TX)
PA10—串口接收引脚(RX)
2.cubeMx配置
1.按照原理图配置引脚
2.开启串口中断和波特率设置
这里模式选择异步通信
波特率选择115200即可,波特率越大串口发送数据越快。
3.波特率的简单讲解
波特率主要就是影响数据的发送速率。一般串口发送数据都是8个数据位,一个开始位,一个停止位。
波特率的单位是bps,比如115200bps,就是说明一秒能够发送115200位数据。
发送一共字节一共需要10位8个数据位,一个开始位,一个停止位。
所以使用115200的波特率一秒能够发送 115200/10=11520字节。
4.代码编写
一、发送数据函数
函数参数解析
HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout);
huart://使用哪个串口
pData://发送的数据
Size://发送数据字节大小
Timeout://超时时间
相信大家对于上面的参数都能理解,可能对于Timeout的理解有点模糊。
Timeout:代表超时时间,什么叫超时时间呢?
举个简单的例子:当有其他的函数影响到了HAL_UART_Transmit发送数据时,这个函数会在这里等待一段时间,时间到了返回错误,跳过这个函数的执行。
二、开启接收中断函数
每接收一次数据都需要重新调用该函数开启接收中断。
HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
huart://使用哪个串口
pData://接收的数据
Size://接收数据大小
三、中断回调函数
当发生中断时会调用到该函数。
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
}
四、具体使用
uint8_t uart_buf[2];
HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart_buf, 1);
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart_buf, 1);
}
HAL_UART_Transmit(&huart1, (uint8_t*)"hi\r\n", sizeof("hi\r\n") - 1, 50);
总结
串口中断是非常重要的一部分,大家下去多实验,使用HAL_UART_Transmit来发送数据会感觉很不方便,大家可以看我前面的文章:串口重定向