打印
[MM32硬件]

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

[复制链接]
357|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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。


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

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


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

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

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

#define LED1_ON()  GPIO_ResetBits(GPIOA,GPIO_Pin_15)        // PB5
#define LED1_OFF()  GPIO_SetBits(GPIOA,GPIO_Pin_15)        // PB5
#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一一对应,控制翻转亮灭了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

279

帖子

3

粉丝