loser学ARM实操五:基于STM32F103CubeMX实现串口通信(库函数)

  • Post author:
  • Post category:其他



目录


一、前言介绍


1、所用工具:


2、寄存器说明


二、建立STM32Cube工程


三、代码编写


四、示波器观察输出


五、总结


六、参考资料


不知为啥,我的“小白“”成了违规词汇,所以现在就改成loser。

一、前言介绍

在完成了利用STM32CubeMX库函数实现LED灯闪烁之后,接下来我们尝试利用库函数实现STM32F103最小系统板与windows实现建立串口通信,发送“Hello windows”并实现利用keil仿真软件实现输出端口的观察。

1、

所用工具


1、芯片: STM32F103C8T6

2、STM32CubeMx软件

3、IDE: MDK-Keil软件

4、STM32F1xx/STM32F1xxHAL库

5、串口:USART1、PA9、PA10

2、寄存器说明

在进行管脚利用时,我们会发现存在一些管脚具有多种功能,也就是这里的重映像,这里给出3个USART在相应管脚的重映像。

具体的可以参照STM32F103中文教程及参考手册.pdf  ——5.3.6 USART复用功能重映射

这里是USART寄存器的框图,从中我们可以看到具有读写功能,因此,我们接下来就需要用到该寄存器。

下面列出与串口通信相关的寄存器


状态寄存器



波特比率寄存器


控制寄存器(这里给出一个)


详情请参照

二、建立STM32Cube工程

因为之前已经已经给出过如何配置芯片文件,这里就不再说明,直接给出构建工程的具体内容。

选择好芯片后,首先进行USART管脚选择:(此时管脚显示为黄色,先不用管,后面会给出具体配置)

点击芯片,右下角输入USART寄存器,可以发现此时芯片相应管脚闪烁,根据之前所给的管脚重映射选择PA9和PA10管脚,注:PA9选择USART1_TX;PA10选择USART1_RX。


点击RCC,配置寄存器的使能时钟。(关于RCC寄存器的功能,可以翻阅STM32F103中文教程及参考手册.pdf——4.3 RCC寄存器描述)

为了烧录的顺利进行,点击SYS,将Debug设置成Serial Wire。


配置USART

(选择Connectivity——>选择USART1——>点击Mode,选择异步通信(Asynchonous))

进行管脚自定义(可以不用管)


然后我们配置USART1,选择中断配置(选择使能中断)

完成相应的配置后,选择工程管理,将自己的工程命名并选择保存位置


完成工程配置,生成代码。

三、代码编写

打开工程,选择while循环,在这里进行自己的代码编写。

unsigned char text[15]="Hello Windows\n";
HAL_Delay (1000);
HAL_UART_Transmit (&huart1,text,15,HAL_MAX_DELAY );

代码编写完成后,编译运行。

选择烧录软件,将所生成的HEX文件烧录进去。(具体方式之前也发过相应博客)

烧录完成后,选择串口工具,进行实验(我这里用的是野火串口助手;可以再官网下载)

现象:

四、示波器观察输出

在完成代码的编译后,我们进行输出脚的观察(具体步骤请参考:

小白学ARM实操三:基于STM32F103流水灯的实现(寄存器版)_Lc-Yusheng的博客-CSDN博客

通过对输出电平的观察,这里每个一秒便出现一个高电平,总共12个电平;刚好与“Hello Windows”相对应。

注:中间有一个空格符号。

五、总结

通过利用STM32CubeMX软件完成相应效果的展示,真的是非常方便。这次实验真的是给我带来了很大的压力,之前想着通过寄存器的方式来实现,但对于能力有限的我真的是无能为力,所以这里就先直接采用库函数的方式了。同时,也希望我在接下来的时间里通过对ARM芯片的进一步学习,能够实现通过寄存器的方式来完成本次实验,这对我而言,不仅仅是一个目标,同时也是一个挑战。

六、参考资料

STM32F103中文教程及参考手册.pdf


【【STM32CubeMX基础-3】UART串口通信-哔哩哔哩】https://b23.tv/Hw4ODV



版权声明:本文为qq_47946816原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。