Cortex-M3學(xué)習(xí)日志(二)-- 按鍵實(shí)驗(yàn)
圖1-1 Joystick按鍵連線(xiàn)圖
這次實(shí)驗(yàn)沒(méi)有涉及到外部中斷,都是做普通的IO輸入使用的,所以在這里外部中斷就做學(xué)習(xí)總結(jié)了。下面給出這次實(shí)驗(yàn)的主程序:
#include"main.h"
volatile unsigned long SysTickCnt;
void SysTick_Handler (void)
{
}
void DelayMs (unsigned long tick)
{
}
void PortInit(void)
{
}
int main(void)
{
}
上一節(jié)對(duì)程序沒(méi)有做過(guò)多的解釋?zhuān)@里詳細(xì)分析一下,工程中包含的源文件如下圖所示:
工程中startup_LPC17XX.s是M3的啟動(dòng)文件,啟動(dòng)文件由匯編語(yǔ)言寫(xiě)的,它的作用一般是下面這幾個(gè):
1)堆和棧的初始化
2)向量表定義
3)地址重映射及中斷向量表的轉(zhuǎn)移
4)設(shè)置系統(tǒng)時(shí)鐘頻率
5)中斷寄存器的初始化
6)進(jìn)入C應(yīng)用程序
工程中main.c是我寫(xiě)的應(yīng)用程序,也就是這次實(shí)驗(yàn)的程序,core_cm3.c與core_cm3.h主要是M3外圍驅(qū)動(dòng)源代碼與頭文件,使用時(shí)一般不需要修改,直接調(diào)用就可以。system_LPC17xx.c與system_LPC17xx.h是關(guān)于系統(tǒng)的文件,里面主要提供了系統(tǒng)初始化函數(shù)SystemInit(),文件中默認(rèn)情況下定義的晶振的大小為12M,使用的是外部晶振,還使用了PLL0倍頻,關(guān)于倍頻的問(wèn)題,以后慢慢再總結(jié)。芯片LPC1768的初始化主要包括時(shí)鐘配置,電源管理,功耗管理等。相比較而言,時(shí)鐘配置相對(duì)復(fù)雜,因?yàn)樗▋蓚€(gè)PLL倍頻電路,一個(gè)是主PLL0主要是為系統(tǒng)和USB提供時(shí)鐘,另一個(gè)是PLL1專(zhuān)門(mén)
下面簡(jiǎn)要總結(jié)一下main()函數(shù),首先是系統(tǒng)初始化函數(shù)SystemInit(),上面說(shuō)過(guò)它在system_LPC17xx.c這個(gè)源文件中,這個(gè)函數(shù)主要完成了對(duì)時(shí)鐘的配置,系統(tǒng)功耗PCONP,時(shí)鐘輸出,flash加速等系統(tǒng)資源配置。如果要進(jìn)行修改可以參考源文件的修改方法,雖然是英文注釋?zhuān)挤浅:?jiǎn)單,有興趣的可以打開(kāi)看看,不過(guò)一般情況下我們拿來(lái)直接用就好了不用修改的。
函數(shù)
最后再說(shuō)一下數(shù)據(jù)類(lèi)型的問(wèn)題,在8位機(jī)中數(shù)據(jù)位找一般就是8位的所以,定義變量時(shí)一般選用單字節(jié)處理速度會(huì)快些,但到了32位機(jī)中,數(shù)據(jù)位寬一般是32位的,所以定義變量時(shí)一般用4字節(jié)會(huì)好些。在core_cm3.c中有關(guān)于數(shù)據(jù)類(lèi)型的定義,有興趣的可以打開(kāi)看看。
評(píng)論