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

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

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

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

STM32的SysTick時(shí)鐘源來自哪里?

jf_pJlTbmA9 ? 來源: strongerHuang ? 作者: strongerHuang ? 2023-10-26 15:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者 | strongerHuang

微信公眾號 | 嵌入式專欄

STM32CubeMX中Cortex系統(tǒng)定時(shí)器(System Timer)選擇1分頻和8分頻,為啥生成代碼一樣?

wKgaomUD8sCAFtOAAAL7suZbWz8548.png

因?yàn)镾TM32CubeMX會啟動SysTick作為延時(shí)(HAL_Delay)函數(shù)的時(shí)基,而SysTick作為Cortex內(nèi)核的一部分,就會用到Cortex系統(tǒng)定時(shí)器。

那么,問題就來了SysTick時(shí)鐘源來自哪里?

1、數(shù)據(jù)手冊和STM32CubeMX時(shí)鐘樹

數(shù)據(jù)手冊時(shí)鐘樹:

wKgZomUD8sOARBKbAAPKIZokRjk327.png

STM32CubeMX時(shí)鐘樹:

wKgaomUD8sCAFtOAAAL7suZbWz8548.png

你會發(fā)現(xiàn):數(shù)據(jù)手冊中的只有『/8』分頻,而STM32CubeMX除了『/8』分頻,還有『/1』分頻。

2、SysTick時(shí)鐘初始化代碼

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

標(biāo)準(zhǔn)庫常用初始化:

SysTick_Config(SystemCoreClock / 1000);

HAL庫初始化同樣也是調(diào)用底層的初始化函數(shù):

uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) { return SysTick_Config(TicksNumb); }

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

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

3、SysTick時(shí)鐘源是來自哪里?

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

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

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

也就是說SysTick時(shí)鐘源可以來自兩個(gè)地方:

AHB時(shí)鐘8分頻

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

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

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

wKgZomUD8suAMwIbAAY63l3RHYg009.png

再次看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 */ } (在core_cm3.h,或者core_cm4.h等內(nèi)核源碼中)

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

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

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

4、最后

開篇的問題:STM32CubeMX中Cortex系統(tǒng)定時(shí)器(System Timer)選擇1分頻和8分頻,為啥生成代碼一樣?

wKgZomUD8s-ALT2gAAMOmD7GTZo317.png

難道,STM32CubeMX配置Cortex系統(tǒng)定時(shí)器時(shí)鐘是有Bug嗎?

來源:嵌入式專欄
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進(jìn)行處理

審核編輯 黃宇


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

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    365049
  • 時(shí)鐘源
    +關(guān)注

    關(guān)注

    0

    文章

    98

    瀏覽量

    16330
  • Systick
    +關(guān)注

    關(guān)注

    0

    文章

    63

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    ADuCM360 SysTick時(shí)鐘怎么使能?

    使用SysTick做定時(shí)器,實(shí)際貌似SysTick不能運(yùn)行,估計(jì)是沒有提供時(shí)鐘,ADuCM360時(shí)鐘樹如下圖所示,找不到怎么打開內(nèi)核
    發(fā)表于 01-12 06:05

    使用FreeRTOS時(shí)Systick時(shí)鐘的配置分享

    時(shí)鐘會被默認(rèn)選擇為STM32的內(nèi)核時(shí)鐘,而不能選擇外部時(shí)鐘。原因就是當(dāng)rtos啟動時(shí)(vTaskStartScheduler();這個(gè)函
    發(fā)表于 07-30 11:39

    STM32SysTick時(shí)鐘來自Cortex系統(tǒng)定時(shí)器嗎

    置頂/星標(biāo)公眾號,不錯(cuò)過每一條消息!有位朋友在后臺大概問了這樣一個(gè)問題:STM32SysTick時(shí)鐘來自Cortex系統(tǒng)定時(shí)器嗎?引伸
    發(fā)表于 08-19 08:19

    STM32SysTick時(shí)鐘

    有位朋友在后臺大概問了這樣一個(gè)問題:STM32SysTick時(shí)鐘來自Cortex系統(tǒng)定時(shí)器嗎?引伸:為什么
    發(fā)表于 08-19 06:47

    STM32SysTick時(shí)鐘到底是從哪來呢

    STM32SysTick時(shí)鐘來自哪里STM32
    發(fā)表于 11-24 08:05

    STM32SysTick時(shí)鐘來自Cortex系統(tǒng)定時(shí)器嗎

    STM32SysTick時(shí)鐘來自Cortex系統(tǒng)定時(shí)器嗎?為什么STM32CubeMX中C
    發(fā)表于 11-24 07:24

    STM32SysTick時(shí)鐘來自Cortex系統(tǒng)定時(shí)器嗎?

    初始化調(diào)用這段代碼之后,SysTick將會實(shí)現(xiàn)1ms中斷一次。這段代碼實(shí)現(xiàn)1ms中斷一次相信大家都能理解,但是這里SysTick初始化和上面說的時(shí)鐘『/8』有關(guān)系嗎?
    的頭像 發(fā)表于 04-03 13:54 ?5585次閱讀
    <b class='flag-5'>STM32</b>的<b class='flag-5'>SysTick</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>源</b>是<b class='flag-5'>來自</b>Cortex系統(tǒng)定時(shí)器嗎?

    什么是SysTick定時(shí)器?實(shí)現(xiàn)STM32時(shí)鐘系統(tǒng)的詳細(xì)資料說明

    什么是SysTick定時(shí)器?實(shí)現(xiàn)STM32時(shí)鐘系統(tǒng)的詳細(xì)資料說明主要內(nèi)容包括了:Systick原理和配置方法,ALIENTEK 延時(shí)函數(shù)delay講解
    發(fā)表于 01-02 08:00 ?3次下載
    什么是<b class='flag-5'>SysTick</b>定時(shí)器?實(shí)現(xiàn)<b class='flag-5'>STM32</b><b class='flag-5'>時(shí)鐘</b>系統(tǒng)的詳細(xì)資料說明

    STM32中的SysTick時(shí)鐘來自哪里

    STM32SysTick時(shí)鐘來自哪里?
    的頭像 發(fā)表于 03-03 14:32 ?8322次閱讀

    STM32學(xué)習(xí)筆記:系統(tǒng)滴答時(shí)鐘SysTick

    目錄1、什么是時(shí)鐘2、STM32時(shí)鐘SysTick是一個(gè)系統(tǒng)時(shí)鐘定時(shí)器,屬于ARM Cortex-Mx內(nèi)核的一個(gè)“內(nèi)設(shè)”,所有基于此內(nèi)核的
    發(fā)表于 11-29 09:51 ?0次下載
    <b class='flag-5'>STM32</b>學(xué)習(xí)筆記:系統(tǒng)滴答<b class='flag-5'>時(shí)鐘</b><b class='flag-5'>SysTick</b>

    STM32—關(guān)于SYSTICK系統(tǒng)時(shí)鐘的詳解及學(xué)習(xí)筆記

    SysTick_Handler中也無需對中斷標(biāo)志進(jìn)行清零(參考exit外部中斷服務(wù)函數(shù))2.要注意的是關(guān)于systick其實(shí)有兩個(gè)關(guān)鍵函數(shù),SySTick_Config,SysTick
    發(fā)表于 11-30 15:51 ?15次下載
    <b class='flag-5'>STM32</b>—關(guān)于<b class='flag-5'>SYSTICK</b>系統(tǒng)<b class='flag-5'>時(shí)鐘</b>的詳解及學(xué)習(xí)筆記

    STM32F103:精準(zhǔn)延時(shí)delay——SysTick使用

    處理器的微控制器都可以由這個(gè)定時(shí)器獲得一定的時(shí)間間隔。2. SysTick相關(guān)寄存器狀態(tài)寄存器-CTRLSTCLK外部時(shí)鐘:AHB總線時(shí)鐘的 1/8FCLK 內(nèi)部
    發(fā)表于 12-02 18:36 ?10次下載
    <b class='flag-5'>STM32</b>F103:精準(zhǔn)延時(shí)delay——<b class='flag-5'>SysTick</b>使用

    17、STM32——SysTick詳解

    。不過,STCLK 的具體來源則由芯片設(shè)計(jì)者決定,因此不同產(chǎn)品之間的時(shí)鐘頻率可能會大不相同,你需要查找芯片的器件手冊來決定選擇什么作為時(shí)鐘。Cortex-M3 的內(nèi)核中包含一個(gè) SysTic
    發(fā)表于 12-23 19:56 ?0次下載
    17、<b class='flag-5'>STM32</b>——<b class='flag-5'>SysTick</b>詳解

    初學(xué)stm32-Systick滴答時(shí)鐘定時(shí)

    系統(tǒng)的心跳時(shí)鐘。這樣可以節(jié)省MCU資源,不用浪費(fèi)一個(gè)定時(shí)器。比如uCOS中,分時(shí)復(fù)用,需要一個(gè)最小的時(shí)間戳,一般在STM32+UCOS系統(tǒng)中,都采用Systick做uCOS心跳時(shí)鐘。
    發(fā)表于 12-31 19:46 ?15次下載
    初學(xué)<b class='flag-5'>stm32-Systick</b>滴答<b class='flag-5'>時(shí)鐘</b>定時(shí)

    一文詳解STM32的嘀嗒時(shí)鐘(SysTick)

    嘀嗒時(shí)鐘SysTick)是一個(gè)簡單的系統(tǒng)時(shí)鐘節(jié)拍計(jì)數(shù)器,它屬于Cortex-M4內(nèi)核嵌套向量中斷控制器(NVIC)里的一個(gè)功能單元。他是一個(gè)24位的倒計(jì)時(shí)定時(shí)器(在NVIC中),當(dāng)systi
    的頭像 發(fā)表于 01-19 18:11 ?1.6w次閱讀
    一文詳解<b class='flag-5'>STM32</b>的嘀嗒<b class='flag-5'>時(shí)鐘</b>(<b class='flag-5'>SysTick</b>)