专题一GPIO输出模式-按键

专题一GPIO输出模式-按键

ID:38235025

大小:31.98 KB

页数:4页

时间:2019-05-28

专题一GPIO输出模式-按键_第1页
专题一GPIO输出模式-按键_第2页
专题一GPIO输出模式-按键_第3页
专题一GPIO输出模式-按键_第4页
资源描述:

《专题一GPIO输出模式-按键》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、专题一GPIO输入模式——按键STM32的IO口做输入使用的时候,是通过读取IDR的内容来读取IO口的状态的。典型的应用有按键,各种传感器状态开关(如红外开关、超声波、温度等),这些应用,都是IO的状态被动地被改变,因此,是做输入使用。本节,就以按键为例,介绍GPIO做输入使用时的编程方法。1、硬件设计图1开发板按键电路上述的按键电路设计方法是:在一个电源、地和电阻的连通支路中,嵌入按键开关,开关的正电源侧分出一路,与MCU的GPIO连接(四个按键分别接到PA0,PA8,PC1,PC2上),因此,当按键释放没有按下,按键连

2、接的GPIO管脚是正电平,按键按下,是地电平。注意:电阻要放在正电源一侧,请思考:如果电阻放在地一侧会出现什么情况呢?2、软件设计现在我们来进行软件编程。按键的程序设计与LED的一样,也要遵循这样一个步骤:首先使能对应端口的数字时钟,然后配置工作模式,——也就是初始化!初始化完毕,即可通过查询IDR寄存器的相应位值,即可知道对应按键是“按下”还是“释放”了。我们以这四个按键为例,讲解这四个GPIO口的初始化。2.1按键管脚的初始化1、首先以PA0为例,进行初始化:1)开启对应端口的数字时钟因为PA0是在GPIO的A组,而G

3、PIOA是挂接在APB2高级总线上的(课本Page2图1.1),因此要开启APB2的时钟。用下面的语句:RCC->APB2ENR

4、=1<<2;上面用了“

5、=”运算符号,是指先进行或运算,再进行赋值运算。1<<2,就是bit2。因此运算结果就是,APB2ENR的bit2位被置“1”,因为无论“0”还是“1”只要与“1”或运算,结果都是“1”。2)配置工作模式PA0工作在输入模式,输入模式对应的有“模拟输入”“浮空输入”“上拉/下拉输入”,在此,我们选择“上拉/下拉输入”。用下面的语句:GPIOA->CRL&=0xFFFFFF

6、F0;GPIOA->CRL

7、=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.2CNF[1:0]MODE[1:0]输入配置CNF[1:0]MODE[1:0]输出配置50MHz0000模拟输入0011通用推挽输出0100浮空输入(复位状态)0111通用开漏输

8、出1000上拉/下拉输入1011复用推挽输出1100保留1111复用开漏输出2、PA8的初始化仿照上面的例子,可以知道PA8的初始化如下:RCC->APB2ENR

9、=1<<2;GPIOA->CRH&=0xFFFFFFF0;GPIOA->CRH

10、=0x00000008;3、PC1的初始化RCC->APB2ENR

11、=1<<4;GPIOC->CRL&=0xFFFFFF0F;GPIOC->CRL

12、=0x00000080;4、PC2的初始化RCC->APB2ENR

13、=1<<4;GPIOC->CRL&=0xFFFFF0FF;GPIOC

14、->CRL

15、=0x00000800;5、将四个按键同时进行初始化,可以将上面的语句进行合并。RCC->APB2ENR

16、=1<<2;GPIOA->CRL&=0xFFFFFFF0;GPIOA->CRL

17、=0x00000008;GPIOA->CRH&=0xFFFFFFF0;GPIOA->CRH

18、=0x00000008;RCC->APB2ENR

19、=1<<4;GPIOC->CRL&=0xFFFFF00F;GPIOC->CRL

20、=0x00000880;2.按键查询GPIO的IDR寄存器是输入状态寄存器,因此查询按键状态,就是读取IDR

21、寄存器。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按键按下注意:对于按键矩阵,要操作行线和列线,也就是将按键两侧的控制线上拉或者下拉,此时可以写ODR寄存器。3、练习与仿真1、如果K

22、1按下,就令led0状态翻转;类似,令K2-K4,分别控制led1-3的状态。2、按键和流水灯:如果K1按下,就上流水;如果K2按下,就下流水。3、按键和蜂鸣器:如果K3按下,就令蜂鸣器响。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。