利用HAL库基本语法实现C8T6点灯操作
引脚配置
PB3、4 、5 //设置为output
PB6、7 设置Input且为上拉
初始化代码:
由于3、4、5引脚默认输出为0灯泡默认点亮所以要将他们初始化为1
void Inint(){//初始化灯泡函数熄灭
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);
}
扫描按键代码:
由于6、7默认输出1(上拉)所以按钮接地,输入值为0代表按钮按下
void check(){//检查按键按下的情况
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_6) == GPIO_PIN_RESET ){
while(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_6) == GPIO_PIN_RESET);//减震 由0 -> 1才会亮
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);
HAL_Delay(50);
Inint();
HAL_Delay(50);
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_7) == GPIO_PIN_RESET){//如果按键2按下
do{
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET);
HAL_Delay(50);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET);
HAL_Delay(50);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);
HAL_Delay(50);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);
}
while(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_7) == GPIO_PIN_RESET);//等待按键二松开
}
}
}
main函数
int main(){
while(1){
Inint();
check();
}
}
实现效果
按键6按下并松开三个灯泡会闪一次,按键7按下不松开,再按下按键6并松开三个灯会依次流水点亮,松开按键7熄灭。