野火淘宝店:http://firestm32.taobao.com (点我) -第 2 页-
有疑问就到:www.amobbs.com/forum-1008-1.html (点我)
0、友情提示
《零死角玩转 STM32》系列教程由初级篇、中级篇、高级篇、系统篇、
四个部分组成,根据野火 STM32 开发板旧版教程升级而来,且经过重新深入编
写,重新排版,更适合初学者,步步为营,从入门到精通,从裸奔到系统,让
您零死角玩转 STM32。M3 的世界,于野火同行,乐意惬无边。
另外,野火团队历时一年精心打造的《STM32 库开发实战指南》将于今
年 10 月份由机械工业出版社出版,该书的排版更适于纸质书本阅读以及更有利
于查阅资料。内容上会给你带来更多的惊喜。是一本学习 STM32 必备的工具
书。敬请期待!
野火淘宝店:http://firestm32.taobao.com (点我) -第 3 页-
有疑问就到:www.amobbs.com/forum-1008-1.html (点我)
1、调试必备-串口(USART1)
当我们在学习一款 CPU 的时候,最经典的实验莫过于流水灯了,会了流水
灯的话就基本等于学会会操作 I/O 口了。那么在学会操作 I/O 之后,面对那么
多的片上外设我们又应该先学什么呢?有些朋友会说用到什么就学什么,听起
来这也不无道理呀。
但对于野火来说会把学习串口的操作放在第二位。在程序运行的时候我们
可以通过点亮一个 LED 来显示代码的执行的状态,但有时候我们还想把某些中
间量或者其他程序状态信息打印出来显示在电脑上,那么这时串口的作用就可
想而知了。
1.1 异步串口通讯协议
阅读过《STM32 中文参考手册》的读者会发现,STM32 的串口非常强大,
它不仅支持最基本的通用串口同步、异步通讯,还具有 LIN 总线功能(局域互联
网)、IRDA 功能(红外通讯)、SmartCard 功能。
为实现最迫切的需求,利用串口来帮助我们调试程序,本章介绍的为串口
最基本、最常用的方法,全双工、异步通讯方式。图 1-1 为串口异步通讯协
议。
图 1-1 异步串口通讯协议
重温串口的通讯协议,我们知道要配置串口通讯,至少要设置以下几个参
数:
字长(一次传送的数据长度)、波特率(每秒传输的数据位数)、奇偶校验位、
还有停止位
。对 ST 库函数的使用已经上手的读者应该能猜到,在初始化串口
的时候,必然有一个
串口初始化结构体
,这个结构体的几个成员肯定就是有来
存储这些控制参数的。
野火淘宝店:http://firestm32.taobao.com (点我) -第 4 页-
有疑问就到:www.amobbs.com/forum-1008-1.html (点我)
1.2 直通线和交叉线
野火 STM32 开发板串口硬件原理图
图 1-2 野火开发板串口硬件图
见图 1-2,这是野火 STM32 开发板的接线图,使用的为 MAX3232 芯片,
把 STM32 的
PA10 引脚(复用功能为 USART1 的 Rx)
接到了 DB9 接口的
第 2 针
脚
,把
PA9 引脚(复用功能为 USART 的 Tx)
连接到了 DB9 接口的
第 3 针脚
。
Tx(发送端)接第 3 针脚,Rx(接收端)接第 2 针脚
。这种接法是跟 PC
的串口接法一样的,如果要实现 PC 跟野火板子通讯,就要使用两头都是母的
交叉线
。
串口线主要分两种,
直通线(平行线)
和
交叉线
。它们的区别见图 1-3。
假如 PC 与板子之间要实现全双工串口通讯,必然是 PC 的 Tx 针脚要连接到板
子的 Rx 针脚,而 PC 的 Rx 针脚则要连接至板子的 Tx 针脚了。由于板子和 pc
的串口接法是
相同
的,就要使用
交叉线
来连接了。如果有的开发板是 Tx 连接至
DB9 的第 2 针脚,而 Rx 连接至第 3 针脚,这与 PC 接法是
相反
的,这样的板子
与 PC 通讯就需要使用
直通线
了。
为什么野火板子要使用 PC 的接法?
假如使用非 PC 接法,由于板子与 PC 的
接法相反
,通讯就要
使用直通线
;
但两个板子之间想要进行串口通讯时,由于
接法相同
,就要使用
交叉线
。如果
使用 PC 接法,板子与 PC 之间
接法相同
,通讯使用
交叉线
;两个相同板子之间
接法也相同,通讯也是使用交叉线。