一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32中的SysTick時鐘源來自哪里?

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-03 14:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

有位朋友在后臺大概問了這樣一個問題:STM32的SysTick時鐘源是來自Cortex系統(tǒng)定時器嗎?

引伸:

為什么STM32CubeMX中Cortex系統(tǒng)定時器可選擇1分頻(和8分頻)?

1寫在前面

看到這個問題,我在想,這位朋友可能沒有認(rèn)真看手冊,同時也存在一個誤區(qū)。

我順便也搜索了一下,網(wǎng)上很多文章都說到:SysTick時鐘源是來自Cortex系統(tǒng)定時器,就是那個有8分頻的時鐘

但是,我們實(shí)際應(yīng)用中,SysTick時鐘源真的是來自這個Cortex系統(tǒng)定時器嗎?

2

SysTick時鐘初始化代碼

不管是使用標(biāo)準(zhǔn)外設(shè)庫,還是HAL庫,你初始化SysTick,都會調(diào)用內(nèi)核中的SysTick_Config函數(shù)。

比如:

SysTick_Config(SystemCoreClock / 1000);

初始化調(diào)用這段代碼之后,SysTick將會實(shí)現(xiàn)1ms中斷一次。

這段代碼實(shí)現(xiàn)1ms中斷一次相信大家都能理解,但是這里SysTick初始化和上面說的時鐘『/8』有關(guān)系嗎?

3

SysTick時鐘源是來自哪里?

這個問題只要認(rèn)真看參考手冊都能找到答案。

RCC通過AHB時鐘(HCLK)8分頻后作為Cortex系統(tǒng)定時器(SysTick)的外部時鐘。

通過對SysTick控制與狀態(tài)寄存器的設(shè)置,可選擇上述時鐘或Cortex(HCLK)時鐘作為SysTick時鐘。

--來自參考手冊

也就是說SysTick時鐘源可以來自兩個地方:

AHB時鐘8分頻

HCLK(內(nèi)核)時鐘


通過SysTick控制與狀態(tài)寄存器的設(shè)置進(jìn)行選擇時鐘源。

具體就是通過CLKSOURCE(時鐘源)這一Bit位來選擇:

再次看SysTick_Config函數(shù)源碼:

__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks){ if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) { return (1UL); /* Reload value impossible */ } SysTick->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0UL); /* Function successful */}

你會發(fā)現(xiàn),其實(shí)源碼已經(jīng)默認(rèn)使用HCLK(內(nèi)核)時鐘。

而SysTick_Config函數(shù)屬于內(nèi)核(如core_cm3.h)已經(jīng)寫好源碼,一般我們不去修改。

所以,到這里,你會明白:SysTick時鐘源其實(shí)就是用的HCLK(內(nèi)核)時鐘。

4

STM32CubeMX...可選擇1分頻

分析上面問題的時候,我突然發(fā)現(xiàn)一個問題:為什么STM32CubeMX中Cortex系統(tǒng)定時器可選擇1分頻(和8分頻)?

(使用STM32CubeMX V5.1.0)

我通過配置1分頻和8分頻,各自生成代碼,進(jìn)行對比,發(fā)現(xiàn)生成的代碼完全一樣。

然后,我又查看手冊,RCC時鐘樹中的這個位置是固定『/8』,也沒有看到可『/1』的說明。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    365044
  • 時鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1901

    瀏覽量

    133242
  • Cortex
    +關(guān)注

    關(guān)注

    2

    文章

    203

    瀏覽量

    47379
  • Systick
    +關(guān)注

    關(guān)注

    0

    文章

    63

    瀏覽量

    13598
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    0STM32SysTick是個啥?咋用?(可下載)

    的使能位清除,就永不停息。SysTick在《STM32xx中文參考手冊》里面基本沒有介紹,其詳細(xì)介紹,內(nèi)核編程手冊。在工程我們將以
    發(fā)表于 04-01 14:52 ?0次下載

    stm32h7s78 rcc pll2時鐘使能失敗的原因?

    使用的板卡是 stm32h7s78-dk,啟動流程是 boot + flash app 的方式,boot 參考的 xip 示例,xip 時鐘綁定在 hclk 上。 問題 在 app 代碼,初始化
    發(fā)表于 03-14 10:33

    STM32哪里可以看出芯片是否支持外部存儲擴(kuò)展?

    STM32哪里可以看出芯片是否支持外部存儲擴(kuò)展,從什么可以選出合適的芯片,主要是速度這些,大概率是怎么看的,時鐘樹是怎么理解的
    發(fā)表于 03-10 06:16

    ADS1298芯片內(nèi)部有無時鐘呢?

    我想問一下ADS1298芯片內(nèi)部有無時鐘呢?如果有那頻率是不是:2.048MHz呢? 如果不外接時鐘,這個芯片能否正常工作呢?
    發(fā)表于 02-08 06:06

    一文看懂!時鐘在數(shù)據(jù)采集系統(tǒng)究竟起到哪些關(guān)鍵作用?

    時鐘的基本概念 時鐘是數(shù)據(jù)采集系統(tǒng)的關(guān)鍵組件,負(fù)責(zé)提供同步信號并控制數(shù)據(jù)采集和轉(zhuǎn)換的時間間隔。時鐘信號可以由設(shè)備內(nèi)部生成,也可以通過外部信號提供。
    的頭像 發(fā)表于 01-21 13:44 ?670次閱讀
    一文看懂!<b class='flag-5'>時鐘</b>在數(shù)據(jù)采集系統(tǒng)<b class='flag-5'>中</b>究竟起到哪些關(guān)鍵作用?

    請問AFE4400的外接晶振時鐘能否用外部時鐘代替?

    請問AFE4400的外接晶振時鐘能否用外部時鐘(如MCU時鐘引腳輸出)代替?
    發(fā)表于 01-08 07:20

    用ADS124S08實(shí)現(xiàn)高精度溫度采集,用內(nèi)部時鐘好還是外部時鐘好?

    ADS124S08的規(guī)格書里說明其系統(tǒng)時鐘可以由內(nèi)部集成的4.096MHz振蕩器提供,也可以由外部時鐘提供。我想請問一下兩者在轉(zhuǎn)換精度上有多大差異?我要用ADS124S08實(shí)現(xiàn)高精度溫度采集,用內(nèi)部
    發(fā)表于 12-20 08:12

    TLV320ADC6140內(nèi)部有時鐘嗎?

    datasheet里說有內(nèi)部時鐘,并建議使用內(nèi)部時鐘。 但是應(yīng)用文檔中有提到芯片作為i2s的master模式下時需要外部提供MCLK? 所以,芯片內(nèi)部有時鐘
    發(fā)表于 12-03 08:12

    本源產(chǎn)品丨高穩(wěn)低相噪時鐘

    的一致性和穩(wěn)定性同步工作。本源量子憑借自主研發(fā)的高穩(wěn)低相噪時鐘,成功搭建起連接各個組件時序控制單元的橋梁,該時鐘能夠提供高穩(wěn)定性和高精度頻率時鐘
    的頭像 發(fā)表于 11-14 01:05 ?550次閱讀
    本源產(chǎn)品丨高穩(wěn)低相噪<b class='flag-5'>時鐘</b><b class='flag-5'>源</b>

    請問下CDCLVC1106PWR的cLKIN時鐘輸入管腳可以是來自FPGA或者M(jìn)CU輸出的時鐘不?

    請問下CDCLVC1106PWR的cLKIN時鐘輸入管腳可以是來自FPGA或者M(jìn)CU輸出的時鐘不?還是必須是晶振或者晶體產(chǎn)生的時鐘
    發(fā)表于 11-13 07:05

    stm32怎樣觸發(fā)軟件中斷

    了解STM32斷系統(tǒng) STM32微控制器具有豐富的中斷系統(tǒng),包括NVIC(嵌套向量中斷控制器)和SYSTICK定時器。NVIC可以處理多達(dá)240個中斷
    的頭像 發(fā)表于 09-02 09:32 ?1921次閱讀

    請問TINA的電流哪里可以找到?

    我想用TINA軟件來做開關(guān)電源的輸出瞬態(tài)仿真測試。例如輸出電流沖1A到2A的跳變,測試輸出電壓的變化值。我在TINA沒有找到對應(yīng)的脈沖電流,但是在WEBENCH就有的。請問TINA的電流
    發(fā)表于 08-09 08:22

    【CH32V208】2、體驗(yàn)systick

    ); } 此函數(shù)的功能為輸出一個計算值,并在串口中輸出,以便觀察 5、主程序,我們傳一個配置溢出值為系統(tǒng)時鐘-1即1秒種進(jìn)入一次中斷。 【實(shí)驗(yàn)現(xiàn)象】 下載到開發(fā)板后,打開串口終端,可以成功實(shí)現(xiàn)即定功能:
    發(fā)表于 07-31 09:37

    求助,關(guān)于STM32F030K6低功耗停止模式下SysTick的問題求解

    芯片型號:STM32F030K6 開發(fā)環(huán)境:標(biāo)準(zhǔn)庫 問題:SYSCLK配置的是HSI(PLL選擇HSI也試過)。在調(diào)試停止模式時,發(fā)現(xiàn)只要初始化過程調(diào)用SysTick_Config()函數(shù)配置滴答
    發(fā)表于 07-23 08:11

    STM32F030C8T6進(jìn)入停止模式后所有時鐘都停止了,為何SysTick還能工作?

    我在使用STM32F030C8T6,按照參考手冊的說法,在停止模式全部時鐘停止。沒有了時鐘SysTick應(yīng)該也不再工作,但實(shí)際上SysTick
    發(fā)表于 07-23 06:52