本帖最后由 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一一对应,控制翻转亮灭了!
|