来看看最简单的点亮一个灯的实验你把,实验要求使用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;
}
}
}
来看看最简单的点亮一个灯的实验你把,实验要求使用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;
}
}
}
举报