你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

NUCLEO-C031C6开发板测试4——串口通讯测试

[复制链接]
老牛洋车 发布时间:2025-3-21 16:33

STM32C031C6开发板带有串口通讯的功能,可以通过板载的ST_LINK与电脑进行通讯,不需要另接USBtoTTL转换板。其基本的系统就包含了一个用户LED、一个用户按键和配置了UART2的串口通讯,通过CubeMX生成代码后就可以直接使用printf函数来向电脑发送数据。下面是CubeMX的默认设置截图:

UART_0.png

按照默认的设置,可以直接使用重定向函数printf来发送数据到电脑串口助手:

UART_1.png

串口接收的实验准备启用中断接收的功能,但我找不到如何设置,最后还是禁用了默认的串口设置,手动设置了uart2才获得了成功:

UART_2.png

然后再主程序中启用指定长度的中断接收功能,代码如下:

__HAL_UART_ENABLE_IT(&huart2,UART_IT_IDLE); //打开串口空闲中断

HAL_UART_Receive_IT(&huart2,RxBuff,64); //启用UART2接收中断

但这样接收不定长的数据却出现了问题,每次接收到的数据依次排在字符串的后面,如下图:

UART2_05.png

一定要接收满指定的长度之后才回到字符串首。

最后我改用单个字符中断的方式来接收不定长的数据:

__HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE); //打开串口接收中断

HAL_UART_Receive_IT(&huart2,&RxByte,1); //启用UART2接收中断

同时添加了接收中断处理函数:

UART_3.png

然后在主循环中根据变量RxLen的值来判断和处理,RxLen是本次接收到字符的个数,也就是字符串的长度。在处理完之后还需要将其复零:

UART_4.png

这样就可以顺利接收到不定长的字符串了:

UART_5.png

I2C_5.png
UART_0.png
UART_1.png
UART2_04.png
UART2_05.png
UART_2.png
UART_3.png
UART_4.png
收藏 评论2 发布时间:2025-3-21 16:33

举报

2个回答
老牛洋车 回答时间:2025-3-21 16:38:54

晕!编辑一下,中间的文字就全部丢失了,仅剩开头一段文字及照片。

老牛洋车 回答时间:2025-3-21 19:58:15

重新编辑了帖子,首次上传的图片就全留在末尾了。

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版