历史上的今天
返回首页

历史上的今天

今天是: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)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uzJrqTjF-1593358229845)(/image/勾选串口.png?imageView2/2/w/550)]

  • 序号一,代表串口处于异步模式

  • 序号二,关闭串口的硬件流控的功能

  • 序号三,波特率设置,一般是根据通信的芯片进行选择,这里选择是115200 bps

  • 序号四,代表字长,这里选择 8 bit

  • 序号五,代表校验方式,这里选择无

  • 序号六,代表停止位,这里选择 1 bit

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

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

三. 生成的代码

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vcDxcXkm-1593358229846)(/image/串口实例.png?imageView2/2/w/550)]

  • 序号一,是串口的一个实例

  • 序号二,就是对我们的选择的串口进行配置以及初始化,初始化内容就是我们第二部分所说

四. 串口相关库函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qkmS93o7-1593358229850)(/image/串口收发函数阻塞模式.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)]

运行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8rIovDQ0-1593358229859)(/image/测试串口.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 之间的代码


-----------------------------------------------结束--------------------------------------------------------


推荐阅读

史海拾趣

EMBEST公司的发展小趣事

XXXX年,ARM公司投资了EMBEST,双方建立了紧密的战略合作关系。这一合作不仅为EMBEST带来了更多的技术支持和资源,也进一步巩固了其在ARM开发工具领域的领先地位。通过与ARM的紧密合作,EMBEST不断推出创新产品,满足市场的多样化需求。

CTC [Compact Technology Corp.]公司的发展小趣事

CTC公司在创立初期便致力于半导体技术的研发。一次偶然的实验中,公司团队成功研发出了一种新型的晶体管结构,这一创新使得晶体管的工作效率大大提升,同时降低了能耗。这一技术突破迅速引起了行业的关注,CTC公司的名字开始在电子行业中崭露头角。随着该技术的普及和应用,CTC公司的业务逐渐扩大,奠定了在电子行业的重要地位。

Heatron公司的发展小趣事

随着全球对环保和节能问题的日益关注,Heatron公司积极响应号召,致力于研发和生产环保节能的电加热产品。公司投入大量资源于新材料、新技术的研发中,成功推出了一系列低能耗、高效率的加热器产品。这些产品不仅满足了市场对环保节能的需求,还进一步巩固了Heatron在电子行业中的领先地位。

BNS Solutions公司的发展小趣事

随着电子行业的不断发展,新技术和新应用层出不穷。BNS Solutions公司紧跟时代步伐,不断加大研发投入,推动技术创新。公司团队不断探索新技术、新材料的应用,开发出了一系列具有创新性和前瞻性的电子产品。这些产品不仅提高了行业的整体技术水平,还引领了行业变革的潮流。通过持续创新,BNS Solutions公司在电子行业中保持了领先地位,成为了行业的佼佼者。

EM Microelectronic-Marin SA公司的发展小趣事

1995年,Philips Semiconductors收购了Mikron Graz,这一事件标志着EM Microelectronic-Marin与Philips在半导体领域的深度合作。此后,两家公司共同推动了RFID(射频识别)技术的发展,使其逐渐成为电子行业中不可或缺的一部分。EM Microelectronic-Marin凭借其在低功耗技术方面的优势,为RFID技术提供了强有力的支持。

胜利(VICTOR)公司的发展小趣事

随着产品的不断升级和市场的扩大,胜利公司开始将目光投向国际市场。1980年代,VICTOR品牌成功进入欧美市场,凭借优质的产品和合理的价格,迅速赢得了消费者的认可。公司还积极参加国际赛事,通过赞助等方式提升品牌知名度。

问答坊 | AI 解惑

3年以上工作经验的工程师的中长期规划

中长期规划---螺旋式上升方式修改完善职业之路 一、中长期职业发展的自我准备 1、心态上随时做好准备 机会是给有准备的人的------“有准备”是你在做准备的过程中让“别人”认为你“有准备”!别人是包括你现在的老板和别的老板,以及你身边的人 ...…

查看全部问答>

电磁通论(上下) PDF

麦克斯韦的《电磁通论》是一本可以和《几何原本》,《自然哲学的数学原理》相提并论的一本电磁领域的巨著。 额,因为我还没怎么看——绪言部分,逼着我回头去看 多元微分学,现在还没看到实质。 另外这本书的地位和历史意义人所尽知,所以也就不 ...…

查看全部问答>

有人做过第三方的TSP吗

关于WINCE的无线通信部分,wince里提供一个Celltsp的组件,TAPI函数调用也是通过Celldll产生作用的,但CellTsp不是开源的,只提供了celltsp.dll与celltsp.lib 在调试过程中发现,拨打普通语音电话可以通过这种方式,但是如果想通过TAPI下传特殊AT ...…

查看全部问答>

FPGA综合仿真错误

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 以上是出现的错误,请看 ...…

查看全部问答>

altium designer 09下下来的库文件怎么用?

最近在学此软件,下下来的库文件不知道怎么添加到软件的库里。高手帮帮忙…

查看全部问答>

用STM32是否能实现:输出一组频率占空比50%,100~150KHZ

                                 大家好,用STM32是否能实现:输出一组频率占空比50%,100~150KHZ,可调步进精确到1Hz,就是最小可以1HZ的变化.…

查看全部问答>

我汉化了全部的24篇STM32F的2.02固件库

本文适用于那些不愿意看英文资料的stm32f初学者,由于本人的英文水平有限而且也是stm32f的初学者,大多数地方保留了中英文对照,有不对的地方欢迎指正。我也希望获得您的支持鼓励我继续翻译其他功能的固件库,同时也欢迎朋友们的加入和我一起 ...…

查看全部问答>

请教4270差分信号输入问题

请教高手: 我用1mA得恒流源通过PT100,用4270来检测差分电压信号.问题有2个: 1.F4270要求差分信号是0-1.2V,这个范围是指A0+<1.2,还是A0+ 与A0-的压差小于1.2V? 2. 是否需要加入差分放大器来进行阻抗匹配? 因为4270内部有放大器,是否可以不用再 ...…

查看全部问答>

请问quartus的原件库不同版本的能通用吗?

求助我在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 ...…

查看全部问答>

有没有推荐的altera开发板

rt,有没有推荐的altera开发板。价格合理的,外设比较丰富的就行,不需要特别复杂的。本人就是一个初学者,希望达人给推荐个淘宝店,或者,有闲置的也可以交易,非常感谢,在线等。…

查看全部问答>