|
本帖最后由 lianyiqun 于 2015-7-8 21:43 編輯
1、首先是啟動(dòng)文件上存在區(qū)別,107的啟動(dòng)文件當(dāng)中在進(jìn)入主函數(shù)之前并沒有時(shí)鐘的初始化,但是407在main之前就有SystemInit()103如下:
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT __main
LDR R0, =__main
BX R0
ENDP
407如下:
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP
因而,我們?cè)趯?03程序的時(shí)候要注意在main函數(shù)之前寫SystemInit()函數(shù),這樣才能保證時(shí)鐘正常,但是407就少了這一步了
http://wenku.baidu.com/link?url= ... xNR_Y79wOeaG9CRxSHq
關(guān)于SystemInit()與滴答定時(shí)器在stm32f103中的使用說明如下:
void SysTick_Configuration(void)
{
if (SysTick_Config(SystemCoreClock / 100)) //SysTick配置函數(shù)
{
while (1);
}
NVIC_SetPriority(SysTick_IRQn, 0x0); //SysTick中斷優(yōu)先級(jí)設(shè)置
}
關(guān)鍵在于SysTick_Config(SystemCoreClock / 100)的理解
該函數(shù)的作用是打開計(jì)數(shù)器,設(shè)置計(jì)數(shù)周期,并使能中斷。他所傳入的參數(shù),即計(jì)數(shù)周期。
周期計(jì)算方法是:默認(rèn)情況下處理器在初始化時(shí)會(huì)調(diào)用SystemInit(),把系統(tǒng)頻率設(shè)為72Mhz,即SystemCoreClock=72000000;
可以簡(jiǎn)單理解為系統(tǒng)一秒數(shù)72000000次,那么如果我需要10ms的定時(shí)周期,只需要讓重載數(shù)為720000,就可達(dá)到要求
NVIC_SetPriority(SysTick_IRQn, 0x0); 設(shè)置優(yōu)先級(jí)為最高,應(yīng)根據(jù)自己的需要進(jìn)行調(diào)整
最后就是進(jìn)入中斷處理函數(shù)了
void SysTick_Handler(void)
{
}
|
|