一、什么是gpio?
gpio的英文全称是general-purpose io ports,也就是通用输入输出口。
在嵌入式系统中,经常需要控制许多结构简单的外部设备或者电路,这些设备有的需要通过cpu控制,有的需要cpu提供输入信号。并且,许多设备或电路只要求有开/关两种状体就够了,比如led的亮与灭。对这些设备的控制,使用传统的串口或者并口就显得比较复杂,所以,在嵌入式微处理器上通常提供了一种“通用可编程i/o端口”,也就是gpio。
一个gpio端口至少需要两个寄存器,一个做控制用的“通用io端口控制寄存器”,还有一个是存放数据的“通用i/o端口数据寄存器”。数据寄存器的每一位是和gpio的硬件引脚对应的,而数据的传递方向是通过控制寄存器设置的,通过控制寄存器可以设置每一位引脚的数据流向。
二、stm32中关于gpio口的介绍
在stm32中每个gpi/o端口有两个32位配置寄存器(gpiox_crl,gpiox_crh),两个32位数据寄存器(gpiox_idr和gpiox_odr),一个32位置位/复位寄存器(gpiox_bsrr),一个16位复位寄存器(gpiox_brr)和一个32位锁定寄存器(gpiox_lckr)。
根据数据手册中列出的每个i/o端口的特定硬件特征, gpio端口的每个位可以由软件分别配置成多种模式。
─ 输入浮空
─ 输入上拉
─ 输入下拉
─ 模拟输入
─ 开漏输出
─ 推挽式输出
─ 推挽式复用功能
─ 开漏复用功能
三、常用gpio口寄存器描述
1、端口配置寄存器(gpiox_crl,gpiox_crh)
gpiox_crl和gpiox_crh分别对应gpio口的低8位和高8位输入输出口,每个寄存器的4位对应gpio口的一个端口的配置模式,其中4位中的低两位代表配置为输入还是输出模式,记为modey[1:0],具体的模式配置情况如下:
00:输入模式(复位后的状态)
01:输出模式,最大速度10mhz
10:输出模式,最大速度2mhz
11:输出模式,最大速度50mhz
高两位通常对应于什么输入输出方式,记为cnfy[1:0],具体的模式配置情况如下:
在输入模式(mode[1:0]=00):
00:模拟输入模式
01:浮空输入模式(复位后的状态)
10:上拉/下拉输入模式
11:保留
在输出模式(mode[1:0]>00):
00:通用推挽输出模式
01:通用开漏输出模式
10:复用功能推挽输出模式
11:复用功能开漏输出模式
2、端口输入数据寄存器(gpiox_idr)
位31:16 保留,始终读为0。
位15:0 端口输入数据,这些位为只读并只能以字(16位)的形式读出。读出的值为对应i/o口的状态。
3、端口输出数据寄存器(gpiox_odr)
位31:16 保留,始终读为0。
位15:0 端口输出数据,这些位可读可写并只能以字(16位)的形式操作。
4、端口位设置/清除寄存器(gpiox_bsrr)
5、端口位清除寄存器(gpiox_brr)
四、一个简单的关于寄存器的操作
ministm32关于状态指示灯的连接
由图示可以看出ds0和ds1分别接在gpioa8和gpiod2上,由此可以对寄存器的操作来实现流水灯实验
void led_init(void)
{
rcc->apb2enr |= 1
gpioa->odr |= 1 crl |= 0x00000300;//将pd2设置成通用推挽输出模式
gpiod->crl |= 1 << 2;
}
int main(void)
{
stm32_clock_init(9); //初始化时钟
delay_init(72); //延时初始化
led_init(); //配置相应寄存器
while(1)
{
led0 = 0; //点亮ds0
led1 = 1;
delay_ms(500);
led0 = 1; //点亮ds1
led1 = 0;
delay_ms(500);
}
}
黑鲨4S怎么样:新增屏幕压感,拉满游戏竞技体验
5G和AI驾临,我们的世界将会如何?
什么是量子通信
泰利特与中国联通携手共同推进工业物联网的发展
扬尘污染自动监控系统实现实时显示、实时报警
什么是GPIO? STM32中关于GPIO口的介绍
Chrome将全面推出“节省内存”和“节省电量”模式
圆筒单相动圈式直线震荡电机设计
中高压变频器主电路拓扑结构的分析比较
工作频率72MHZ的海速芯32位MCU TM32F103K7用于信号隔离采集器设计,可P2P替换STM32F103CBT6
PC+TurboPMAC实现开放式数控系统
矢量网络分析仪和阻抗分析仪测阻抗的区别
台积电宣布恢复华为芯片 华为回归5G还要多久
LG 集团再次分拆的猜测不断升温
国内医疗AI商业落地遭遇诸多瓶颈,看看美国前五医院如何利用AI
诺基亚5.4完整规格泄漏
魅族将在本月举行魅蓝发布会,官方宣布PRO 6S降价200元
达世币网络将解决加密数字货币应用的难题
18650锂电池的价格多少?锂电池价格的影响因素总结
孤注一掷在VR,但是HTC Vive在中国真的会成功吗?