串口通信小试牛刀——GPIO端口完成3只LED灯的周期闪烁
Posted Uaena.&
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了串口通信小试牛刀——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
- 由于STM32CubeMX是Java实现的,需要先安装JDK环境。
官网地址:https://www.oracle.com/java/technologies/javase-downloads.html
(二)安装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。
然后观察波形。
参考文献
以上是关于串口通信小试牛刀——GPIO端口完成3只LED灯的周期闪烁的主要内容,如果未能解决你的问题,请参考以下文章