按键设置并不陌生,STM32板子上有5个按键,特别的一个是RST键(复位键)而其他四个键。
控制按键只需要对其端口初始化,对其GPIO口进行时间配置,并对KEY初始化,
加上LED的相关配置;就可以实现LED的亮灭。
void RCC_Configuration(void)
{
SystemInit();//时间配置
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能或者失能 APB2 外设时钟 (GPIO(B)指的是led,定义的B型端口)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//(GPIO(c)指的是key,定义的c型端口)
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//GPIO_InitStructure为设置的变量
//LED初始化
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//led 选择待设置的 GPIO 端口
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;// 设置选中管脚的速率
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;// GPIO 设置选中管脚的工作状态 推挽输出
GPIO_Init(GPIOB,&GPIO_InitStructure);
//KEY初始化GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//输入管脚没有口线反转速度GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;// GPIO 设置选中管脚的工作状态 输入上拉模式 GPIO_Init(GPIOC,&GPIO_InitStructure); }
主程序要写入按键如何控制LED,可以写成if形式,判断按键是否按下。未按下时,LED灯一直灭,按下时LED灯亮。
while(1)
{
//if{}不断读取管脚状态 GPIO_ReadInputDataBit读取指定端口管脚的输入
if(GPIO_ReadInputDataBit(GPIOC/设置的端口/,GPIO_Pin_5/设置端口里的管脚/)==Bit_RESET)
{
//LED 发光 低电平
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//清除指定的数据端口位
}
else
{
//LED 熄灭 高电平
GPIO_SetBits(GPIOB,GPIO_Pin_5);//设置指定的数据端口位
}
}
按键设置并不陌生,STM32板子上有5个按键,特别的一个是RST键(复位键)而其他四个键。
控制按键只需要对其端口初始化,对其GPIO口进行时间配置,并对KEY初始化,
加上LED的相关配置;就可以实现LED的亮灭。
void RCC_Configuration(void)
{
SystemInit();//时间配置
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能或者失能 APB2 外设时钟 (GPIO(B)指的是led,定义的B型端口)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//(GPIO(c)指的是key,定义的c型端口)
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//GPIO_InitStructure为设置的变量
//LED初始化
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//led 选择待设置的 GPIO 端口
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;// 设置选中管脚的速率
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;// GPIO 设置选中管脚的工作状态 推挽输出
GPIO_Init(GPIOB,&GPIO_InitStructure);
//KEY初始化GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//输入管脚没有口线反转速度GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;// GPIO 设置选中管脚的工作状态 输入上拉模式 GPIO_Init(GPIOC,&GPIO_InitStructure); }
主程序要写入按键如何控制LED,可以写成if形式,判断按键是否按下。未按下时,LED灯一直灭,按下时LED灯亮。
while(1)
{
//if{}不断读取管脚状态 GPIO_ReadInputDataBit读取指定端口管脚的输入
if(GPIO_ReadInputDataBit(GPIOC/设置的端口/,GPIO_Pin_5/设置端口里的管脚/)==Bit_RESET)
{
//LED 发光 低电平
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//清除指定的数据端口位
}
else
{
//LED 熄灭 高电平
GPIO_SetBits(GPIOB,GPIO_Pin_5);//设置指定的数据端口位
}
}
举报