標(biāo)題: stm32f103系列與stm32f407系列的區(qū)別 [打印本頁(yè)]

作者: lianyiqun    時(shí)間: 2015-7-8 21:40
標(biāo)題: stm32f103系列與stm32f407系列的區(qū)別
本帖最后由 lianyiqun 于 2015-7-8 21:43 編輯

1、首先是啟動(dòng)文件上存在區(qū)別,107的啟動(dòng)文件當(dāng)中在進(jìn)入主函數(shù)之前并沒(méi)有時(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è)趯?xiě)103程序的時(shí)候要注意在main函數(shù)之前寫(xiě)SystemInit()函數(shù),這樣才能保證時(shí)鐘正常,但是407就少了這一步了

http://wenku.baidu.com/link?url= ... xNR_Y79wOeaG9CRxSHq


關(guān)于SystemInit()與滴答定時(shí)器在stm32f103中的使用說(shuō)明如下:

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ù)的作用是打開(kāi)計(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)
{
   
}





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1