32单片机基础:GPIO输入

1.1按键控制LED

按键介绍:

两种方式,我们一般用下接的方式。

第一个图:注意点。当按键按下,PA0接地,被置为低电平, 但是一旦按键松手,PA0悬空,引脚电压不确定。所以无论怎么读引脚也不知道知否被按下,所以为了解决这个问题,所以必须要求PA0是上拉输入的模式,这样引脚悬空的话,就会被置为高电平,这样我们我们就可以读取PA0的电压就知道按键是否被按下。

但是第二个图就不会出现问题,按下时,被置为低电平,松手,由于上拉电阻的作用,被置为高电平。这样引脚就不会出现浮空状态。所以此时PA0可以配置浮空输入和上拉输入。上拉输入,两个电阻共同作用,这样高电平就会更加稳定一些,

第三个图同样注意要使用下拉输入模式。

下面是面包板接线图:

用哪个端口看自己的,我这里也没按上面连接,我是接A0,A1两个端口 

采用模块化编程:

把LED的代码和按键的代码封装开来,不要一起放在主函数里。分别放在自己的.c和.h文件里。

新建一个文件夹,用来存放硬件驱动

 点击keil5的魔术棒: 

把文件夹添加进来之后,像建立main函数一样建立下图文件。 

LED.h用来存放这个驱动程序可以对外提供的函数或变量声明。 

按照Ctrl+Alt+空格,会弹出相应函数的提示框。

LED.c

#include "stm32f10x.h"                  // Device header

void LED_Init(void)//打开时钟,配置端口
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
}

LED.h

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值