前言
本文记录下我学习STM32CubeMX时的流程,系统板是基于STM32F103C6T6,方便以后回忆。本章记录串口通信。这里居然有玄学问题,给我整了好久,头都大了。可能也是我能力有限才有的吧,泪目。
目录
- 串口通信
串口通信
- STM32CubeMX中的串口配置,配置完后就可以生成了。
2. Keil5中打开生成的工程文件。写下发送函数,发送测试。
uint8\_t send_str1[] = "hello world\r\n"; //这个在开头定义,所以说截图中没看到。
//&huart1 为串口1 , send\_str1 为要发送的数据 , sizeof(send\_str1) 为要发送的数据的长度 , 1000 为设置超时时间
HAL\_UART\_Transmit(&huart1,send_str1,sizeof(send_str1),1000); //堵塞模式发送,超时时间1000ms
//关于&huart1这个名称,在串口端口初始化函数原型上已有它的名称结构在声明了,所以说要是换串口后,不知道名称,也可以跳转去看。
stm32f1xx_hal_uart.h文件中,串口操作相关函数。在725行位置处。
* 堵塞模式,传输函数将会阻塞,一直等待缓冲区可用时再传输数据,如果超过了超时时间,缓冲区在一定时间内无法发送数据时,传输函数将会超时退出。
* 非堵塞模式,则与上述相反,没有超时时间的概念,有数据就收发,不存在数据传输等待。
//堵塞模式发送
HAL_StatusTypeDef HAL\_UART\_Transmit(UART_HandleTypeDef \*huart, uint8\_t \*pData, uint16\_t Size, uint32\_t Timeout);
//堵塞模式接收
HAL_StatusTypeDef HAL\_UART\_Receive(UART_HandleTypeDef \*huart, uint8\_t \*pData, uint16\_t Size, uint32\_t Timeout);
//非堵塞模式发送
HAL_StatusTypeDef HAL\_UART\_Transmit\_IT(UART_HandleTypeDef \*huart, uint8\_t \*pData, uint16\_t Size);
//非堵塞模式接收
HAL_StatusTypeDef HAL\_UART\_Receive\_IT(UART_HandleTypeDef \*huart, uint8\_t \*pData, uint16\_t Size);
- 接收测试
接收测试的思路本来是想在接受完后,用发送函数发给串口调试助手。
1. 测试方法一,在主函数中加入下述代码。现象,接收函数一直响应,不管有无数据。而且就算有数据它也会一直重复响应那一串数据,我想可能是中断标志或者数据缓冲区没清除干净,但是试了各种方法后到不行,挺奇怪的。
if(HAL\_UART\_Receive(&huart1,rece_str1,16,100))
{
HAL\_UART\_Transmit(&huart1,rece_str1,sizeof(send_str1),1);
//memset(send\_str1, 0, sizeof(send\_str1));
}
2. 测试方法二,在主函数中加入下述代码。现象,莫名的卡顿感,怎么个卡顿呢,就是在必须要在规定的超时时间内收到规定长度的字节长度否正就丢弃(这是我后来才发现的,具体测试三说),把接收时间缩短或者换非堵塞模式又收不到。虽然说总感觉是接收函数出了问题,但是还是没头绪。
```
if(RESET != \_\_HAL\_UART\_GET\_FLAG(&huart1, UART_FLAG_IDLE)) //判断是否是空闲中断
{
HAL\_UART\_Receive(&huart1,rece_str1,16,2000);
HAL\_UART\_Transmit(&huart1,rece_str1,sizeof(send_str1),2000);
memset(rece_str1,0,16); //清空缓冲区
\_\_HAL\_UART\_CLEAR\_IDLEFLAG(&huart1); //清除空闲中断标志(否则会一直不断进入中断)
}
```
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!
s://bbs.csdn.net/topics/618654289)
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!