资讯详情

分别使用寄存器地址方式和HAL库实现流水灯

文章目录

      • 一.串口协议和RS-232标准,以及RS232电平与TTL电平的区别
      • 二.CH340芯片模块的工作原理
      • 三.使用GPIO端口完成3只LED红绿灯周期闪烁。
      • 四.总结
      • 五.参考链接:

一.串口协议和RS-232标准,以及RS232电平与TTL电平的区别

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

RS-232(ANSI/EIA-232标准)是IBM-PC以及兼容机上的串行连接标准。可用于连接鼠标、打印机或Modem,工业仪器仪表也可以同时连接。在实际应用中,用于改进驱动和连接RS-传输长度或速度通常超过标准值。RS-232只限于PC串口与设备间点对点通信。RS-232串口通信最远距离是50英尺。

DB-9针连接头:

在这里插入图片描述

从计算机串口截面图。RS-232针脚功能:

数据:

TXD(pin 三、串口数据输出(Transmit Data)

RXD(pin 二、串口数据输入(Receive Data)

握手:

RTS(pin 7):发送数据请求(Request to Send)

CTS(pin 8):清除发送(Clear to Send)

DSR(pin 6):数据发送就绪(Data Send Ready)

DCD(pin 1):数据载波检测(Data Carrier Detect)

DTR(pin 4):数据终端就绪(Data Terminal Ready)

地线:

GND(pin 5):地线

其它:

RI(pin 9):铃声指示

TTL电平信号之所以被广泛使用,是因为我们通常使用二进制来表示数据。并规定, 5V等于逻辑1,0V等同于逻辑0。这种数据通信和电平规定被称为TTL(晶体管-晶体管逻辑电平)信号系统。这是计算机处理器控制的设备内部各部分之间通信的标准技术。

rs电子工业协会是个人电脑上的通信接口之一(Electronic Industries AssociaTIon,EIA) 异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 一般来说,个人电脑上会有两组型态 RS-232 接口,分别称为 COM1 和 COM2。RS232的电平标准为 12V逻辑负,-12逻辑正,TTL电平为5V逻辑正,逻辑负

输出 L: 《0.8V ; H:》2.4V。

输入 L: 《1.2V ; H:》2.0V

TTL设备输出低电平小于0.8V,高电平大于2.4V。输入,低于1.2V它被认为是0,高于2.所以TTL低电平输入的噪声容量仅为(0.8-0)/2=0.4V,高电平2.4)/2=1.3V。

输出 L: 《0.1Vcc ; H:》0.9Vcc。

输入 L: 《0.3Vcc ; H:》0.7Vcc.

由于CMOS电源采用12V,则输入低于3.6V噪声容量为1.8V,高于3.5V噪声容量为1.8V。比TTL噪声容限较高。

逻辑1的电平为-3~-15V,逻辑0的电平为 3~ 15V,注意来注意电平的定义。

TTL与CMOS使用电平有什么区别?

1.电平的上限和下限定义不同,CMOS抗噪区域较大。 如果是5伏供电,ttl一般是1.7V和3.5V的样子,CMOS一般是2.2V,2.9V外观不准确,仅供参考。

2.电流驱动能力不同,ttl一般提供25毫安的驱动能力,CMOS一般在10毫安左右。

3.需要的电流输入大小也不一样,一般ttl需要2.5毫安左右,CMOS几乎不需要电流输入。

4.许多设备兼容TTL和CMOS的,datasheet会有解释。如果不考虑速度和性能,一般设备可以交换。但需要注意的是,有时负载效应会导致电路异常工作,因为有些ttl电路需要下一级输入阻抗作为负载才能正常工作。

5.TTL电路和CMOS电路逻辑电平

VOH: 逻辑电平 1 的输出电压

VOL: 逻辑电平 0 的输出电压

VIH : 逻辑电平 1 的输入电压

VIH : 逻辑电平 0 的输入电压

VOHmin = 2.4V VOLmax = 0.4V

VIHmin = 2.0V VILmax = 0.8V

CMOS电路临界值(电源电压+5)V)

VOHmin = 4.99V VOLmax = 0.01V

VIHmin = 3.5V VILmax = 1.5V

CMOS电平能驱动TTL电平

TTL无法驱动电平CMOS电平时,应增加拉电阻。

74LS系列: TTL 输入: TTL 输出: TTL

74HC系列: CMOS 输入: CMOS 输出: CMOS

74HCT系列: CMOS 输入: TTL 输出: CMOS

CD4000系列: CMOS 输入: CMOS 输出: CMOS

图:RS232和TTL/CMOS电平反相。

二.CH340芯片模块的工作原理

三.使用GPIO端口完成3只LED红绿灯周期闪烁。

stm32CubeMX安装参考:https://blog.csdn.net/qq_43279579/article/details/112213196

https://blog.csdn.net/qq_45659777/article/details/120835273

管脚A4,B5,C14的时序波形图如上所示,周期为0.696s,同一时间内只有一个高电平可以点亮一个LED灯。

打开STM32CubeMX软件,新建项目,选择自己要使用的开发板,此处我使用的是STM32F103C8。

找到RCC,设置HSE为Crystal/Ceram…,在Pinout view中点击选择自己要使用的引脚(此处我选择的是A1,A3,A5三个引脚),设置为GPIO_Output,在GPIO中设置如下:

点击Project Manager,为该项目命名,设置Toolchain / IDE为MDK-ARM,同时注意保存路径中不要出现中文,否则容易出错。

点击右上角GENERATE CODE,自动生成代码。

在Keil中打开该项目,使用HAL库开发,相关函数为:

①延时函数(HAL_Delay) 函数原型: void HAL_Delay (__IO uint32_t Delay) 参数说明:Delay表示所要延时的时间大小,单位是毫秒 ②写管脚函数(HAL_GPIO_WritePin) 函数原型:void HAL_GPIO_WritePin (GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) 参数说明: GPIOx: 管脚组(x的取值为A~G) GPIO_Pin: 管脚编号(x的取值为0~15) PinState: 管脚的状态(取值为GPIO_BIT_RESET表示0, GPIO_BIT_SET表示1)

在main.c文件中main函数中的while循环中添加如下代码:

//写循环执行的代码 
		HAL_GPIO_WritePin(GPIOA, LED2_Pin, GPIO_PIN_RESET);
		HAL_GPIO_WritePin(GPIOA,LED3_Pin, GPIO_PIN_RESET);
		HAL_GPIO_WritePin(GPIOA, LED4_Pin, GPIO_PIN_RESET);
		HAL_Delay(1000);
		HAL_GPIO_WritePin(GPIOA, LED2_Pin, GPIO_PIN_SET);
		HAL_Delay(1000);
		
		HAL_GPIO_WritePin(GPIOA, LED2_Pin, GPIO_PIN_RESET);
		HAL_GPIO_WritePin(GPIOA,LED3_Pin, GPIO_PIN_RESET);
		HAL_GPIO_WritePin(GPIOA, LED4_Pin, GPIO_PIN_RESET);
		HAL_Delay(1000);
		HAL_GPIO_WritePin(GPIOA, LED3_Pin, GPIO_PIN_SET);
		HAL_Delay(1000);
		
		HAL_GPIO_WritePin(GPIOA, LED2_Pin, GPIO_PIN_RESET);
		HAL_GPIO_WritePin(GPIOA,LED3_Pin, GPIO_PIN_RESET);
		HAL_GPIO_WritePin(GPIOA, LED4_Pin, GPIO_PIN_RESET);
		HAL_Delay(1000);
		HAL_GPIO_WritePin(GPIOA, LED4_Pin, GPIO_PIN_SET);
		HAL_Delay(1000);

注意代码的地址要写在用户代码区域!!! 编译,生成.hex文件,使用串口下载软件FlyMCU下载到STM32,(下载时,BOOT0置1,BOOT1置0),下载完毕后,BOOT0置0,BOOT1置1,可以观察到对应管脚的LE,循环闪烁。 效果: https://www.bilibili.com/video/BV1iq4y157RH/

管脚A1,A3,A5的时序波形图如上所示,周期为1s,同一时间内只有一个高电平可以点亮一个LED灯。

四.总结

该实验使用编程方式和HAL库实现流水灯。

五.参考链接:

http://www.elecfans.com/emb/jiekou/20171101573461.html

https://blog.csdn.net/qq_43279579/article/details/112213196

https://blog.csdn.net/qq_43279579/article/details/112233696

标签: 晶体管输出型cts7

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台