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

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

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

STM32F1_ SysTick系統(tǒng)滴答

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-04-08 11:00 ? 次閱讀

前言

今天講解“STM32F103 SysTick系統(tǒng)滴答”,“SysTick系統(tǒng)滴答”是屬于Cortex-M3內(nèi)核的一部分,主要是為運(yùn)行的操作系統(tǒng)提供滴答時(shí)鐘,如常見的操作系統(tǒng):uCOS、RTOS等。不管M3芯片屬于哪一家公司,它都標(biāo)配有SysTick這一部分。因此,它屬于芯片內(nèi)核的一部分,主要是為了方便操作系統(tǒng)的移植。

其實(shí),SysTick能實(shí)現(xiàn)的功能,都可以由TIM來實(shí)現(xiàn)。SysTick無非就是定時(shí)中斷的功能,它完全可以由TIM定時(shí)器來完成。之所以SysTick獨(dú)立出來就是因?yàn)樗鼘儆趦?nèi)核一部分,方便用戶移植,而且簡(jiǎn)單方便。學(xué)過uCOS的人都知道,以前在51,或者430上面是由定時(shí)器完成的時(shí)鐘滴答,到后面ARM公司就用到了一個(gè)好的辦法,就是在內(nèi)核中標(biāo)配一個(gè)SysTick,這樣下來移植系統(tǒng)不用那么麻煩了。

SysTick除了在操作系統(tǒng)中起到作用,其實(shí)在裸機(jī)程序中也起到很大作用,比如:定期處理一段程序、超時(shí)定時(shí)、串口接收超時(shí)等,今天就以“定期處理一段程序”為例來說一下。

說到操作系統(tǒng),后期我也會(huì)花一定時(shí)間講解一下uCOS操作系統(tǒng),感興趣的朋友可以關(guān)注一下。

本文特點(diǎn):1.提供講解的軟件工程; 2.重點(diǎn)代碼截圖,配講解。

本著免費(fèi)分享的原則,將講解的工程源代碼分享給大家,還望看到的朋友關(guān)注一下微信公眾號(hào),并將文章分享給你的朋友。

下載

提供下載的“軟件工程”都是在硬件板子上進(jìn)行多次測(cè)試、并保證沒問題才上傳至360云盤。

今天的軟件工程下載地址(360云盤):

https://yunpan.cn/cSVIp4UeSpA9B訪問密碼 f486

STM32F10x的資料可以在我360云盤下載:

https://yunpan.cn/crBUdUGdYKam2訪問密碼 ca90

內(nèi)容講解

工程概要說明: 系統(tǒng)上電初始化完成,配置SysTick,1秒滴答(中斷)10次,執(zhí)行的一段程序就是“變化LED”,運(yùn)行該程序就可以看到定義的LED不在1秒鐘閃爍10次。

關(guān)于“STM32F103 SysTick系統(tǒng)滴答”我把重要的幾點(diǎn)在下面分別講述:

一、配置并初始化SysTick


該函數(shù)位于main.c文件下面;

上圖中紅色箭頭處10代表的意思就是:一秒鐘滴答(中斷)10次,可自行修改這個(gè)值。用于系統(tǒng),我們一般在100 --- 1000之間,也就是要滴答100 --- 1000次。

獲取系統(tǒng)時(shí)鐘,正常情況下,我們這里的RCC_ClocksStructure.SYSCLK_Frequency應(yīng)該和SystemCoreClock一樣,最好像上面程序中直接獲取系統(tǒng)時(shí)鐘,原因很簡(jiǎn)單,有可能SystemCoreClock與實(shí)際的不一樣。

二、SysTick_Config函數(shù)詳情


該函數(shù)位于core_cm3.c文件下面;

這個(gè)函數(shù)是芯片標(biāo)志的函數(shù)接口,我大概講解一下吧,設(shè)置重載值,設(shè)置中斷優(yōu)先級(jí),配置并初始化SysTick。

三、SysTick中斷


該函數(shù)位于stm32f10x_it.c文件下面;

處理的程序就變化LED,也就是注釋的語句。

四、SysTick寄存器

有4個(gè)寄存器控制SysTick定時(shí)器,在STM32參考手冊(cè)中沒有提到,位于“Cortex-M3權(quán)威指南Cn”中,在我提供的“STM32F10x的資料”中下載。


說明

今天提供的軟件工程基于STM32F103大容量芯片,其實(shí)只要適當(dāng)修改工程的部分配置,STM32F1的芯片都適用。

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

    關(guān)注

    7

    文章

    175

    瀏覽量

    78376
  • Systick
    +關(guān)注

    關(guān)注

    0

    文章

    62

    瀏覽量

    13089
  • STM32F10
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    15627
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32F103×8/STM32F103×B MCU手冊(cè)

    1. Q: STM32F103C8T6如何正確配置時(shí)鐘系統(tǒng)?A: STM32F103C8T6的時(shí)鐘系統(tǒng)配置通常涉及HSE(高速外部時(shí)鐘)、H
    發(fā)表于 11-18 15:14 ?0次下載

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

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

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

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

    自制一款兼容STM32F1/F4芯片的飛控板

    自己制作的一款兼容STM32F1/F4芯片的飛控板。
    發(fā)表于 07-04 14:07 ?0次下載

    STM32F103xC,STM32F103xD,STM32F103xE中文資料

    電子發(fā)燒友網(wǎng)站提供《STM32F103xC,STM32F103xD,STM32F103xE中文資料.pdf》資料免費(fèi)下載
    發(fā)表于 06-17 14:12 ?4次下載

    CW2015_STM32F1XX_C8T6資料包分享

    CW2015_STM32F1XX_C8T6
    發(fā)表于 06-07 12:46 ?8次下載

    使用系統(tǒng)滴答定時(shí)中斷,基于按鍵的狀態(tài)機(jī)怎么只能1個(gè)1個(gè)+,不能連+?

    使用系統(tǒng)滴答定時(shí)中斷,基于按鍵的狀態(tài)機(jī)怎么只能1個(gè)1個(gè)+,不能連+ #define KEY1_USERGPIO_ReadInputDataB
    發(fā)表于 05-16 06:27

    STM8S103F系列支持滴答時(shí)鐘嗎?

    STM8S103F系列支持滴答時(shí)鐘嗎?
    發(fā)表于 05-10 07:13

    STM32F446RC運(yùn)行在180MHz下SysTick能配置成100ms一次嗎?

    STM32F446RC運(yùn)行在180MHz下,SysTick能配置成100ms一次嗎? 那如果配置成1s一次呢?
    發(fā)表于 05-06 07:11

    操作FreeRTOS時(shí),執(zhí)行__WFI()導(dǎo)致系統(tǒng)滴答中斷無法喚醒設(shè)備怎么解決?

    1、在操作FreeRTOS時(shí),本想著是在空閑鉤子中執(zhí)行__WFI()以降低設(shè)備功耗,等系統(tǒng)滴答中斷自動(dòng)喚醒設(shè)備繼續(xù)執(zhí)行,運(yùn)行中發(fā)現(xiàn)執(zhí)行__WFI()之后設(shè)備無法喚醒,分析應(yīng)該是__WFI()將CPU
    發(fā)表于 04-24 08:29

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

    我在使用STM32F030C8T6,按照參考手冊(cè)的說法,在停止模式全部時(shí)鐘停止。沒有了時(shí)鐘,SysTick應(yīng)該也不再工作,但實(shí)際上SysTick在停止模式還在工作。所以進(jìn)入停止模式時(shí)要關(guān)閉
    發(fā)表于 04-16 07:22

    適合單片機(jī)裸機(jī)的開源軟件框架:Zorb

    采用STM32F429開發(fā)板作為硬件運(yùn)行環(huán)境,硬件資源用到串口1systick,其中串口1提供調(diào)試打印功能,systick提供
    發(fā)表于 04-12 09:42 ?844次閱讀
    適合單片機(jī)裸機(jī)的開源軟件框架:Zorb

    STM32F4無法通過系統(tǒng)存儲(chǔ)器地址0x1fff0000進(jìn)入BootLoader引導(dǎo)代碼怎么解決?

    FFF0000; /* STM32F4的系統(tǒng)BootLoader地址 */ /* 關(guān)閉全局中斷 */ DISABLE_INT(); /* 關(guān)閉滴答定時(shí)器,復(fù)位到默認(rèn)值 */ SysTic
    發(fā)表于 03-27 06:12

    STM32L431RCT6從用戶代碼區(qū)跳轉(zhuǎn)使用內(nèi)置system memory bootloader無效怎么解決?

    STM32L431RCT6 從用戶代碼區(qū)跳轉(zhuǎn)使用內(nèi)置system memory bootloader 無效。 1. 跳轉(zhuǎn)代碼如下,這個(gè)代碼 可以在STM32F407VET6上正常跳轉(zhuǎn) 內(nèi)置
    發(fā)表于 03-26 07:54

    個(gè)人對(duì)STM32 SysTick的總結(jié)(寄存器操作)

    一、概述:SysTick是一個(gè)簡(jiǎn)單的遞減24位計(jì)數(shù)器。如果你不需要再應(yīng)用程序中嵌入操作系統(tǒng),SysTick可以作為簡(jiǎn)單的延時(shí)和產(chǎn)生周期性的中斷。狀態(tài)控制寄存器的第0位可以使能計(jì)數(shù)器,當(dāng)前值寄存器隨著
    的頭像 發(fā)表于 01-06 08:00 ?1886次閱讀
    個(gè)人對(duì)<b class='flag-5'>STM32</b> <b class='flag-5'>SysTick</b>的總結(jié)(寄存器操作)