文章目录
一、关于串口协议
串口通信指两个或两个以上的设备使用串口按位(bit)发送和接收字节。可以在使用一根线发送数据的同时用另一根线接收数据。 串口通信协议就是串口通讯时共同遵循的协议。 协议的内容是每一个bit 所代表的意义。
常用的串口通信协议 有以下几种:
1.RS-232(ANSI/EIA-232标准)
只支持 点对点, 最大距离 50英尺。最大速度为128000bit/s, 距离越远 速度越慢。 支持全双工(发送同时也可接收)。
2.RS-485(EIA-485标准)
是RS-422的改进, 支持多对多(2线连接),从10个增加到32个,可以用超过4000英尺的线进行串行通行。速率最大10Mbps。支持全双工(发送同时也可接收)。2线连接时 是半双工状态。
二、RS232、485电平与TTL电平的区别
1.TTL电平标准
输出 L:<0.8V H: >2.4V。
输入 L:<1.2V H: >2.0V
2.RS232标准
逻辑1的电平为-3~-15V;
逻辑0的电平为+3~+15V。
3.RS-485的电气特性
逻辑“1”以两线间的电压差为 +2~+6V 表示;
逻辑“0”以两线间的电压差为 -2~-6V 表示。
且该电平与TTL电平兼容,可方便与TTL 电路连接。
二、HAL库实现流水灯
三、串口实现hello world
(一)、HAL库实现
1.相关参数设置
1.1.打开stm32mx,创建项目:
1.2.根据以下步骤设置相关参数:
即会提醒打开keil 5。
2.代码编写
2.1.先进入main.c中:
2.2.将以下代码代替while并进行编译:
3.电路连接
GND——GND
3v3——3v3
TXD——A10
RXD——A9
红灯——B9
黄灯——A4
绿灯——C15
3.3——高电平
boot0置零
3.烧录程序
3.1.打开mcuisp
3.2.打开野火串口调试助手,再打开串口
即可接收到hello windows!
(二)、寄存器实现
1.创建项目
参考博客:http://t.csdn.cn/Bi7ki
注意创建hello.s文件:
2.将以下代码输入:
;RCC寄存器地址映像
RCC_BASE EQU 0x40021000
RCC_CR EQU (RCC_BASE + 0x00)
RCC_CFGR EQU (RCC_BASE + 0x04)
RCC_CIR EQU (RCC_BASE + 0x08)
RCC_APB2RSTR EQU (RCC_BASE + 0x0C)
RCC_APB1RSTR EQU (RCC_BASE + 0x10)
RCC_AHBENR EQU (RCC_BASE + 0x14)
RCC_APB2ENR EQU (RCC_BASE + 0x18)
RCC_APB1ENR EQU (RCC_BASE + 0x1C)
RCC_BDCR EQU (RCC_BASE + 0x20)
RCC_CSR EQU (RCC_BASE + 0x24)
;AFIO寄存器地址映像
AFIO_BASE EQU 0x40010000
AFIO_EVCR EQU (AFIO_BASE + 0x00)
AFIO_MAPR EQU (AFIO_BASE + 0x04)
AFIO_EXTICR1 EQU (AFIO_BASE + 0x08)
AFIO_EXTICR2 EQU (AFIO_BASE + 0x0C)
AFIO_EXTICR3 EQU (AFIO_BASE + 0x10)
AFIO_EXTICR4 EQU (AFIO_BASE + 0x14)
;GPIOA寄存器地址映像
GPIOA_BASE EQU 0x40010800
GPIOA_CRL EQU (GPIOA_BASE + 0x00)
GPIOA_CRH EQU (GPIOA_BASE + 0x04)
GPIOA_IDR EQU (GPIOA_BASE + 0x08)
GPIOA_ODR EQU (GPIOA_BASE + 0x0C)
GPIOA_BSRR EQU (GPIOA_BASE + 0x10)
GPIOA_BRR EQU (GPIOA_BASE + 0x14)
GPIOA_LCKR EQU (GPIOA_BASE + 0x18)
;GPIO C口控制
GPIOC_BASE EQ