自學(xué)Cortex-M3(2):按鍵實(shí)驗(yàn)
有輸出總會有輸入,今天測試一下按鍵的功能,第一節(jié)已經(jīng)說過了與GPIO端口相關(guān)的寄存器,這里不在重復(fù),想要從端口讀取數(shù)據(jù),首先把FIODIR這個(gè)寄存器設(shè)置為輸入,再從FIOPIN寄存器讀取數(shù)據(jù)就可以了,這個(gè)寄存器具有讀寫功能。下面說一下這個(gè)實(shí)驗(yàn)的電路圖,如下所示:
本文引用地址:http://m.butianyuan.cn/article/148807.htm圖1 JoySTick按鍵連線圖
關(guān)于按鍵電路還有一個(gè),不過是接在外部中斷0 上的,其電路圖如下圖所示:
這次實(shí)驗(yàn)沒有涉及到外部中斷,都是做普通的IO輸入使用的,所以在這里外部中斷就做學(xué)習(xí)總結(jié)了。下面給出這次實(shí)驗(yàn)的主程序:
/*********************************************************************************
文件名稱:mian.c
功 能: 主要調(diào)度函數(shù)及應(yīng)用函數(shù)
編譯環(huán)境: MDKV4.12
時(shí) 鐘: 外部12Mhz
日 期: 11/08/16
作 者: 懶貓愛飛
備 注:NULL
---------------------------------------------------------------------------------
修改內(nèi)容:NULL
修改日期:XXXX年xx月xx日 xx時(shí)xx分
修改人員:xxx xxx xxx
**********************************************************************************/
#includemain.h
volatile unsigned lONg SysTickCnt; /* 用于系統(tǒng)時(shí)鐘計(jì)數(shù)*/
/********************************************************************************
* 函數(shù)名稱:void SysTick_Handler (void)
* 函數(shù)功能: 系統(tǒng)節(jié)拍定時(shí)器中斷函數(shù),每1ms計(jì)數(shù)一次
* 入口參數(shù): 無
* 出口參數(shù): 無
* 備 注:無
*******************************************************************************/
void SysTick_Handler (void)
{
SysTickCnt++;
}
/********************************************************************************
* 函數(shù)名稱:void Delay (unsigned long tick)
* 函數(shù)功能: 毫秒級延時(shí)函數(shù)
* 入口參數(shù): unsigned long tick -- 延時(shí)時(shí)長
* 出口參數(shù): 無
* 備 注:無
*******************************************************************************/
void DelayMs (unsigned long tick)
{
unsigned long systickcnt;
systickcnt = SysTickCnt;
while ((SysTickCnt - systickcnt) tick);
}
/********************************************************************************
* 函數(shù)名稱:void PortInit(void)
* 函數(shù)功能: 端口初始化
* 入口參數(shù): 無
* 出口參數(shù): 無
* 備 注:無
*******************************************************************************/
void PortInit(void)
{
GPIO1->FIODIR = 0xB0000000; /* LEDs on PORT1 defined as Output */
GPIO2->FIODIR = 0x0000007C; /* LEDs on PORT2 defined as Output */
LedAllOff(); /* 初始化時(shí)熄滅所有的燈*/
}
評論