目录
不知为啥,我的“小白“”成了违规词汇,所以现在就改成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