一、串口协议和RS-232、485标准,以及RS232、485电平与TTL电平的区别
1、串口通信
串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。
在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准
2、RS-232
RS-232时个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association,EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组 RS-232 接口,分别称为 COM1 和 COM2
3、RS485
RS485采用差分信号负逻辑,+2V~+6V表示“0”,- 6V~- 2V表示“1”。RS485有两线制和四线制两种接线,四线制是全双工通讯方式,两线制是半双工通讯方式。
4、RS232和RS485、TTL的区别
1)RS232、RS485、TTL是指电平标准(电信号)
2)TTL电平标准 是 低电平为0,高电平为1(对地,标准数字电路逻辑)。
3)RS232电平标准 是 正电平为0,负电平为1(对地,正负6-15V皆可,甚至可以用高阻态)。
4)RS485与RS232类似,但是采用差分信号逻辑,更适合长距离、高速传输。
二、利用工具实现LED的点亮
1、.使用CubeMX生成相关代码
①选择New Project,然后选择芯片类型
②配置系统调试接口sys,选择Serial Wire
③配置引脚功能
在芯片上找到对应的引脚,点击它,选择对应的功能。此处选择的引脚PA1、PA2、PA3为输出模式。
④选择Configuration,接着选择GPIO
配置好后,就选择Apply/OK就可以了。
⑤相关设置
选择OK,就会生成相应的代码,并且会弹出一个对话框,点击Open Project,就会使用Keil5打开工程
3.使用Keil进行编译下载生成hex文件后用stc进行烧录
具体操作见上文用寄存器&HAL库完成LED流水灯程序
4.实验现象
连接对应管脚的LED就被点亮了。
三、完成一个STM32的USART串口通讯程序
1、新建工程
2、输入工程名并保存并选择芯片
3、基本设置
4、添加源文件
5、点击 Asm Files (.s) 添加汇编文件,然后输入文件名,并点击 Add
6、结果如下
7、编写代码
AREA MYDATA, DATA
AREA MYCODE, CODE
ENTRY
EXPORT __main
__main
MOV R0, #10
MOV R1, #11
MOV R2, #12
MOV R3, #13
;LDR R0, =func01
BL func01
;LDR R1, =func02
BL func02
BL func03
LDR LR, =func01
LDR PC, =func03
B .
func01
MOV R5, #05
BX LR
func02
MOV R6, #06
BX LR
func03
MOV R7, #07
MOV R8, #08
BX LR
8、仿真器设置
9、编译生成hex文件
10、烧录
11、结果
四、keil分析波形
五、总结
要想将程序烧录到单片机上,必须先生成 hex 文件,才能下载到单片机上,而一个 hex 文件是比较小的,且内容都是以冒号开始、回车键结束的一条条数据组成,每个数据的格式一一对应,这样就方便单片机读取数据并执行,如果能够掌握 hex 文件,那么就能够直接从 hex 文件中了解寄存器地址、数据等简略信息了
六、参考资料
1、https://blog.csdn.net/qq_43279579/article/details/112213196
2、https://blog.csdn.net/qq_43279579/article/details/112233696
3、https://blog.csdn.net/ssj925319/article/details/111984002