void deply(__IO uint32_t count)
{
while(count--);
}
void InitLED()
{
GPIO_InitTypeDef GPIO_InitStrue;
//打开端口A、E、F时钟,使能通电
RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA
|RCC_AHB1Periph_GPIOE
|RCC_AHB1Periph_GPIOF,ENABLE);
//设置端口F为输出模式
GPIO_InitStrue.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;//设置引脚9、10
GPIO_InitStrue.GPIO_Mode = GPIO_Mode_OUT;//设置为输出模式
GPIO_InitStrue.GPIO_OType = GPIO_OType_PP;//设置为推挽模式
GPIO_InitStrue.GPIO_PuPd = GPIO_PuPd_NOPULL;//设置为无上下拉电阻
GPIO_InitStrue.GPIO_Speed = GPIO_Speed_100MHz;//设置输出速率为100MHz
GPIO_Init(GPIOF,&GPIO_InitStrue);//初始化端口F
GPIO_InitStrue.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14;//设置引脚13、14
GPIO_Init(GPIOE,&GPIO_InitStrue);//初始化端口E
GPIO_InitStrue.GPIO_Pin = GPIO_Pin_0;//设置引脚0
GPIO_InitStrue.GPIO_Mode = GPIO_Mode_IN;//设置为输入模式
GPIO_InitStrue.GPIO_PuPd = GPIO_PuPd_NOPULL;//设置无上下拉电阻
GPIO_InitStrue.GPIO_Speed = GPIO_Speed_100MHz;//设置输出速率为100MHz
GPIO_Init(GPIOA,&GPIO_InitStrue);//初始化话端口A
GPIO_InitStrue.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;//设置引脚2、3、4
GPIO_Init(GPIOE,&GPIO_InitStrue);//初始化端口E
GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
GPIO_SetBits(GPIOE,GPIO_Pin_13|GPIO_Pin_14);
}
void LED_on()
{
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
deply(0x0FFFFF);
GPIO_SetBits(GPIOF,GPIO_Pin_9);
deply(0x0FFFFF);
GPIO_ResetBits(GPIOF,GPIO_Pin_10);
deply(0x0FFFFF);
GPIO_SetBits(GPIOF,GPIO_Pin_10);
deply(0x0FFFFF);
GPIO_ResetBits(GPIOE,GPIO_Pin_13);
deply(0x0FFFFF);
GPIO_SetBits(GPIOE,GPIO_Pin_13);
deply(0x0FFFFF);
GPIO_ResetBits(GPIOE,GPIO_Pin_14);
deply(0x0FFFFF);
GPIO_SetBits(GPIOE,GPIO_Pin_14);
deply(0x0FFFFF);
}
void LED_off()
{
GPIO_SetBits(GPIOF,GPIO_Pin_9);
GPIO_SetBits(GPIOF,GPIO_Pin_10);
GPIO_SetBits(GPIOE,GPIO_Pin_13);
GPIO_SetBits(GPIOE,GPIO_Pin_14);
}
void LED_cycle()
{
while(1)
{
//按下key0
if(Bit_RESET==GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0))
{
LED_on();
}
else
{
LED_off();
}
//按下key1
if(Bit_RESET==GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2))
{
LED_on();
}
else
{
LED_off();
}
//按下key2
if(Bit_RESET==GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3))
{
LED_on();
}
else
{
LED_off();
}
//按下key3
if(Bit_RESET==GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4))
{
LED_on();
}
else
{
LED_off();
}
}
}
int main(void)
{
InitLED();
LED_cycle();
}
基于STM32的按键操作
猜你喜欢
转载自www.cnblogs.com/lp06/p/11841439.html
今日推荐
周排行