串口通信小试牛刀——GPIO端口完成3只LED灯的周期闪烁

一、 工作原理

(一)串口通信协议和RS232串口标准

串口通信协议
串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485

RS232串口标准
RS232串口标准是美国EIA(电子工业联合会)与BELL等公司一起开发的通信协议。它适合于数据传输速率在0~20000bit/s范围内通信。RS232作为一种标准,被广泛应用于计算机与外设间的一种常通信接口,其中外设应用种类繁多,如:打印机、数据采集模块、测试装置和各种控制回路,甚至RS232串行接口还可用于计算机之间的简单连接上。

(二)RS232电平与TTL电平的区别

RS232电平与TTL电平的区别

  • TTL电平信号之所以被广泛使用,原因是因为:通常我们采用二进制来表示数据。而且规定,+5V等价于逻辑“1”,0V等价于逻辑“0”。这样的数据通信及电平规定方式,被称做TTL(晶体管-晶体管逻辑电平)信号系统。这是计算机处理器控制的设备内部各部分之间通信的标准技术。
  • rs232是个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries AssociaTIon,EIA)所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25)的型态出现,一般个人计算机上会有两组 RS-232 接口,分别称为 COM1 和COM2。RS232的电平标准为+12V为逻辑负,-12为逻辑正,TTL电平为5V为逻辑正,0为逻辑负

(三)USB转串口原理

USB转串口原理
USB主机检测到USB转串口设备插入后,首先会对设备复位,然后开始USB枚举过程。USB枚举时过程会获取设备描述符、配置描述符、接口描述符等。描述符中会包含USB设备的厂商ID,设备ID和Class类别等信息。操作系统会根据该信息为设备匹配相应的USB设备驱动。
USB虚拟串口的实现在系统上依赖于USB转串口驱动,一般由厂家直接提供,也可以使用操作系统自带的CDC类串口驱动等。驱动主要分为2个功能,其一注册USB设备驱动,完成对USB设备的控制与数据通讯,其二注册串口驱动,为串口应用层提供相应的实现方法。

二、搭建STM32的开发环境

(一)安装 JDK

(二)安装MDK5

参照:搭建并配置Keil嵌入式开发环境,完成一个基于STM32汇编程序的编写

(三)安装 stm32CubeMX

stm32CubeMX下载地址:https://www.st.com/en/development-tools/stm32cubemx.html
在这里插入图片描述
下载好后,点击开始安装,Next。
在这里插入图片描述
同意协议,Next。
在这里插入图片描述
勾选第一个,Next。
在这里插入图片描述
选择安装路径(不要有中文),然后Next,确定。
在这里插入图片描述
next。
在这里插入图片描述
等待。
在这里插入图片描述
Next。
在这里插入图片描述
点击Done,安装完成。
在这里插入图片描述
双击打开,点击。
在这里插入图片描述
勾选依赖包,Install now。
在这里插入图片描述
等待安装。
在这里插入图片描述

三、用GPIO端口完成3只LED红绿灯的周期闪烁

(一)用stm32CubeMX初始代码

打开stm32CubeMX,New一个Project,选择芯片,点星星⭐,然后右边Start Project。
在这里插入图片描述
点击System Core,再点击SYS,在debug选项中选择Serial Wire
在这里插入图片描述
点击Clock Configuration,选择PLLCLK。
在这里插入图片描述
点击System Core,再点击RCC,在HSE选项中选择Crystal/Ceramic Resonator。
在这里插入图片描述
点击相应的引脚设置输出寄存器,选择output那一项。选择PA0,PB9,PC15。
在这里插入图片描述
点击project manager,填写路径和项目名,将IDE改为MDK-ARM。
在这里插入图片描述
进入code generate界面,选择生成初始化.c/.h文件,后面点击generate code,之后等待一下。
在这里插入图片描述
点击Open从Keil打开。
在这里插入图片描述

(二)修改代码并编译

打开项目之后,打开main.c文件,找到while函数在里面添加实现功能的代码。

		HAL_Delay(500);//延时0.5s
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);//PA0熄灯
		HAL_Delay(500);//延时0.5s		
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9亮灯
		HAL_Delay(500);//延时0.5s
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9熄灯
		HAL_Delay(500);//延时0.5s		
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_RESET);//PC15亮灯
		HAL_Delay(500);//延时0.5s		
		HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,GPIO_PIN_SET);//PC15熄灯
		HAL_Delay(500);//延时0.5s

在这里插入图片描述
编译生成hex文件。
在这里插入图片描述
在这里插入图片描述

(三)烧录运行

打开FlyMcu,如图操作。
在这里插入图片描述
开始编程,成功。
实现流水灯

四、3个GPIO端口的输出波形

点击魔法棒,设置Debug。
在这里插入图片描述
调试。
在这里插入图片描述
选择逻辑分析仪。
在这里插入图片描述
点击Setup,添加引脚。输入(PORTB & 0X00000000)>>0、Display Type选择Bit,依次输入(PORTA & 0X00008000)>>15、(PORTC & 0X00002000)>>13。
在这里插入图片描述
然后观察波形。

参考文献

串口通信知识点总结
搭建STM32开发环境——STM32CubeMX,Keil5
STM32 观察波形

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值