航順芯片HK32F03X系列采用的是Cortex-M0內(nèi)核架構(gòu),該系列產(chǎn)品均支持內(nèi)部高速時(shí)鐘HSI,即設(shè)計(jì)上把內(nèi)部8M時(shí)鐘直接作為倍頻基準(zhǔn)。這是國(guó)外S**32F03X所不具備的功能,因?yàn)槠渲挥蠬SI/2,也就是4M時(shí)鐘,作為倍頻基準(zhǔn),然后通過(guò)最大16倍的PLL鎖相環(huán)倍頻到64MHz。而很多客戶應(yīng)用對(duì)主頻有要求,即希望使用內(nèi)部晶振讓系統(tǒng)跑72MHz,就沒(méi)辦法實(shí)現(xiàn)。對(duì)航順HK32F03X系列如何實(shí)現(xiàn)系統(tǒng)主頻升級(jí)到72M做一個(gè)簡(jiǎn)單介紹。
HK32F0X系列的內(nèi)部時(shí)鐘樹(shù)
首先我們來(lái)看下HK32F0X系列的內(nèi)部時(shí)鐘樹(shù)
圖1 內(nèi)部時(shí)鐘樹(shù)
從上面的時(shí)鐘內(nèi)部圖我們可以看到內(nèi)部產(chǎn)生的56MHz的時(shí)鐘可以直接作為系統(tǒng)時(shí)鐘,或者經(jīng)過(guò)4分頻成14MHz之后作為系統(tǒng)時(shí)鐘和ADC時(shí)鐘。本文重點(diǎn)介紹56M時(shí)鐘經(jīng)過(guò)7分頻成8MHz作為HSI,然后倍頻到72M的方法,這樣可以省掉外部晶振,方便PCB布板,降低BOM成本。通過(guò)以下圖示我們可以清晰地看到HK32F03X增加了寄存器RCC_CFGR4,其中PPSS位作為HSE和HIS的開(kāi)關(guān)選擇,所以我們通過(guò)設(shè)置此位為1以選擇內(nèi)部HSI時(shí)鐘作為倍頻的基準(zhǔn)時(shí)鐘。
圖2 局部放大圖
圖3 CFGR4 說(shuō)明
下面以MDK5(Keil5.0以上版本)編譯軟件來(lái)做講解首先我們來(lái)看下HK32F0X系列的內(nèi)部時(shí)鐘樹(shù)◆首先我們找到系統(tǒng)時(shí)鐘初始化代碼
我們可以看到系統(tǒng)時(shí)鐘在void SystemInit (void) 里面初始化,而工程的啟動(dòng)文件startup_stm32f0xx.s里面已經(jīng)調(diào)用了此函數(shù),如下圖:
所以我們只要修改SetSysClock函數(shù)里面的配置就可以了,這樣不用在Main函數(shù)里面去做系統(tǒng)時(shí)鐘的配置
◆其次定義寄存器RCC_CFGR4以及PPSS位
可以直接在system_stm32f0xx.c 文件開(kāi)頭定義
0x400210e8 是寄存器地址 0x00000100是位8為1 PPSS位為1
◆最后修改SetSysClock函數(shù)
增加以下一行代碼 選擇HSI作為基準(zhǔn)
修改倍頻基準(zhǔn)RCC_CFGR_PLLSRC 這個(gè)是選擇來(lái)自RCC_CFGR4.PPSS
HSI作為基準(zhǔn)時(shí)鐘配置代碼如下: