当前位置: 首页 > >

GPIO输出模式-按键

发布时间:

GPIO输入模式——按键 STM32的IO口做输入使用的时候,是通过读取IDR的内容来读取IO口
的状态的。典型的应用有按键,各种传感器状态开关(如红外开关、超 声波、温度等),这些应用,都是IO的状态被动地被改变,因此,是做 输入使用。
本节,就以按键为例,介绍GPIO做输入使用时的编程方法。 1、 硬件设计
上述的按键电路设计方法是:在一个电源、地和电阻的连通支路 中,嵌入按键开关,开关的正电源侧分出一路,与MCU的GPIO连接,四 个按键分别接到PA0,PA8,PC1,PC2上。注意:电阻要放在正电源一 侧,请思考:如果电阻放在地一侧会出现什么情况呢?
2、 软件设计 现在我们来进行软件编程。按键的程序设计与LED的一样,也要遵 循这样一个步骤:首先使能对应端口的数字时钟,然后配置工作模式, ——也就是初始化!初始化完毕,即可通过查询IDR寄存器的相应位 值,即可知道按键是“按下”还是“释放”了。 我们以这四个按键为例,讲解这四个GPIO口的初始化。
(1) PA0的初始化: a. 开启对应端口的数字时钟
因为PA0是在GPIO的A组,而GPIOA是挂接在APB2高级总线上 的(P2图1.1),因此要开启APB2的时钟。用下面的语句: RCC->APB2ENR |=1<<2; 上面用了“|=”运算符号,是指先进行或运算,再进行赋值运

算。1<<2,就是bit2。因此运算结果就是,APB2ENR的bit2位 被置“1”,因为无论“0”还是“1”只要与“1”或运算,结果都 是“1”。
b. 配置工作模式 PA0工作在输入模式,输入模式对应的有“模拟输入”“浮空输 入”“上拉/下拉输入”,在此,我们选择“上拉/下拉输入”。用 下面的语句:
GPIOA->CRL &=0xFFFFFFF0; GPIOA->CRL|=0x00000008; 上面要配置CRL,因为任何一组GPIO的0-7端口都在CRL里配 置,8-15在CRH里进行配置。第1句将CRL的bit3-0复位 为“0000”(任何值与0相与都是0),就是设置成输入;第2 句将CRL的bit3-2置位为“10”(任何值与1相或结果都是1), 就是设置成上拉/下拉输入。
课本P13表2.2

CNF[1:0] MODE[1:0] 输入配置

CNF[1:0] MODE[1:0] 输出配 置
50MHz

00

00

模拟输入

00

11

通用推

挽输出

01

00

浮空输入

(复位状

态)

01

11

通用开

漏输出

10

00

上拉/下拉输



10

11

复用推

挽输出

11

00

保留

11

11

复用开

漏输出

(2) PA8的初始化 仿照上面的例子,可以知道PA8的初始化如下:

RCC->APB2ENR |=1<<2; GPIOA->CRH &=0xFFFFFFF0; GPIOA->CRH|=0x00000008; (3) PC1的初始化 RCC->APB2ENR |=1<<4; GPIOC->CRL &=0xFFFFFF0F; GPIOC->CRL|=0x00000080;
(4) PC2的初始化 RCC->APB2ENR |=1<<4; GPIOC->CRL &=0xFFFFF0FF; GPIOC->CRL|=0x00000800;
(5) 将四个按键同时进行初始化,可以将上面的语句进行合 并。
RCC->APB2ENR |=1<<2; GPIOA->CRL &=0xFFFFFFF0; GPIOA->CRL|=0x00000008; GPIOA->CRH &=0xFFFFFFF0; GPIOA->CRH|=0x00000008;
RCC->APB2ENR |=1<<4; GPIOC->CRL &=0xFFFFF00F; GPIOC->CRL|=0x00000880; (2) 按键查询 GPIO的IDR寄存器是输入状态寄存器,因此查询按键状态,就是读取 IDR寄存器。 PA0和PA8,对应GPIOA->IDR的bit0和bit8,PC1和PC2,对应GPIOC-IDR 的bit1和bit2。 因此,查询语句可以这样写: if (GPIOA->IDR & 1<<0 == 0) //PA0按键按下 if (GPIOA->IDR & 1<<8 == 0) //PA8按键按下
if (GPIOC->IDR & 1<<1 == 0) //PC1按键按下 if (GPIOC->IDR & 1<<2 == 0) //PC2按键按下
(3)对于按键矩阵,要操作行线和列线,也就是将按键两侧的控制

线上拉或者下拉,此时可以写ODR寄存器。
3、 练*与仿真 (1) 如果K1按下,就令led0状态翻转;类似,令K2-K4,分 别控制led1-3的状态。




友情链接: