在这里插入代码片
按钮控制LED
1.现在.H文件中进行函数的声明
#ifndef __LED_H
#define __LED_H
void LED_Init(void);//LED时钟配置的初始化
void LED1_ON(void);//LED1开启也就是低电平点亮
void LED1_OFF(void);//LED1关闭也就是高电平关闭
void LED1_Turn(void);
void LED2_ON(void);
void LED2_OFF(void);
void LED2_Turn(void);
#endif
2.在.C文件中完成对LED头文件中函数的具体功能实现
void LED_Init(void)
{
/*开启时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟
/*GPIO初始化 输出模式 端口的选择 速度 完成初始化*/
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure); //将PA1和PA2引脚初始化为推挽输出
/*设置GPIO初始化后的默认电平*/
GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2); //设置PA1和PA2引脚为高电平
}
void LED1_ON(void)
{
GPIO_ResetBits(GPIOA, GPIO_Pin_1); //设置PA1引脚为低电平
}
void LED1_OFF(void)
{
GPIO_SetBits(GPIOA, GPIO_Pin_1); //设置PA1引脚为低电平
}
其他的就是一样的
void Key_Init(void)
{
/*开启时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //开启GPIOB的时钟
/*GPIO初始化*/
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//上拉输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure); //将PB1和PB11引脚初始化为上拉输入
}
GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_1)获取键值
主函数
uint8_t KeyNum; //定义用于接收按键键码的变量
int main(void)
{
/*模块初始化*/
LED_Init(); //LED初始化
Key_Init(); //按键初始化
OLED_Init(); //OLED初始化
while (1)
{
KeyNum = Key_GetNum(); //获取按键键码
OLED_ShowNum(2, 1,KeyNum, 1);
if (KeyNum == 1) //按键1按下
{
//OLED_ShowNum(2, 1, 1, 1);
Delay_ms(100);
LED1_Turn(); //LED1翻转
OLED_ShowNum(2, 1, 2, 1);
}
if (KeyNum == 2) //按键2按下
{//OLED_ShowNum(2, 1, 3, 1);
Delay_ms(100);
LED2_Turn(); //LED2翻转
// OLED_ShowNum(2, 1, 4, 1);
}
}
}