第二節(jié)最小系統(tǒng)時(shí)鐘_第1頁
第二節(jié)最小系統(tǒng)時(shí)鐘_第2頁
第二節(jié)最小系統(tǒng)時(shí)鐘_第3頁
第二節(jié)最小系統(tǒng)時(shí)鐘_第4頁
第二節(jié)最小系統(tǒng)時(shí)鐘_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第二節(jié) 最小系統(tǒng)最小系統(tǒng) 最小系統(tǒng)指arm能夠運(yùn)行所需要的最基本的條件 包括:電源,時(shí)鐘源,復(fù)位電路,調(diào)試接口,arm處理器(自帶128k閃存,20ksram)stm32f103vbt6電源時(shí)鐘源復(fù)位電路調(diào)試電源芯片要求2.03.6v的操作電壓(vdd)當(dāng)主電源vdd關(guān)閉時(shí),實(shí)時(shí)時(shí)鐘(rtc)和備用寄存器可以從vbat供電為提高轉(zhuǎn)換精度,adc可以有一個(gè)獨(dú)立的電源供應(yīng),以不受pcb噪音的干擾電源方案電路由穩(wěn)定的電源vdd供電 如果使用adc,vdd的范圍必須在2.4v到3.6v之間,否則為2v到3.6v vdd引腳必須連接到帶外部穩(wěn)定電容的vdd電源。 (5個(gè)100nf的陶瓷電容和一個(gè)鉭電容(

2、最小值4.7f,典型值10f) vbat引腳必須被連接到外部電池(1.8v vbat cr | =0 x00010000;使能 while(!rcc-cr.hserdy);等待 rcc-cfgr=0 x01;選擇2、設(shè)置外部晶振提供pll作為系統(tǒng)時(shí)鐘rcc-cr | =0 x00010000;使能hsewhile(!rcc-cr.hserdy);等待rcc-cr | =0 x01000000;使能pllwhile(!rcc-cr.pllrdy);等待rcc-cfgr=0 x10;選擇pll 例:設(shè)置pll的時(shí)鐘為48mhz 分析:外部時(shí)鐘為8m,因此,需要pll倍頻6倍輸出 rcc-cfgr

3、|=0 x0010 0000 時(shí)鐘中斷寄存器 (rcc_cir) 偏移地址: 08h 復(fù)位值: 0000 0000h apb2 外設(shè)復(fù)位寄存器 (rcc_apb2rstr) 偏移地址: 0ch 復(fù)位值: 0000 0000h apb1 外設(shè)復(fù)位寄存器 (rcc_apb1rstr) 偏移地址:10h 復(fù)位值:0000 0000h ahb 外設(shè)時(shí)鐘使能寄存器 (rcc_ahbenr) 偏移地址:14h 復(fù)位值:0000 0014h ahb 外設(shè)時(shí)鐘使能寄存器 (rcc_ahbenr) 偏移地址:14h 復(fù)位值:0000 0014h apb2 外設(shè)時(shí)鐘使能寄存器(rcc_apb2enr) 偏移地址:

4、18h 復(fù)位值:0000 0000h 訪問:字,半字和字節(jié)訪問 apb1 外設(shè)時(shí)鐘使能寄存器(rcc_apb1enr) 偏移地址:1ch 復(fù)位值:0000 0000h apb2 外設(shè)時(shí)鐘使能寄存器(rcc_apb2enr) 例:使能usart1的時(shí)鐘 rcc-apb2enr |= 0 x4000; 同時(shí)使能usart1,sp1,tim1和adc2的時(shí)鐘 rcc-apb2enr |= 0 x5b00; 備份域控制寄存器 (rcc_bdcr) 偏移地址:20h 復(fù)位值:0000 0000h,只能由備份域復(fù)位有效復(fù)位 控制/狀態(tài)寄存器 (rcc_csr) 偏移地址:24h 復(fù)位值:0c00 0000

5、h 復(fù)位標(biāo)志及低速時(shí)鐘就緒使能控制 時(shí)鐘安全系統(tǒng)(css) 時(shí)鐘安全系統(tǒng)可以通過軟件被激活。一旦其被激活,時(shí)鐘監(jiān)測器將在hse振蕩器啟動(dòng)延遲后被使能,并在hse時(shí)鐘關(guān)閉后關(guān)閉。 作用:如果hse時(shí)鐘發(fā)生故障,此振蕩器自動(dòng)地被關(guān)閉,時(shí)鐘失效事件將被送到高級(jí)定時(shí)器tim1的斷路輸入端,并產(chǎn)生時(shí)鐘安全中斷cssi,允許軟件完成營救操作。此cssi中斷被連接到cortex-m3 nmi的中斷。 注意: 一旦css被激活,并且hse時(shí)鐘出現(xiàn)故障,css中斷就產(chǎn)生,并且nmi也自動(dòng)產(chǎn)生。nmi將被不斷執(zhí)行,直到css中斷掛起位被清除。因此,在nmi的處理程序中必須通過設(shè)置時(shí)鐘中斷寄存器(rcc_cir)里

6、的cssc位來清除css中斷。 如果hse振蕩器被直間或間接地作為系統(tǒng)時(shí)鐘來用的話,(間接的意思是:它被作為pll輸入時(shí)鐘,并且pll時(shí)鐘被作為系統(tǒng)時(shí)鐘),時(shí)鐘故障將導(dǎo)致系統(tǒng)時(shí)鐘自動(dòng)切換到hsi振蕩器,同時(shí)外部hse振蕩器被關(guān)閉。 在時(shí)鐘失效時(shí),如果hse振蕩器時(shí)鐘(被分頻或未被分頻)是用作系統(tǒng)時(shí)鐘的pll的輸入時(shí)鐘,pll也將被關(guān)閉。rcc庫函數(shù)rcc寄存器結(jié)構(gòu),rcc_typedeff,在文件“stm32f10 x_map.h”中定義如下: typedef struct vu32 cr; vu32 cfgr; vu32 cir; vu32 apb2rstr; vu32 apb1rstr;

7、vu32 ahbenr; vu32 apb2enr; vu32 apb1enr; vu32 bdcr; vu32 csr; rcc_typedef; rcc外設(shè)聲明于文件“stm32f10 x_map.h”: #define periph_base (u32)0 x40000000) #define apb1periph_base periph_base #define apb2periph_base (periph_base + 0 x10000) #define ahbperiph_base (periph_base + 0 x20000) #define rcc_base (ahbper

8、iph_base + 0 x1000) . #ifdef _rcc #define rcc (rcc_typedef *) rcc_base) #endif /*_rcc */ rcc庫函數(shù)rcc庫函數(shù)使用hse時(shí)鐘,程序設(shè)置時(shí)鐘參數(shù)流程流程:1、將rcc寄存器重新設(shè)置為默認(rèn)值 rcc_deinit;2、打開外部高速時(shí)鐘晶振hse rcc_hseconfig(rcc_hse_on);3、等待外部高速時(shí)鐘晶振工作 hsestartupstatus = rcc_waitforhsestartup();4、設(shè)置ahb時(shí)鐘 rcc_hclkconfig;5、設(shè)置高速apb時(shí)鐘 rcc_pclk2con

9、fig;6、設(shè)置低速apb時(shí)鐘 rcc_pclk1config;7、設(shè)置pll rcc_pllconfig;8、打開pll rcc_pllcmd(enable);9、等待pll工作 while(rcc_getflagstatus(rcc_flag_pllrdy) = reset) 10、設(shè)置系統(tǒng)時(shí)鐘 rcc_sysclkconfig;11、判斷,直到pll是系統(tǒng)時(shí)鐘 while(rcc_getsysclksource() != 0 x08)12、打開要使用的外設(shè)時(shí)鐘 rcc_apb2periphclockcmd()/rcc_apb1periphclockcmd()實(shí)驗(yàn)三 rcc時(shí)鐘 主程序:

10、int main(void) #ifdef debug debug(); #endif /* configure the system clock frequency, hclk, pclk2 and pclk1 prescalers */ setsysclock();實(shí)驗(yàn)三 rcc時(shí)鐘void setsysclock(void) #if defined sysclk_hse setsysclocktohse();#elif defined sysclk_freq_20mhz setsysclockto20();#elif defined sysclk_freq_36mhz setsysclo

11、ckto36();#elif defined sysclk_freq_48mhz setsysclockto48();#elif defined sysclk_freq_72mhz setsysclockto72();#endif /* if none of the define above is enabled, the hsi is used as system clock source (default after reset) */ /#define sysclk_hse/#define sysclk_freq_20mhz/#define sysclk_freq_36mhz/#defi

12、ne sysclk_freq_48mhz#define sysclk_freq_72mhzrcc-cfgr |=0 x001c 0000實(shí)驗(yàn)三 rcc時(shí)鐘void setsysclockto72(void) /* sysclk, hclk, pclk2 and pclk1 configuration -*/ /* rcc system reset(for debug purpose) */ rcc_deinit( ); /* enable hse */ rcc_hseconfig(rcc_hse_on); /* wait till hse is ready */ hsestartupstatu

13、s = rcc_waitforhsestartup(); if (hsestartupstatus = success) /* enable prefetch buffer */ flash_prefetchbuffercmd(flash_prefetchbuffer_enable); /* flash 2 wait state */ flash_setlatency(flash_latency_2); /* hclk = sysclk */ rcc_hclkconfig(rcc_sysclk_div1); /* pclk2 = hclk */ rcc_pclk2config(rcc_hclk

14、_div1); void rcc_deinit(void) /* set hsion bit */ rcc-cr |= (u32)0 x00000001; /* reset sw1:0, hpre3:0, ppre12:0, ppre22:0, adcpre1:0 and mco2:0 bits */ rcc-cfgr &= (u32)0 xf8ff0000; /* reset hseon, csson and pllon bits */ rcc-cr &= (u32)0 xfef6ffff; /* reset hsebyp bit */ rcc-cr &= (u32)

15、0 xfffbffff; /* reset pllsrc, pllxtpre, pllmul3:0 and usbpre bits */ rcc-cfgr &= (u32)0 xff80ffff; /* disable all interrupts */ rcc-cir = 0 x00000000;實(shí)驗(yàn)三 rcc時(shí)鐘void setsysclockto72(void) /* sysclk, hclk, pclk2 and pclk1 configuration -*/ /* rcc system reset(for debug purpose) */ rcc_deinit( ); /*

16、 enable hse */ rcc_hseconfig(rcc_hse_on); /* wait till hse is ready */ hsestartupstatus = rcc_waitforhsestartup(); if (hsestartupstatus = success) /* enable prefetch buffer */ flash_prefetchbuffercmd(flash_prefetchbuffer_enable); /* flash 2 wait state */ flash_setlatency(flash_latency_2); /* hclk = sysclk */ rcc_hclkconfig(rcc_sysclk_div1); /* pclk2 = hclk */ rcc_pclk2config(rcc_hclk_div1); void rcc_hseconfig(u32 rcc_hse)/* reset hseon bit */ rcc-cr &= cr_hseon_reset; /* reset hsebyp bit */ rcc-cr &= cr_hsebyp_reset;switch(rcc_hse) cas

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論