版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
./第八章STM8S207時鐘編程及其實例本章介紹STM8S207的時鐘編程。STM8S207時鐘控制器功能強大而靈活易用,允許程序運行中將主時鐘從一個時鐘源切換到另一個時鐘源,而且同一個時鐘源可以任意更改分頻系數(shù)。8.1STM8時鐘控制簡介時鐘控制器功能強大而且靈活易用。其目的在于使用戶在獲得最好性能的同時,亦能保證消耗的功率最低。用戶可獨立地管理各個時鐘源,并將它們分配到CPU或各個外設(shè)。主時鐘和CPU時鐘均帶有預(yù)分頻器。具有安全可靠的無故障時鐘切換機制,可在程序運行中將主時鐘從一個時鐘源切換到另一個時鐘源??闺姶鸥蓴_時鐘配置寄存器為了避免由電磁干擾造成的對應(yīng)用程序誤寫操作或系統(tǒng)掛起,大多數(shù)關(guān)鍵的時鐘配置寄存器都有一個互補寄存器與之相對應(yīng)。系統(tǒng)將會自動檢測這些關(guān)鍵寄存器與其互補寄存器之間是否匹配。如果不匹配,則產(chǎn)生一個EMS復(fù)位,從而使應(yīng)用程序恢復(fù)到正常操作。詳情請參見時鐘寄存器描述。1、主時鐘源介紹下面4種時鐘源可用做主時鐘1、1-24MHz高速外部晶振〔HSE2、最大24MHz高速外部時鐘信號3、16MHz高速部RC振蕩器〔HSI4、128KHz低速部RC〔LSI所以總的來說可以分為三種時鐘源,HSE、HSI、LSI2、時鐘樹,如下圖所示由上圖可以發(fā)現(xiàn),作為f_cpu的時鐘源可以來源于f_hse、f_hsi經(jīng)過HSIDIV分頻后的時鐘、f_lsi這三個時鐘源。而選擇開關(guān)在CKM[7:0]中。由此事實上可以作為f_master的時鐘源頻率有:外部HSE24MHz部高速HSI16MHz、2分頻的8MHz、4分頻的4MHz、8分頻的2MHz〔復(fù)位默認時鐘源部低速LSI128KHz上面得到的頻率是f_master的頻率,然后f_master還可以通過CPUDIV來分頻后提供f_cpu的時鐘,CPUDIV可以為1、2、4、8、16、32、64、128分頻,最終得到是CPU的時鐘頻率f_cpu。3、時鐘切換時鐘切換功能為用戶提供了一種易用、快速、安全的從一個時鐘源切換到另一個時鐘源的途徑。<1>、系統(tǒng)啟動為使系統(tǒng)快速啟動,復(fù)位后時鐘控制器自動使用HSI的8分頻<HSI/8>做為主時鐘〔2MHz。其原因為HSI的穩(wěn)定時間短,而8分頻可保證系統(tǒng)在較差的VDD條件下安全啟動。一旦主時鐘源穩(wěn)定,用戶程序可將主時鐘切換到另外的時鐘源。<2>、主時鐘切換的過程用戶可選擇下面兩種方式切換時鐘源:自動切換、手動切換自動切換使用戶可使用最少的指令完成時鐘源的切換。應(yīng)用軟件可繼續(xù)其它操作而不用考慮切換事件所占的確切時間。具體方法在實例中講解手動切換與自動切換不同,不能夠立即切換,但它允許用戶精確地控制切換事件發(fā)生的時間。具體方法在實例中講解8.2時鐘控制寄存器及設(shè)置第六章的IO口實驗之所以能正常運行的原因是在于STM8S207上電復(fù)位后有默認的時鐘源,所以可以正常工作,但是為了更好使用和理解STM8S207是有必要清楚掌握STM8S207的時鐘編程。1、主時鐘切換寄存器CLK_SWR由上面的時鐘樹可知,CLK_SWR對應(yīng)的就是CKM[7:0],我也很好奇為什么不一致。CLK_SWR有特定的值才有效,是選擇三個時鐘源之一作為f_master的時鐘輸入。具體如下所示:0xE1:HSI為主時鐘源<復(fù)位值>0xD2:LSI為主時鐘源<僅當(dāng)LSI_EN選項位為1時>0xB4:HSE為主時鐘源2、主時鐘狀態(tài)寄存器CLK_CMSR對應(yīng)著CLK_SWR,由硬件置位或清除。用以指示當(dāng)前所選的主時鐘源。如果該寄存器中的值為無效值,則產(chǎn)生MCU復(fù)位0xE1:HSI為主時鐘源<復(fù)位值>0xD2:LSI為主時鐘源<僅當(dāng)LSI_EN選項位為1時>0xB4:HSE為主時鐘源3、時鐘分頻寄存器CLK_CKDIVR這個寄存器對應(yīng)了時鐘樹中的HSIDIV以及CPUDIV,正如前面所說的HSIDIV可以把部高速RC時鐘源分頻后才對f_master提供時鐘周期;CPUDIC就是把f_master的時鐘周期分頻后再對f_cpu提供時鐘周期。具體分頻倍數(shù)為:HSIDIV[1:0]:高速部時鐘預(yù)分頻器,由軟件寫入,用于指定HSI分頻因子。00:fHSI=fHSIRC輸出01:fHSI=fHSIRC輸出/210:fHSI=fHSIRC輸出/411:fHSI=fHSIRC輸出/8CPUDIV[2:0]:CPU時鐘預(yù)分頻器,由軟件寫入,用于指定CPU時鐘預(yù)分頻因子。000:fCPU=fMASTER001:fCPU=fMASTER/2010:fCPU=fMASTER/4011:fCPU=fMASTER/8100:fCPU=fMASTER/16101:fCPU=fMASTER/32110:fCPU=fMASTER/64111:fCPU=fMASTER/1284、切換控制寄存器CLK_SWCR這個寄存器主要是查看時鐘源的切換標志位,具體含義如下:SWIF:時鐘切換中斷標志位由硬件置位或軟件寫0清除。該位的含義取決于SWEN位的狀態(tài)。手動切換模式下<SWEN=0>:0:目標時鐘源未準備就緒1:目標時鐘源準備就緒自動切換模式下<SWEN=0>:0:無時鐘切換事件發(fā)生1:有時鐘切換事件發(fā)生SWIEN:時鐘切換中斷使能由軟件置位或清除0:時鐘切換中斷禁用1:時鐘切換中斷使能SWEN:切換啟動/停止由軟件置位或清除。向該位寫1將切換主時鐘至寄存器CLK_SWR指定的時鐘源。0:禁止時鐘切換的執(zhí)行1:使能時鐘切換的執(zhí)行SWBSY:切換忙由硬件置位或清除??捎绍浖宄詮?fù)位時鐘切換過程。0:無時鐘切換在進行。1:時鐘切換正在進行。除上面上面主要涉及到的寄存器之外還有部時鐘寄存器CLK_ICKR外部時鐘寄存器CLK_ECKR外設(shè)時鐘門控寄存器1CLK_PCKENR1外設(shè)時鐘門控寄存器2CLK_PCKENR2時鐘安全系統(tǒng)寄存器CLK_CSSR可配置時鐘輸出寄存器CLK_CCORHIS時鐘修正寄存器CLK_HSITRIMRSWIM時鐘控制寄存器CLK_SWIMCCR這些寄存器在本章最后小節(jié)中才略為說明,時鐘編程主要以前面3個寄存器有關(guān)。例如CLK_SWR是選擇時鐘源、CLK_SWCR是時鐘切換的控制寄存器,控制切換過程的設(shè)置而CLK_CKDIVR是設(shè)置HIS的分頻系數(shù)和f_cpu的分頻系數(shù)8.3時鐘編程基礎(chǔ)應(yīng)用為了從不同角度理解時鐘編程,這節(jié)分三個基礎(chǔ)例程分別實現(xiàn)CPU和部高速時鐘分頻例程、自動切換時鐘源例程以及手動切換時鐘源例程。8.3.1CPU分頻以及HIS分頻例程時鐘編程本身并不需要外部設(shè)備,為了檢驗時鐘分頻的效果,在這里采用了一個LED燈閃耀的效果來檢驗時鐘的快慢,具體實現(xiàn)是相同的延時函數(shù),在不同的時鐘頻率下跑的效果有很大差異,這樣就達到了檢查實驗的效果。如下圖所示:在這里使用了LED1,也就是PD0端口,對應(yīng)的IO口操作在前一章已經(jīng)有過詳細介紹。本實驗操作的寄存器只有一個,就是CLK_CKDIVR,具體如下所示:HSIDIV[1:0]:高速部時鐘預(yù)分頻器,由軟件寫入,用于指定HSI分頻因子。00:fHSI=fHSIRC輸出01:fHSI=fHSIRC輸出/210:fHSI=fHSIRC輸出/411:fHSI=fHSIRC輸出/8<默認>CPUDIV[2:0]:CPU時鐘預(yù)分頻器,由軟件寫入,用于指定CPU時鐘預(yù)分頻因子。000:fCPU=fMASTER001:fCPU=fMASTER/2010:fCPU=fMASTER/4011:fCPU=fMASTER/8100:fCPU=fMASTER/16101:fCPU=fMASTER/32110:fCPU=fMASTER/64111:fCPU=fMASTER/128程序代碼如下:/*每一個時鐘分頻周期為閃耀燈5次HSICPU1:116MHSICPU1:44MHSICPU2:42M*/#include"iostm8s207rb.h"voiddelay_ms<intvalue>;intmain<void>{inti;//配置PD0為輸出PD_DDR_DDR0=1;PD_CR1_C10=1;PD_CR2_C20=0;PD_ODR_ODR0=1;while<1>{//HSICPU1:116MCLK_CKDIVR=0x00;for<i=0;i!=10;++i>{PD_ODR_ODR0=~PD_ODR_ODR0;delay_ms<100>;}delay_ms<100>;//HSICPU1:44MCLK_CKDIVR_HSIDIV=0;CLK_CKDIVR_CPUDIV=2;for<i=0;i!=10;++i>{PD_ODR_ODR0=~PD_ODR_ODR0;delay_ms<100>;}delay_ms<100>;//HSICPU2:42MCLK_CKDIVR_HSIDIV=1;CLK_CKDIVR_CPUDIV=2;for<i=0;i!=10;++i>{PD_ODR_ODR0=~PD_ODR_ODR0;delay_ms<100>;}delay_ms<100>;}}/*********************************************簡單延時*********************************************/voiddelay_ms<intvalue>{inti,j;if<value<1>value=1;for<i=0;i!=value;++i>for<j=0;j!=5000;++j>;}8.3.2自動切換時鐘源因為STM8S單片機上電復(fù)位是采用了部時鐘源HIS,所以在這里實現(xiàn)的功能是切換外部時鐘源。由于STM8S207開發(fā)板使用的外部晶振是24M,在主頻大于16M以上時,需要更改選項字,這里降低實驗的難易程度,決定在這里采用外部時鐘然后通過CPUDIV2分頻得到的f_cpu主頻為12M自動切換時鐘源的對應(yīng)步驟:1、設(shè)置切換控制寄存器<CLK_SWCR>中的位SWEN,使能切換機制。2、向主時鐘切換寄存器<CLK_SWR>寫入一個8位的值,用以選擇目標時鐘源。寄存器CLK_SWCR中的SWBSY被硬件置位,目標源振蕩器啟動。原時鐘源依然被用于驅(qū)動核和外設(shè)。一旦目標時鐘源穩(wěn)定,寄存器CLK_SWR中的值將被復(fù)制到主時鐘狀態(tài)寄存器<CLK_CMSR>中去。此時,SWBSY位被清除,新時鐘源替代舊時鐘源。寄存器CLK_SWCR中的標志位SWIF被置位,如果SWIEN為1,則會產(chǎn)生一個中斷。硬件采用8.3.1的電路圖,也是通過LED實現(xiàn)檢測效果詳細代碼如下:#include"iostm8s207rb.h"voiddelay_ms<intvalue>;intmain<void>{inti;//配置PD0為輸出模式PD_DDR_DDR0=1;PD_CR1_C10=1;//推挽輸出PD_CR2_C20=0;PD_ODR_ODR0=1;//LED1滅while<1>{//自動切換方式CLK_SWCR_SWIEN=0;//禁止時鐘切換中斷CLK_SWCR_SWEN=1;//使能切換機制CLK_SWR=0xB4;//0XE1:HSI為主時鐘源〔復(fù)位值,部16MHz//0XD2:LSI為主時鐘源〔僅當(dāng)LSI_EN選項為1時//0XB4:HSE為主時鐘源〔外部時鐘CLK_CKDIVR=1;//CPUDIV2分頻//切換后的時鐘為12Mdelay_ms<100>;for<i=0;i!=10;++i>{PD_ODR_ODR0=~PD_ODR_ODR0;delay_ms<100>;}//自動切換方式CLK_SWCR_SWIEN=0;//禁止時鐘切換中斷CLK_SWCR_SWEN=1;//使能切換機制CLK_SWR=0xE1;//0XE1:HSI為主時鐘源〔復(fù)位值,部16MHz//0XD2:LSI為主時鐘源〔僅當(dāng)LSI_EN選項為1時//0XB4:HSE為主時鐘源〔外部時鐘//切換后的時鐘時16M/2=8Mdelay_ms<100>;for<i=0;i!=10;++i>{PD_ODR_ODR0=~PD_ODR_ODR0;delay_ms<100>;}}}/*********************************************簡單延時程序*********************************************/voiddelay_ms<intvalue>{inti,j;if<value<1>value=1;for<i=0;i!=value;++i>for<j=0;j!=5000;++j>;}8.3.3手動切換時鐘源手動切換與自動切換不同,不能夠立即切換,但它允許用戶精確地控制切換事件發(fā)生的時間。具體操作步驟:1、向主時鐘切換寄存器<CLK_SWR>寫入一個8位的值,用以選擇目標時鐘源。寄存器CLK_SWCR中的SWBSY被硬件置位,目標源振蕩器啟動。原時鐘源依然被用于驅(qū)動核和外設(shè)。2、用戶軟件需等待至目標時鐘源穩(wěn)定。寄存器CLK_SWCR中的標志位SWIF用以指示目標時鐘源是否已穩(wěn)定,如果SWIEN為1,則會產(chǎn)生一個中斷。3、最后,由用戶軟件在所選的時間點,設(shè)置寄存器CLK_SWCR中的位SWEN,執(zhí)行切換。在前兩個例程的基礎(chǔ)上,我們可以進行時鐘編程的第三個例程了,具體的步驟如上所示,下面進行我們的軟件編寫。/*************************************************************手動切換順序1、向CLK_SWR寫入一個數(shù)據(jù),選擇目標時鐘源2、等待CLK_SWCR_SWIF=1,時鐘穩(wěn)定3、設(shè)置CLK_SWCR_SWEN=1,開啟時鐘*************************************************************/#include"iostm8s207rb.h"voiddelay_ms<intvalue>;intmain<void>{inti;//配置LED1PD_DDR_DDR0=1;PD_CR1_C10=1;//推挽輸出PD_CR2_C20=0;PD_ODR_ODR0=1;//LED1滅CLK_SWCR_SWIEN=0;//禁止中斷CLK_CKDIVR=1;//CPUDIV設(shè)置為2分頻while<1>{//手動切換方式CLK_SWR=0xB4;//0XE1:HSI為主時鐘源〔復(fù)位值,部16MHz//0XD2:LSI為主時鐘源〔僅當(dāng)LSI_EN選項為1時//0XB4:HSE為主時鐘源〔外部時鐘while<CLK_SWCR_SWIF==0>;//等待時鐘穩(wěn)定,輸出時鐘為12MCLK_SWCR_SWEN=1;//切換時鐘for<i=0;i!=10;++i>{PD_ODR_ODR0=~PD_ODR_ODR0;delay_ms<100>;}delay_ms<100>;//手動切換方式CLK_SWR=0xE1;//0XE1:HSI為主時鐘源〔復(fù)位值,部16MHz//0XD2:LSI為主時鐘源〔僅當(dāng)LSI_EN選項為1時//0XB4:HSE為主時鐘源〔外部時鐘while<CLK_SWCR_SWIF==0>;//等待時鐘穩(wěn)定,輸出時鐘為8MCLK_SWCR_SWEN=1;//切換時鐘for<i=0;i!=10;++i>{PD_ODR_ODR0=~PD_ODR_ODR0;delay_ms<100>;}delay_ms<100>;}}/*********************************************簡單延時程序*********************************************/voiddelay_ms<intvalue>{inti,j;if<value<1>value=1;for<i=0;i!=value;++i>for<j=0;j!=5000;++j>;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二手房專業(yè)獨家代理權(quán)合同模板版
- 2025年智能汽車分期付款抵押合同
- 2025年度個人與企業(yè)間設(shè)備分期借款合同2篇
- 二零二五年度棉花種植保險合同4篇
- 2025年度土地租賃合同租賃期滿后續(xù)約協(xié)議
- 二零二五年度體育休閑用地及體育場館房屋轉(zhuǎn)讓合同
- 二零二五年度口紅租賃與品牌授權(quán)合作合同3篇
- 二零二五年度醫(yī)療設(shè)備融資租賃合同模板9篇
- 2025年教育培訓(xùn)機構(gòu)兼職招生銷售合同3篇
- 2025年度辦公樓保潔服務(wù)合同規(guī)范集3篇
- 華為HCIA-Storage H13-629考試練習(xí)題
- Q∕GDW 516-2010 500kV~1000kV 輸電線路劣化懸式絕緣子檢測規(guī)程
- 遼寧省撫順五十中學(xué)2024屆中考化學(xué)全真模擬試卷含解析
- 2024年湖南汽車工程職業(yè)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 家長心理健康教育知識講座
- GB/T 292-2023滾動軸承角接觸球軸承外形尺寸
- 軍人結(jié)婚函調(diào)報告表
- 民用無人駕駛航空器實名制登記管理規(guī)定
- 北京地鐵6號線
- 航空油料計量統(tǒng)計員(初級)理論考試復(fù)習(xí)題庫大全-上(單選題匯總)
評論
0/150
提交評論