javarxtx串口接收时数据会多段打印_STM32CubeMX之串口的使用 (查询模式)

环境:

  • 开发板:STM32F4探索者(正点原子)

一. 进行项目的必要配置

  • 时钟配置
  • 调试配置

如果不大清楚可以看,以下文章

清寻:创建STM32CubeMX工程(让LED灯闪烁)​zhuanlan.zhihu.com

二. 串口选择

​ 查看 STM32F4探索者 开发板的原理图,如下图所示,我们可以看到USB转串口是在USART1

091eaf38d3393c53f65174b595d59a73.png

因此我们在 STM32CubeMX 中如下图进行勾选,并进行配置

4258a9bc667e7307e16d5d1765d82150.png
  • 序号一,代表串口处于异步模式
  • 序号二,关闭串口的硬件流控的功能
  • 序号三,波特率设置,一般是根据通信的芯片进行选择,这里选择是115200 bps
  • 序号四,代表字长,这里选择 8 bit
  • 序号五,代表校验方式,这里选择无
  • 序号六,代表停止位,这里选择 1 bit

这里的配置一般与之通信的芯片相对应,当你通信不起来的时候,一般要注意查一下这里

之后就可以点击代码生成了

三. 生成的代码

我们可以在 usart.c 中,找到我们生成的代码

6cdc0ce7fccdd9454badece628f298b8.png
  • 序号一,是串口的一个实例
  • 序号二,就是对我们的选择的串口进行配置以及初始化,初始化内容就是我们第二部分所说

四. 串口相关库函数

d683d459ea6e25f8676e0d85d5d5b45c.png

functions 可以找到使用串口的相关函数,接收和发送函数

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
  • 第一个参数,串口实例,如 huart1
  • 第二个参数,发送的数据
  • 第三个参数,发送的数据的大小
  • 第四个参数,超时时间
HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
  • 第一个参数,串口实例,如 huart1
  • 第二个参数,接收的数据的缓存块(数组)
  • 第三个参数,接收 N 个字节的数据
  • 第四个参数,超时时间,如果没有接收 N 个字节,就是超时

五. 串口测试

主函数 中进行如下添加:

功能为

  • 发送 hello usart1rn ,之后接收10个字节数据,若接收到10个字节数据,就发送接收到的数据,若在5000ms之内没有接收到数据,就打印接收超时

ddf4ac8d497216a29e2a5f0ad0ad956c.png
  1. 运行结果

e853c8f326e0e7b5bef4b009a96f2973.png

从上图,我们可以看到接收函数,只有接收够且只有10个字节,才会返回成功,否则都是接收超时

注意

​ 首先我们要把代码放在 main 函数中,并且,按照 STM32CubeMX 的规则,要把用户增加的代码放置在 BEGINEND 之间,如上图中的

/* USER CODE BEGIN WHILE */
//用户代码
 /* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
//用户代码
/* USER CODE END 3 */

​ 否则,再次使用 STM32CubeMX 生成代码时,会丢失不在BEGINEND 之间的代码

后续我还会继续分享STM32CubeMX的相关操作,以及对库函数源码进行剖析,相信你会学到更多知识,我会在[ STM32CubeMX专栏 ]持续更新,来关注本专栏吧!

文章有帮助到你,点赞,收藏,关注我吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值