|
主程序
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "LED.h"
#include "Key.h"
uint8_t Key_Num;
int main(void)
{
LED_Init();
Key_Init();
while(1)
{
LED1_OFF();
LED2_OFF();
Key_Num = Key_GetNum();
if(Key_Num == 1)
{
LED1_Turn();
}
if(Key_Num == 2)
{
LED2_Turn();
}
}
}
按键控制程序
#include "stm32f10x.h" // Device header
#include "Delay.h"
void Key_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //使能GPIOC时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //配置为上拉输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIOC速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //初始化PC口
}
uint8_t Key_GetNum(void)
{
uint8_t KeyNum = 0;
if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_12)==0)
{
Delay_ms(20);
while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_12)==0)
{
Delay_ms(20);
KeyNum = 1;
}
};
if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13)==0)
{
Delay_ms(20);
while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13)==0)
{
Delay_ms(20);
KeyNum = 2;
}
}
return KeyNum;
}
|
|