STM8S103K3: 外部時鐘 + 內(nèi)部時鐘 的切換。
首先看一下 STM8S103K3 的時鐘結(jié)構(gòu)圖,可以幫助你很好的理解。
這里有幾個時鐘,就是圖中標識的時鐘,需要弄清楚一下:fHSE: 外部高速晶振時鐘,它是由外部晶振產(chǎn)生,大小由外部晶振大小決定,STM8S的外部晶振范圍:1-24M,看圖中的”HSE OSC 1-24M“。
fHSI:內(nèi)部RC高速時鐘,它是由內(nèi)部的RC震蕩電路產(chǎn)生的,其值16M。但是可以經(jīng)過后面的分頻器分頻,四個分頻系數(shù)可供選擇(1,2,4,8)。注:精準度比外部晶振的要稍差一些。
fMASTER:主時鐘,它是由HSE 或者 HSI提供時鐘,主要功能給外圍設(shè)備(peripherals,如I2C,SPI,ADC等)提供時鐘,還有給CPU提供時鐘源。
fCPU:cpu時鐘,它是由fMASTER經(jīng)過分頻得到,其作用就是給CPU提供時鐘,一個機械周期就是一個fCPU的時鐘周期。
下面是時鐘的源碼部分,可供大家參考。
這里寫了四段程序,分別是:使用高速內(nèi)部時鐘(寄存器版)
使用高速內(nèi)部時鐘(庫函數(shù)版)
使用外部時鐘(寄存器版)
使用外部時鐘(庫函數(shù)版)
源碼如下,看注釋應(yīng)該就可以了。
/*******************************************************************************
* Function Name : InitCpuClock.
* Description : Initial CPU clock, .
* Input : None.
* Output : None.
* Return : None.
*******************************************************************************/
static void InitCpuClock(void)
{
#if 1
// 寄存器版本 - 使用高速內(nèi)部時鐘
//Use HSI @8MHZ, div = 2; 8=16/2
CLK->ECKR &= ~CLK_ECKR_HSEEN; // 失能外時鐘
CLK->CKDIVR &= (uint8_t)(~CLK_CKDIVR_HSIDIV); // 清零內(nèi)部時鐘預(yù)分頻
CLK->CKDIVR |= CLK_PRESCALER_HSIDIV2; // 設(shè)置內(nèi)部時鐘預(yù)分頻 2; 具體可以參考數(shù)據(jù)手冊 (reference manual)
CLK->ICKR |= CLK_ICKR_HSIEN; // 使能內(nèi)部高速時鐘
while(!(CLK->ICKR&CLK_ICKR_HSIRDY)); // 等待內(nèi)部高速時鐘穩(wěn)定, 穩(wěn)定后則內(nèi)部時鐘已經(jīng)開跑了。 時鐘 = 16/2 M
#endif
#if 0
// 庫函數(shù)版本 - 使用內(nèi)部高速時鐘
//Use HSI @8MHZ, div = 2; 8=16/2
CLK_HSECmd(DISABLE); // 失能外時鐘
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2); // 設(shè)置內(nèi)部時鐘預(yù)分頻 2; 具體可以參考數(shù)據(jù)手冊 (reference manual)
CLK_HSICmd(ENABLE); // 使能內(nèi)部高速時鐘
while(!(CLK->ICKR&CLK_ICKR_HSIRDY)); // 等待內(nèi)部高速時鐘穩(wěn)定, 穩(wěn)定后則內(nèi)部時鐘已經(jīng)開跑了。 時鐘 = 16/2 M
#endif
#if 0
// 寄存器版本 - 使用外部時鐘
CLK->CKDIVR |= CLK_PRESCALER_CPUDIV1; // CPU 時鐘分頻 1,CPU時鐘 = 外部時鐘(即是外部晶振頻率)
CLK->ECKR |= CLK_ECKR_HSEEN; // 允許外部高速振蕩器工作
while(!(CLK->ECKR & CLK_ECKR_HSERDY)); // 等待外部高速振蕩器準備好
CLK->SWCR |= CLK_SWCR_SWEN; // 使能切換
CLK->SWR = CLK_SOURCE_HSE; // 選擇芯片外部的高速振蕩器為主時鐘
while(!(CLK->SWCR&CLK_SWCR_SWIF)); // 等待切換成功
CLK->SWCR &= ~(CLK_SWCR_SWEN|CLK_SWCR_SWIF); // 清除切換標志
#endif
#if 0
// 庫函數(shù)版本 - 使用外部時鐘
CLK->CKDIVR |= CLK_PRESCALER_CPUDIV1; // CPU 時鐘分頻 1,CPU時鐘 = 外部時鐘(即是外部晶振頻率)
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, // 時鐘自動切換模式,注: 參數(shù)是自動切換,不然只使用這一個函數(shù)是不能切換成功的
CLK_SOURCE_HSE, // 要切換的時鐘(這里是外部時鐘)
DISABLE, // 是否使能切換完成中斷(這里失能)
CLK_CURRENTCLOCKSTATE_ENABLE);// 是否還使能當前時鐘(這里選擇 關(guān)掉當前時鐘HSI)
CLK->SWCR &= ~(CLK_SWCR_SWEN|CLK_SWCR_SWIF); // 清除切換標志
#endif
}
上一篇:stm8時鐘源選擇配置
下一篇:STM8 時鐘源切換
推薦閱讀
史海拾趣
隨著物聯(lián)網(wǎng)市場的快速發(fā)展,Dialog Semiconductor積極布局物聯(lián)網(wǎng)領(lǐng)域。公司推出了一系列物聯(lián)網(wǎng)相關(guān)的產(chǎn)品和解決方案,包括藍牙和Wi-Fi芯片、傳感器等。這些產(chǎn)品和解決方案能夠滿足物聯(lián)網(wǎng)設(shè)備對低功耗、高可靠性通信的需求,為物聯(lián)網(wǎng)市場的發(fā)展提供了有力支持。Dialog Semiconductor的前瞻性布局使其在物聯(lián)網(wǎng)市場中占據(jù)了重要位置。
為了進一步擴大市場份額,EiKO開始實施全球化戰(zhàn)略。公司在美國、加拿大、歐洲和亞太地區(qū)設(shè)立了辦事處,以便更好地服務(wù)當?shù)乜蛻簟M瑫r,EiKO還積極參加國際照明展會和論壇,與全球同行交流經(jīng)驗和技術(shù),不斷提升自身的競爭力。
在全球化布局的過程中,EiKO也面臨著各種挑戰(zhàn)和困難。然而,公司始終堅持以客戶為中心的服務(wù)理念,通過不斷優(yōu)化產(chǎn)品和服務(wù)質(zhì)量,贏得了越來越多客戶的信賴和支持。
DAESAN公司以其獨特的設(shè)備回收與再利用技術(shù),在電子行業(yè)中嶄露頭角。起初,公司只是一個小型的設(shè)備拆卸公司,但在一次偶然的機會中,他們發(fā)現(xiàn)許多被廢棄的電子設(shè)備中,仍然含有大量可再利用的零部件和材料。于是,DAESAN公司開始專注于電子設(shè)備的回收和再利用,通過精細的拆卸和修復技術(shù),將廢舊設(shè)備轉(zhuǎn)化為新的生產(chǎn)資源。這一舉措不僅為公司帶來了可觀的利潤,也為環(huán)保事業(yè)做出了貢獻。
在電子行業(yè)的激烈競爭中,DAESAN公司也曾遭遇過困境。一次嚴重的金融危機讓公司的資金鏈幾乎斷裂,許多項目被迫中斷。然而,DAESAN公司并沒有放棄,他們積極尋求外部支持,同時加強內(nèi)部管理,降低成本,提高效率。在困境中,公司不斷總結(jié)經(jīng)驗教訓,優(yōu)化經(jīng)營策略。最終,他們成功度過了危機,實現(xiàn)了逆境中的成長。
隨著Eurofarad產(chǎn)品質(zhì)量的不斷提高和市場份額的逐步擴大,公司開始積極拓展國際市場。Eurofarad的產(chǎn)品已經(jīng)廣泛應(yīng)用于航空航天、國防、醫(yī)療、鐵路、石油勘探等領(lǐng)域,贏得了全球客戶的信賴和好評。同時,Eurofarad還與國際知名企業(yè)建立了緊密的合作關(guān)系,共同推動電子行業(yè)的發(fā)展。
1996年,依必安派特在上海外高橋保稅區(qū)設(shè)立了其在中國的首個據(jù)點——依必安派特風機(上海)有限公司。最初,它僅作為銷售為主的貿(mào)易公司,為中國市場提供德國制造的風機和電機產(chǎn)品。然而,隨著中國市場的快速增長和需求的不斷變化,依必安派特意識到僅僅作為貿(mào)易公司已無法滿足市場需求。于是,在2000年,依必安派特電氣(上海)有限公司正式成立,開始在上海本地生產(chǎn)風機和電機,標志著依必安派特從貿(mào)易到制造的轉(zhuǎn)變。
請問各位高手怎樣寫電子信息工程學科概論的結(jié)業(yè)論文 [8-)]我是長春某所大學大一的新生,我們的課里有學科概論這科, 這周學完,老師要求我們結(jié)合現(xiàn)在電子信息發(fā)展方向?qū)懸黄玻埃埃白值恼撐模也恢鯓幼觯埜魑桓呤謳蛶臀遥x謝!… 查看全部問答∨ |
|
arm板可以ping6通pc機,pc機ping6不通arm板,為什么? arm,pc機上都裝了linux,已加載ipv6模塊。 arm,pc都開好機后,如果pc機先ping6 arm,不通;arm ping6 pc機,通的;arm ping6 pc機,然后再執(zhí)行pc機 ping6 arm,通,但是隔上幾分鐘又ping6不通了。 為什么? ipv4,arm和pc機間一直都可以ping ...… 查看全部問答∨ |
|
比如一個0x50000000 ~ 0x58000000,另一個0x30000000~0x38000000,各128M,共256M,怎么使用他們?config.bib中RAM好像必須是物理連續(xù)的吧? xiexie… 查看全部問答∨ |
|
我在MSDN的網(wǎng)站上雖然能夠看到SDK的幫助文檔,但是不知道為什么里面的SAMPLE沒有的下載? 請問同志們知道那里有完整的Windows Mobile 5.0的SDK下載嗎? … 查看全部問答∨ |
本帖最后由 dontium 于 2015-1-23 13:29 編輯 新手求救,一個鎖相環(huán)電路,中心頻率40M,輸出DC--3M,不知道如何做,求大俠指點一下 [ 本帖最后由 yanghuiguang 于 2011-8-3 10:27 編輯 ] … 查看全部問答∨ |
本帖最后由 paulhyde 于 2014-9-15 03:28 編輯 mma7455靜止時,讀出數(shù)據(jù)很不穩(wěn)定,經(jīng)常跳動。請問有什么方法能讀到一個穩(wěn)定的數(shù)據(jù)?求教 … 查看全部問答∨ |
MSP430F149祥解 對頭文件做了比較詳細的注釋,記不清寄存器的人可以看看 #ifndef __msp430x14x #define __msp430x14x /************************************************************ * STANDARD BITS ************************************ ...… 查看全部問答∨ |
設(shè)計資源 培訓 開發(fā)板 精華推薦
- 人形機器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計
- 小型傾轉(zhuǎn)旋翼機的無刷直流電機驅(qū)動器設(shè)計
- 超高速攝影機電控系統(tǒng)設(shè)計
- 基于GPS自動授時的無線智能控制器的設(shè)計
- 基于PTR2000的無線氣象信息采集系統(tǒng)設(shè)計
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無人飛行器機載穩(wěn)定云臺控制系統(tǒng)的設(shè)計
- 匠芯創(chuàng)推出面向具身智能高性能實時處理器M7000
- 宇稱電子發(fā)布8通道多閾值A(chǔ)SIC芯片:重構(gòu)激光雷達產(chǎn)業(yè)格局,開啟“ASIC平權(quán)”時代
- 三星SDI與LGES將在美國設(shè)置磷酸鐵鋰電池生產(chǎn)線
- 福特汽車公司申請新專利 或?qū)⒋钶d車輛噪音控制系統(tǒng)
- 福特汽車申請新專利 福特Pro Power Onboard或新增安全模式
- 華為乾崑如何驅(qū)動中國智能汽車產(chǎn)業(yè)共創(chuàng)?
- 激光雷達VS純視覺,小米小鵬隔空交鋒
- 機器人實現(xiàn)空中變形 飛行與地面行駛模式無縫切換
- -35℃直充技術(shù)顛覆革新,邢東鋰電引領(lǐng)低溫電池進入“直充時代”!
- 硬核解讀:人形機器人跑“半馬”映射出哪些產(chǎn)業(yè)問題
- V2X 連接器產(chǎn)品綜述