STM32 4*4矩阵键盘的疑惑 程序中通过扫描方式实现,但不能实现功能。调用库函数时,有个函数不明白设置的

STM32 4*4矩阵键盘的疑惑 程序中通过扫描方式实现,但不能实现功能。调用库函数时,有个函数不明白设置的,第1张

GPIO_Write(GPIOB,(GPIOB->ODR &0xfff0 | 0xf))

这个地方是说!你先把GPIOB口的输出寄存器低四位清零,让后在把他与0xf相与在把低四位置高。

GPIOB是32位寄存器所以,0xfff0正好是32位,那个0xf是0x0f的意思!

这段程序没有错误.如果你就JTAG的话建议使用在线仿真(具体教程请百度吧,不算复杂),在switch(x)处设置断点,当程序执行到那里就暂停了,可以看到x的值是多少,这样有助于你查找错误.

如果没有的话建议买一个,也不贵,五六十就可以买到.很方便的东西

u8 GetKEY(void)//按键扫描  按下时返回1-16,不按时返回0,这个你自己写吧

 

u8 LockFlag = 1//0代表有键按下

u8 KEY//键值

 

//主程序或者中断中循环执行下边的程序 

KEYValue = GetKEY()

if(KEYValue)

{

    if(LockFlag)

    {

        LockFlag = 0

        KEY=KEYValue

    }

}

else

{

LockFlag = 1

}

大概就是这种,随手写的,应该可以实现


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11184098.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存