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;
}