[MM32硬件] 【MM32 eMiniBoard测评报告】MB-023开发板LED按键

[复制链接]
 楼主| hayden0 发表于 2020-4-22 22:31 | 显示全部楼层 |阅读模式
本帖最后由 hayden0 于 2020-4-22 22:33 编辑

很奇怪,这开发板硬件这么用心,却没有相应的例程,官方只有MiniBoard的开发板例程,这个例程是需要修改后才能用的。
eMiniBoard与MiniBoard的硬件基本一致,只是IO无法对应。
所以在MiniBoard例程的基础上,我改了LED和按键相应的程序。
完美的使用4个按键分别控制4个LED的亮灭!

这里注意的是原理图中Key1与其他按钮的连接方式是不同的,key1是接VDD,其他三个按键是接GND。
QQ图片20200422222644.png

所以四个按键的GPIO配置程序应如下修改:

  1. void KEY_Init(void)
  2. {
  3.    
  4.     GPIO_InitTypeDef GPIO_InitStructure;
  5.    
  6.     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB,ENABLE);//使能GPIOA,GPIOB,GPIOC时钟
  7.    
  8.    
  9.    
  10.     GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_1;//PC13,K1
  11.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //设置成下拉输入
  12.     GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOC13
  13. //   
  14. //    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_2;//PA0,K2(WK_UP)
  15. //    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //设置成下拉输入
  16. //    GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOA0
  17.    
  18.     GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_2|GPIO_Pin_10|GPIO_Pin_11;//PB10,PB11,K3,K4
  19.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //PA0设置成上拉输入
  20.     GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOB.10,11
  21.    
  22. }
  1. u8 KEY_Scan(u8 mode)
  2. {         
  3.     static u8 key_up=1;//按键按松开标志
  4.     if(mode)key_up=1;  //支持连按                  
  5.     if(key_up&&(KEY1==1||WK_UP==0||KEY3==0||KEY4==0))
  6.     {
  7.         delay_ms(10);//去抖动
  8.         key_up=0;
  9.         if(KEY1==1)return KEY1_PRES;
  10.         else if(WK_UP==0)return WKUP_PRES;
  11.         else if(KEY3==0)return KEY3_PRES;
  12.         else if(KEY4==0)return KEY4_PRES;
  13.     }else if(KEY1==0&&KEY3==1&&KEY4==1&&WK_UP==1)key_up=1;              
  14.     return 0;// 无按键按下
  15. }


LED的GPIO配置如下:
  1. #define LED4_ON()  GPIO_ResetBits(GPIOB,GPIO_Pin_5)        // PA15
  2. #define LED4_OFF()  GPIO_SetBits(GPIOB,GPIO_Pin_5)        // PA15
  3. #define LED4_TOGGLE()  (GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_5))?(GPIO_ResetBits(GPIOB,GPIO_Pin_5)):(GPIO_SetBits(GPIOB,GPIO_Pin_5))        // PA15

  4. #define LED3_ON()  GPIO_ResetBits(GPIOB,GPIO_Pin_4)        // PB3
  5. #define LED3_OFF()  GPIO_SetBits(GPIOB,GPIO_Pin_4)        // PB3
  6. #define LED3_TOGGLE()  (GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_4))?(GPIO_ResetBits(GPIOB,GPIO_Pin_4)):(GPIO_SetBits(GPIOB,GPIO_Pin_4))        // PB3

  7. #define LED2_ON()  GPIO_ResetBits(GPIOB,GPIO_Pin_3)        // PB4
  8. #define LED2_OFF()  GPIO_SetBits(GPIOB,GPIO_Pin_3)        // PB4
  9. #define LED2_TOGGLE()  (GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_3))?(GPIO_ResetBits(GPIOB,GPIO_Pin_3)):(GPIO_SetBits(GPIOB,GPIO_Pin_3))        // PB4

  10. #define LED1_ON()  GPIO_ResetBits(GPIOA,GPIO_Pin_15)        // PB5
  11. #define LED1_OFF()  GPIO_SetBits(GPIOA,GPIO_Pin_15)        // PB5
  12. #define LED1_TOGGLE()  (GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_15))?(GPIO_ResetBits(GPIOA,GPIO_Pin_15)):(GPIO_SetBits(GPIOA,GPIO_Pin_15))        // PB5
这样,KEY1-KEY4就完美的和LED1-LED4一一对应,控制翻转亮灭了!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

295

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部

62

主题

295

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部