- 博客(0)
- 资源 (1)
- 收藏
- 关注
stm32单片机 通过按键来切换矩键和数码管
stm32 通过外部中断来实现程序的切换
主函数代码
int key_can(void); //按键扫描函数的声明
void GPIO_Configuration(void); //按键IO口初始化函数的声明
//全局变量声明 作用:在所有的函数里面都可以使用这个变量,否则只能在cheak定义的函数里面使用
int cheak=0; //矩键按下的标志位
int main(void)
{
u8 code[10]={0xf3,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
u8 ss[]={'1','2','3','A','4','5','6','B','7','8','9','C','*','0','#','D'}; //定义一个u8型数组
u8 cod[14]={0x06,0x5b,0x4f,0x3f,0x66,0x6d,0x7d,0x3f,0x07,0x7f,0x6f,0x3f,0x3f,0x3f};
u8 t=0;
int j;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //初始化与LED连接的硬件接口
// BEEP_Init(); //初始化蜂鸣器IO
EXTIX_Init();
GPIO_Configuration();//初始化外部中断输入
LED0=0; //先点亮红灯
while(1)
{
if(a==1) //按键KEY1
// /消抖
{
for(j=9;j>=0;--j)
{
if(b!=1)
{ GPIO_Write(GPIOB,code[j]);
delay_ms(1000);
}
}
}
if(b==1) //按键KEY0
{
printf("请按键 \n");
{
t=key_can(); //按下的某个键对应的返回值,并赋值给t
if(cheak) //if(非零),执行if的对应语句;if(0),不执行if对应语句;
{
printf("\n\r key=:%c \n\r",ss[t]);
GPIO_Write(GPIOB,cod[t]);
cheak=0;
}
}
}
}
}
2018-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人