永发信息网

stm32怎样检测按键是否按下

答案:2  悬赏:0  手机版
解决时间 2021-02-13 19:29
  • 提问者网友:咪咪
  • 2021-02-13 12:44
stm32怎样检测按键是否按下
最佳答案
  • 五星知识达人网友:思契十里
  • 2021-02-13 13:24
直接循环检测电平,这是最简单的,但可靠性不高。
再者,可使用外中断,检测边沿信号,这是最可靠的,stm32的每一个IO口都支持外部中断。
全部回答
  • 1楼网友:爱难随人意
  • 2021-02-13 13:54
1、stm32 的每个 io 端口都有 7 个寄存器来控制 (1)配置模式的 2 个 32 位的端口 配置寄存器 crl 和 crh (2)2 个 32 位的数据寄存器 idr 和 odr (3)1 个 32 位的置位/复位寄存器 bsrr (4)一个 16 位的复位寄存器 brr (5)1 个 32 位的锁存寄存器 lckr。 2、每个gpio端口有两个32位配置寄存器(gpiox_crl,gpiox_crh)分别控制每个端口的高八位和低八位,如果io口是0-7号的话,则写crl寄存器,如果io口是8-15号的话,则写crh寄存器,两个32位数据寄存器(gpiox_idr,gpiox_odr)一个是只读作输入数据寄存器,一个是只写作输出寄存器,一个32位置位/复位寄存器(gpiox_bsrr),一个16位复位寄存器(gpiox_brr)和一个32位锁定寄存器(gpiox_lckr)。常用的io端口寄存器只有四个:crh,crl,idr,odr。 3、另外,stm32的每个端口使用前都要将其时钟使能,stm32的gpio的时钟统一挂接在apb2上,具体的使能寄存器为rcc_apb2enr,该寄存器的第2位到第8位分别控制gpiox(x=a,b,c,d,e,f,g)端口的时钟使能,当外设时钟没有启用时,程序不能读出外设寄存器的数值
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯