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

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

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

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

撞上電子 ? 2024-01-06 08:00 ? 次閱讀

一、概述:

SysTick是一個(gè)簡單的遞減24位計(jì)數(shù)器。如果你不需要再應(yīng)用程序中嵌入操作系統(tǒng),SysTick可以作為簡單的延時(shí)和產(chǎn)生周期性的中斷。

狀態(tài)控制寄存器的第0位可以使能計(jì)數(shù)器,當(dāng)前值寄存器隨著時(shí)鐘一直遞減,當(dāng)他減到0的時(shí)候,重裝載寄存器就會(huì)重新裝載這只的值,計(jì)數(shù)器繼續(xù)從這個(gè)值遞減。


二、相關(guān)寄存器:

2.1SysTick->CTRL 狀態(tài)和控制寄存器

a6b115d4-ac26-11ee-aa22-92fbcf53809c.jpg

位16:當(dāng)前值寄存器遞減到0,位16置1

位2:時(shí)鐘源選擇位,0:使用外部參考時(shí)鐘;1:使用內(nèi)核時(shí)鐘

位1:使能SysTick中斷,當(dāng)前值寄存器遞減到0時(shí)產(chǎn)生中斷

位0:SysTick時(shí)鐘使能


2.2SysTick->LOAD 重裝載值寄存器

a6bd978c-ac26-11ee-aa22-92fbcf53809c.jpg

當(dāng)前值寄存器為0時(shí),自動(dòng)將重裝載值重裝到當(dāng)前值計(jì)數(shù)器,重裝載值的大小需要自己設(shè)置。


2.3 SysTick->VAL當(dāng)前值寄存器

a6c179d8-ac26-11ee-aa22-92fbcf53809c.jpg

可讀可寫,當(dāng)計(jì)數(shù)器使能時(shí),這個(gè)寄存器的值開始遞減,使用前后注意清零。

三、SysTick邏輯圖

a6c58bd6-ac26-11ee-aa22-92fbcf53809c.jpg

a6d2c760-ac26-11ee-aa22-92fbcf53809c.jpg


四、時(shí)鐘頻率與延時(shí)

4.1時(shí)鐘選擇采用參考8分頻的參考時(shí)鐘比較準(zhǔn),所以此處SysTick計(jì)數(shù)器選擇21M的時(shí)鐘。

a6e0a4c0-ac26-11ee-aa22-92fbcf53809c.jpg

4.2如何延時(shí)1us時(shí)鐘頻率為21M,也就是1s的時(shí)間技術(shù)21M次。由此可知計(jì)數(shù)一次用了 (1/21000000)s ,用了(1/21000)ms, 用了(1/21) us,所以,1us計(jì)數(shù)21次。
4.3如何延時(shí)1ms因?yàn)?ms = 1000us,所以綜上所述,1ms計(jì)數(shù)1000*21次計(jì)數(shù),1ms也就是21000次計(jì)數(shù)
4.4最大延時(shí)24位計(jì)數(shù)器能保存的最大值 : 16777215。最大延時(shí)時(shí)間=16777215 /21=798915us=798.915ms

五、示例代碼

#include "delay.h"

#define Value_us 21#define Value_ms 21000

void delay_init(void){ SysTick->CTRL &= (1 << 2); //控制寄存器位2置0,選擇8分頻時(shí)鐘 SysTick->CTRL &= ~(1 << 0); //關(guān)閉計(jì)數(shù)器}void delay_us(u32 num){ SysTick->LOAD = num * Value_us; SysTick->VAL = 0; SysTick->CTRL |= (1 << 0); //使能計(jì)數(shù)器 while (!(SysTick->CTRL & 1<<16)); //判斷是否計(jì)數(shù)完畢 SysTick->VAL = 0; SysTick->CTRL &= ~(1 << 0); //關(guān)閉計(jì)數(shù)器 }void delay_ms(u32 num){ SysTick->LOAD = num * Value_ms; SysTick->VAL = 0; SysTick->CTRL |= (1 << 0); //使能計(jì)數(shù)器 while (!(SysTick->CTRL & 1<<16)); SysTick->VAL = 0; SysTick->CTRL &= ~(1 << 0); //關(guān)閉計(jì)數(shù)器 }

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

    關(guān)注

    31

    文章

    5294

    瀏覽量

    119814
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10854

    瀏覽量

    354289
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2253

    瀏覽量

    94278
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SysTick的定義與相關(guān)寄存器詳解

    一、概述:SysTick是一個(gè)簡單的遞減24位計(jì)數(shù)如果你不需要再應(yīng)用程序中嵌入操作系統(tǒng),SysTick可以作為簡單的延時(shí)和產(chǎn)生周期性的中斷;狀態(tài)控制
    發(fā)表于 01-05 07:26

    SysTick寄存器介紹

    設(shè)置系統(tǒng)時(shí)鐘SYSCLK 等于72M。當(dāng)重裝載數(shù)值寄存器的值遞減到0 的時(shí)候,系統(tǒng)定時(shí)就產(chǎn)生一次中斷,以此循環(huán)往復(fù)。SysTick 寄存器介紹Sy
    發(fā)表于 01-21 11:37

    stm32標(biāo)準(zhǔn)例程-寄存器

    stm32標(biāo)準(zhǔn)例程-寄存器版本的源代碼,57個(gè)實(shí)驗(yàn)例程,從跑馬燈到操作系統(tǒng),全方位學(xué)習(xí)stm32開發(fā)
    發(fā)表于 11-26 16:17 ?0次下載

    ARM寄存器學(xué)習(xí)總結(jié)

    ARM寄存器學(xué)習(xí)總結(jié)
    發(fā)表于 01-04 15:10 ?0次下載

    對(duì)寄存器操作方法的經(jīng)驗(yàn)和其總結(jié)

    接觸了一陣子的STM32函數(shù)庫,使用起來挺方便的,但是很少有處理會(huì)有函數(shù)庫,大部分情況下還是要自己來對(duì)寄存器進(jìn)行操作,所以還是不要生疏了對(duì)寄存器
    的頭像 發(fā)表于 12-19 09:30 ?8702次閱讀
    對(duì)<b class='flag-5'>寄存器</b><b class='flag-5'>操作</b>方法的經(jīng)驗(yàn)和其<b class='flag-5'>總結(jié)</b>

    寄存器操作方法_對(duì)寄存器操作的通用方法總結(jié)

    本文主要詳解寄存器操作方法以及對(duì)寄存器操作的通用方法總結(jié),具體的跟隨小編來了解一下。
    的頭像 發(fā)表于 05-22 15:53 ?2.3w次閱讀

    SysTick定時(shí)介紹,SysTick定時(shí)寄存器

    STM32F1 庫函數(shù)中,并沒有提供相應(yīng)的 SysTick 定時(shí)配置函數(shù),我們要操作 SysTick 定時(shí)
    的頭像 發(fā)表于 02-11 15:37 ?1.8w次閱讀
    <b class='flag-5'>SysTick</b>定時(shí)<b class='flag-5'>器</b>介紹,<b class='flag-5'>SysTick</b>定時(shí)<b class='flag-5'>器</b><b class='flag-5'>寄存器</b>

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

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

    STM32 使用寄存器編寫SysTick定時(shí)

    STM32 使用寄存器編寫SysTick定時(shí)STM32入門一定要搞清楚定時(shí)可以通過syste
    發(fā)表于 12-04 11:51 ?2次下載
    <b class='flag-5'>STM32</b> 使用<b class='flag-5'>寄存器</b>編寫<b class='flag-5'>SysTick</b>定時(shí)<b class='flag-5'>器</b>

    STM32學(xué)習(xí)筆記(2)——寄存器

    STM32 第二天寄存器寄存器功能:寄存器的功能是存儲(chǔ)二進(jìn)制代碼,它是由具有存儲(chǔ)功能的觸發(fā)組合起來構(gòu)成的。一個(gè)觸發(fā)
    發(fā)表于 12-08 17:36 ?18次下載
    <b class='flag-5'>STM32</b>學(xué)習(xí)筆記(2)——<b class='flag-5'>寄存器</b>

    帶你模仿正點(diǎn)原子編程風(fēng)格到深入學(xué)習(xí)寄存器并手把手編寫STM32F103寄存器程序(SYSTICK滴答時(shí)鐘之delay延時(shí))

    帶你模仿正點(diǎn)原子到寄存器編寫–SYSTICK(delay函數(shù))以下是本篇文章正文內(nèi)容,下面案例可供參考鄧家文-廣州華軟軟件學(xué)院一、 前提了解系統(tǒng)時(shí)鐘systickSTM32內(nèi)部的硬件
    發(fā)表于 12-08 18:21 ?0次下載
    帶你模仿正點(diǎn)原子編程風(fēng)格到深入學(xué)習(xí)<b class='flag-5'>寄存器</b>并手把手編寫<b class='flag-5'>STM32</b>F103<b class='flag-5'>寄存器</b>程序(<b class='flag-5'>SYSTICK</b>滴答時(shí)鐘之delay延時(shí))

    stm32是如何將寄存器值通過標(biāo)準(zhǔn)庫寫入寄存器的?

    GPIO_Init函數(shù)3.總結(jié)0. 前言在平時(shí)的學(xué)習(xí)和工作中,可能很少有人會(huì)實(shí)際去操作寄存器,但是去了解庫函數(shù)是如何去操作寄存器是很有必要
    發(fā)表于 12-16 16:58 ?18次下載
    <b class='flag-5'>stm32</b>是如何將<b class='flag-5'>寄存器</b>值通過標(biāo)準(zhǔn)庫寫入<b class='flag-5'>寄存器</b>的?

    [學(xué)習(xí)筆記]STM32F1 SYSTICK 滴答定時(shí)(寄存器、標(biāo)準(zhǔn)庫、HAL庫)

    目錄0. 博主理解:1. 實(shí)驗(yàn)內(nèi)容及步驟:2. 硬件說明3. 寄存器說明3.1 SysTick的時(shí)鐘和使能:3.2 SysTick重裝載數(shù)值寄存器:3.3
    發(fā)表于 12-23 20:02 ?7次下載
    [學(xué)習(xí)筆記]<b class='flag-5'>STM32</b>F1 <b class='flag-5'>SYSTICK</b> 滴答定時(shí)<b class='flag-5'>器</b>(<b class='flag-5'>寄存器</b>、標(biāo)準(zhǔn)庫、HAL庫)

    STM32寄存器操作

    STM32寄存器操作在使用STM32單片機(jī)編程時(shí)一般都用ST給的庫函數(shù)編程,庫函數(shù)編程的底層就是對(duì)單片機(jī)寄存器
    發(fā)表于 01-13 15:43 ?19次下載
    <b class='flag-5'>STM32</b>的<b class='flag-5'>寄存器</b><b class='flag-5'>操作</b>

    RAL寄存器模型操作指南

    寄存器模型操作,指的是通過寄存器模型對(duì)RTL中寄存器進(jìn)行讀寫訪問,或者同步寄存器模型與RTL中寄存器
    的頭像 發(fā)表于 07-12 09:37 ?1006次閱讀
    RAL<b class='flag-5'>寄存器</b>模型<b class='flag-5'>操作</b>指南