基于STM32G431RBT6在USART中的应用,实现任意字符串输出输出

文章详细介绍了如何使用CUBEMX配置STM32的串口通讯,从使用HAL_UART_Transmit函数的查询方式发送数据到改用中断发送,解决了超时问题。接着,作者改造了接收函数,使其能接收任意长度的字符串,通过空闲中断来确定字符串长度,提高了效率。

目录

CUBEMX配置

2.打开工程

用电脑给板子发数据

3.找到串口的库函数hal_uart.c

先试一下以查询的方式发送数据,即:HAL_UART_Transmit函数

这个函数的弊端为:发送的字符串,需要计算长度发送的时间要小于超时时间。

4.用带中断的发送函数,就不用考虑超时时间

5.接下来看看如何从电脑把数据发送给单片机

所以用中断的方式,只需要直到电脑输入的字符串长度,但是也有弊端

所以自己动手改造函数。

改造第一步:不要size,两行注释掉可以了

Step2:USART_CR1_IDLEIE并到else的里面去

Step3:改造中断

修改这一部分

空闲状态IDLE放进去

6.改造,在看到这个函数

6.修改完成

最后调用接收callback

这样就实现了不限长度的发送接收


  1. CUBEMX配置

sys,rcc外部高速时钟,串口通讯的USART1,找到手册发现其是PA9,PA10与其串口链接调试,则

 

再设置为异步

 

勾选NVIC中断,代码就会生成中断入口函数,其他不用配置

 

然后配置时钟树,24,170

2.打开工程

 

打开串口调试助手,测试一下

用电脑给板子发数据

3.找到串口的库函数hal_uart.c

先试一下以查询的方式发送数据,即:HAL_UART_Transmit函数

解读一下分别为:

 句柄,USART1,发送数据的数组的指针,size是发送数据的数量,timeout为超时时间

 

在while中写入发送函数,其中的数组要在外面定义一下,超时时间单位是ms

 

为了不让板子发送的太快,这里设置一个间隔

 

下载板子后就可以了

 

这个函数的弊端为:发送的字符串,需要计算长度发送的时间要小于超时时间。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值