历史上的今天
今天是:2025年02月23日(星期日)
2021年02月23日 | STM32CubeMX之串口的使用 (阻塞模式)
2021-02-23 来源:eefocus
环境:
开发板:STM32F4探索者(正点原子)
STM32CubMX工程创建(点亮LED)二. 串口选择
查看 STM32F4探索者 开发板的原理图,如下图所示,我们可以看到USB转串口是在USART1
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MMWNiXVO-1593358229839)(/image/串口原理图.png?imageView2/2/w/550)]](https://8.eewimg.cn/news/uploadfile/2021/0223/20210223093851262.png?imageView2/2/w/550)
因此我们在 STM32CubeMX 中如下图进行勾选,并进行配置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uzJrqTjF-1593358229845)(/image/勾选串口.png?imageView2/2/w/550)]](https://8.eewimg.cn/news/uploadfile/2021/0223/20210223093851530.png?imageView2/2/w/550)
序号一,代表串口处于异步模式
序号二,关闭串口的硬件流控的功能
序号三,波特率设置,一般是根据通信的芯片进行选择,这里选择是115200 bps
序号四,代表字长,这里选择 8 bit
序号五,代表校验方式,这里选择无
序号六,代表停止位,这里选择 1 bit
这里的配置一般与之通信的芯片相对应,当你通信不起来的时候,一般要注意查一下这里
之后就可以点击代码生成了
三. 生成的代码
我们可以在 usart.c 中,找到我们生成的代码
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vcDxcXkm-1593358229846)(/image/串口实例.png?imageView2/2/w/550)]](https://8.eewimg.cn/news/uploadfile/2021/0223/20210223093851186.png?imageView2/2/w/550)
序号一,是串口的一个实例
序号二,就是对我们的选择的串口进行配置以及初始化,初始化内容就是我们第二部分所说
四. 串口相关库函数
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qkmS93o7-1593358229850)(/image/串口收发函数阻塞模式.png?imageView2/2/w/550)]](https://8.eewimg.cn/news/uploadfile/2021/0223/20210223093852804.png?imageView2/2/w/550)
在 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之内没有接收到数据,就打印接收超时
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0VdS29K3-1593358229857)(/image/测试代码.png?imageView2/2/w/550)]](https://8.eewimg.cn/news/uploadfile/2021/0223/20210223093852136.png?imageView2/2/w/550)
运行结果
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8rIovDQ0-1593358229859)(/image/测试串口.png?imageView2/2/w/550)]](https://8.eewimg.cn/news/uploadfile/2021/0223/20210223093852964.png?imageView2/2/w/550)
从上图,我们可以看到接收函数,只有接收够且只有10个字节,才会返回成功,否则都是接收超时
注意 :
首先我们要把代码放在 main 函数中,并且,按照 STM32CubeMX 的规则,要把用户增加的代码放置在 BEGIN 和 END 之间,如上图中的
/* USER CODE BEGIN WHILE */
//用户代码
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
//用户代码
/* USER CODE END 3 */
否则,再次使用 STM32CubeMX 生成代码时,会丢失不在BEGIN 和 END 之间的代码
-----------------------------------------------结束--------------------------------------------------------
下一篇:STM32F4之什么是SPI?
史海拾趣
|
中长期规划---螺旋式上升方式修改完善职业之路 一、中长期职业发展的自我准备 1、心态上随时做好准备 机会是给有准备的人的------“有准备”是你在做准备的过程中让“别人”认为你“有准备”!别人是包括你现在的老板和别的老板,以及你身边的人 ...… 查看全部问答> |
|
麦克斯韦的《电磁通论》是一本可以和《几何原本》,《自然哲学的数学原理》相提并论的一本电磁领域的巨著。 额,因为我还没怎么看——绪言部分,逼着我回头去看 多元微分学,现在还没看到实质。 另外这本书的地位和历史意义人所尽知,所以也就不 ...… 查看全部问答> |
|
关于WINCE的无线通信部分,wince里提供一个Celltsp的组件,TAPI函数调用也是通过Celldll产生作用的,但CellTsp不是开源的,只提供了celltsp.dll与celltsp.lib 在调试过程中发现,拨打普通语音电话可以通过这种方式,但是如果想通过TAPI下传特殊AT ...… 查看全部问答> |
|
Error: Design requires 1087 I/O resources -- too many to fit in 314 available in the selected device or any device in the device family Error: Cannot find device that meets Compiler settings specifications 以上是出现的错误,请看 ...… 查看全部问答> |
|
用STM32是否能实现:输出一组频率占空比50%,100~150KHZ 大家好,用STM32是否能实现:输出一组频率占空比50%,100~150KHZ,可调步进精确到1Hz,就是最小可以1HZ的变化.… 查看全部问答> |
|
本文适用于那些不愿意看英文资料的stm32f初学者,由于本人的英文水平有限而且也是stm32f的初学者,大多数地方保留了中英文对照,有不对的地方欢迎指正。我也希望获得您的支持鼓励我继续翻译其他功能的固件库,同时也欢迎朋友们的加入和我一起 ...… 查看全部问答> |
|
请教高手: 我用1mA得恒流源通过PT100,用4270来检测差分电压信号.问题有2个: 1.F4270要求差分信号是0-1.2V,这个范围是指A0+<1.2,还是A0+ 与A0-的压差小于1.2V? 2. 是否需要加入差分放大器来进行阻抗匹配? 因为4270内部有放大器,是否可以不用再 ...… 查看全部问答> |
|
求助我在http://www.huanor.com/bbs/showthread.php?t=4557下载的quartus10.1 Quartus 10.1 sp1 下载地址:Quartus 10.1 sp1 Windows版下载:10.1sp1_quartus_windows.exe 760MB10.1sp1_quartus_windows_full.exe 1.3GB10.1sp1_devices_wind ...… 查看全部问答> |
|
rt,有没有推荐的altera开发板。价格合理的,外设比较丰富的就行,不需要特别复杂的。本人就是一个初学者,希望达人给推荐个淘宝店,或者,有闲置的也可以交易,非常感谢,在线等。… 查看全部问答> |




