20170725——按键输入实验

来源:互联网 发布:js字符串比较相等 编辑:程序博客网 时间:2024/06/10 03:31

1.见下图,为什么说KEY0和KEY1是低电平有效,而WK_UP是高电平有效?

这里写图片描述

2.上拉电阻

这里写图片描述
1、概念:将一个不确定的信号,通过一个电阻与电源VCC相连,固定在高电平;
2、上拉是对器件注入电流;灌电流;
3、当一个接有上拉电阻的IO端口设置为输入状态时,它的常态为高电平;

对于IO来说,电流永远都是从VCC流入IO,不可能从地流入IO,对于器件来讲,是输入电流,是灌电流,增大电流;

3.下拉电阻

这里写图片描述
1、 概念:将一个不确定的信号,通过一个电阻与地GND相连,固定在低电平;
2、下拉是从器件输出电流;拉电流;
3、当一个接有下拉电阻的IO端口设置为输入状态时,它的常态为低电平;

对于器件来讲,电路永远都是从器件流向地,是输出电流;

有的单片机电路接上拉电阻,是为了加大输出引脚的驱动能力;上拉电阻阻值一般1K~10K之间;下拉电阻一般用的比较少;

自己已经理解了上拉电阻和下拉电阻,但是有资料对两者更详细的讲解,链接如下,有时间自己好好分析分析:

http://www.360doc.com/content/13/0812/13/13093294_306597566.shtml

3. STM32的IO做输入使用的时候,是通过调用函数GPIO_ReadInputDataBit( )来读取IO口的状态的,程序功能:通过按键控制小灯的亮灭,三个按键对应得IO分别是PA15、PC5、PA0,因为PA15占用了JTAG的一个IO,所以程序中需要将JTAG禁止,Key.c函数如下:

#include"key.h"#include"delay.h"//按键初始化函数,PA15和PC5设置成输入void KEY_Init(void){  GPIO_InitTypeDef GPIO_InitStructure;  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);GPIO_InitStrucrute.GPIO_Pin=GPIO_Pin_15;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;设置上拉输入;GPIO_Init(GPIOA,&GPIO_InitStructure); 初始化GPIOA15;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIOC,&GPIO_InitStructure); 初始化GPIOC5;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;设置为输入,默认下来;GPIO_Init(GPIOA,&GPIO_InitStructure);初始化GPIOA0;}

按键扫描模式那里的程序没看懂,啥意思???明天继续编辑本文档;