0
点赞
收藏
分享

微信扫一扫

外设配置总结(一)

LED配置

使用推挽模式的原因在于可以输出高低电平,而输出模式在点亮LED里面其实并不重要,三种模式均可。

GPIO_InitTypeDef GPIO_Initure;

GPIO_Initure.Pin = GPIO_PIN_5; //确定引脚
GPIO_Initure.Mode = GPIO_MODE_OUTPUT_PP; //输出推挽模式
GPIO_Initure.Pull = GPIO_PULLUP; //使用上拉电阻
GPIO_Initure.Speed = GPIO_SPEED_FREQ_HIGH; //使用高速

HAL_GPIO_Init(GPIOB,&GPIO_Initure);

//在对应的引脚写入,输出相应的高低电平
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_RESET); //输出高电平
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_SET); //输出低电平
HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_5); //对当前电平进行取反
HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_5); //读取前电平的值

蜂鸣器配置

与LED的配置一样

GPIO_InitTypeDef GPIO_Initure;

GPIO_Initure.Pin = GPIO_PIN_8; //确定引脚
GPIO_Initure.Mode = GPIO_MODE_OUTPUT_PP; //输出推挽模式
GPIO_Initure.Pull = GPIO_PULLUP; //使用上拉电阻
GPIO_Initure.Speed = GPIO_SPEED_FREQ_HIGH; //使用高速

HAL_GPIO_Init(GPIOB,&GPIO_Initure);

按键配置

使用输入模式,得到按键此时的电平高低判断按键是否按下。

GPIO_InitTypeDef GPIO_Initure;

GPIO_InitStruct.Pin = GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; //使用输入模式是为了得到按键是否被按下
GPIO_InitStruct.Pull = GPIO_PULLUP;

HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);

//按KEY0按键LED亮或者灭,KEY1按下蜂鸣器响或者灭
#define KEY0_PRES 1
#define KEY1_PRES 2

int Key_Press(void);

#define KEY0 HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)
#define KEY1 HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_3)

//按键函数
u8 Key_Press(void){
static u8 key = 1; //判断按键是否松开
if(key==1&&((KEY0==0)||(KEY1==0))){
key = 0;
if(KEY0==0)
return KEY0_PRES;
else if(KEY1==0)
return KEY1_PRES;
}else if(KEY0==1&&KEY1==1){
key = 1;
}
return 0;
}

举报

相关推荐

0 条评论