STM32
直播中

刘丰标

7年用户 1070经验值
私信 关注
[问答]

如何使用KEY4*4按键点亮LED?

如何使用KEY4*4按键点亮LED?

回帖(1)

翁齐芳

2021-11-16 09:51:54
来看看最简单的点亮一个灯的实验你把,实验要求使用KEY4*4按键,按键按下灯亮,按键拿起灯灭,如此一直循环:
程序的思路如下:

1、首先需要设置的是时钟:你将灯的管脚连在哪个端口的某个引脚上面,你就开启哪个端口的时钟,比如灯连在A端口的某个引脚,就要开启A端口的时钟。
2、其次,设置管脚(我们要设置LED和矩阵键盘中的一个键的管脚): 我们需要对GPIO进行初始化设置,我们只需调用 GPIO_InitTypeDef的结构体,对每个成员进行设置,要设置的有PIN管脚的位置GPIO_Pin,还有管脚的速率GPIO_Speed,还有管脚的工作状态GPIO_Mode,最后在调用一下初始化的函数GPIO_Init,
3、然后就开始写我们的主函数:假如我想让led灯的管脚置为高电平,我只需调用GPIO_SetBits函数,它是将管脚置为高电平,若想置为低电平则调用GPIO_ResetBits函数就可以。
4、最后我们要让它按下时亮,抬起时灭,我们需要if语句
——————————————————————————————————————————————————-
下边为程序:所用芯片为STM32F103C8T6  LED控制管脚为C13  矩阵键盘为B9
首先是控制小灯为推挽式输出

void LED_Init (void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//初始化GPIOC时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);

}
然后是配置矩阵键盘

void KEY_Init (void)
{
        GPIO_InitTypeDef GPIO_InitStructure;//配置PB9上拉输入
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//初始化GPIOB时钟
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_Init(GPIOB, &GPIO_InitStructure);

}
接下来时主函数

int main()
{
        LED_Init();
        KEY_Init();
       

        while(1)
               
        {
                LED = 1;
                if(KEY == 0)
                {               
                LED = 0;               
                }       
        }

}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分