当前位置:   article > 正文

STM32F1XX HAL库下的矩阵键盘_hal矩阵键盘

hal矩阵键盘

 

  1. void jz_key_init()
  2. {
  3. __HAL_RCC_GPIOA_CLK_ENABLE();
  4. __HAL_RCC_GPIOB_CLK_ENABLE();
  5. }
  6. u8 jz_key_scan2()//二次封装消抖
  7. {
  8. if(jz_key_scan())
  9. {
  10. delay_ms(10);
  11. if(jz_key_scan())
  12. {
  13. return jz_key_scan();
  14. }
  15. }
  16. return 0;
  17. }
  18. u8 jz_key_scan()
  19. {
  20. u8 hang=0,lie=0;
  21. GPIO_InitTypeDef GPIO_Initure;
  22. GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;//ÐÐ
  23. GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;
  24. GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;
  25. GPIO_Initure.Pull=GPIO_NOPULL;
  26. HAL_GPIO_Init(GPIOA,&GPIO_Initure);
  27. GPIO_Initure.Pin=GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;//ÁÐ
  28. GPIO_Initure.Mode=GPIO_MODE_INPUT;
  29. GPIO_Initure.Pull=GPIO_PULLDOWN;
  30. HAL_GPIO_Init(GPIOB,&GPIO_Initure);
  31. GPIOA->ODR=(GPIOA->ODR|0x000F);//按位或 不影响其他PA口
  32. delay_us(10);//延时 不加延时部分键值会无法检测
  33. if((GPIOB->IDR & 0xF000)==0x8000)
  34. lie=4;
  35. else if((GPIOB->IDR & 0xF000)==0x4000)
  36. lie=3;
  37. else if((GPIOB->IDR& 0xF000)==0x2000)
  38. lie=2;
  39. else if((GPIOB->IDR & 0xF000)==0x1000)
  40. lie=1;
  41. else
  42. return 0;
  43. GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;//ÐÐ
  44. GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;
  45. GPIO_Initure.Mode=GPIO_MODE_INPUT;
  46. GPIO_Initure.Pull=GPIO_PULLDOWN;
  47. HAL_GPIO_Init(GPIOA,&GPIO_Initure);
  48. GPIO_Initure.Pin=GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;//ÁÐ
  49. GPIO_Initure.Pull=GPIO_NOPULL;
  50. GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;
  51. HAL_GPIO_Init(GPIOB,&GPIO_Initure);
  52. GPIOB->ODR=(GPIOB->ODR|0xF000);
  53. delay_us(10);
  54. if((GPIOA->IDR & 0x000F)==0x0008)
  55. hang=4;
  56. else if((GPIOA->IDR & 0x000F)==0x0004)
  57. hang=3;
  58. else if((GPIOA->IDR & 0x000F)==0x0002)
  59. hang=2;
  60. else if((GPIOA->IDR & 0x000F)==0x0001)
  61. hang=1;
  62. else
  63. return 0;
  64. return lie+(hang-1)*4;
  65. }

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/431234
推荐阅读
相关标签
  

闽ICP备14008679号