在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺析STM32 Systick查詢定時的處理過程

冬至子 ? 來源:紛紜雜談 ? 作者:CY_CHEN ? 2023-07-21 17:47 ? 次閱讀

STM32處理器有一個24位的系統滴答定時器SysTick,它從重新加載值開始倒數到0,然后在下一個時鐘邊緣重新加載(包裝到)STK_LOAD寄存器中的值,然后在隨后的時鐘上倒數。

圖片

計數標志位COUNTFLAG在系統控制和狀態寄存器STK_CTRL的16位,當計時器減計數到0時,返回1。

時鐘源選擇位CLKSOURCE在系統控制和狀態寄存器STK_CTRL的2位,賦值為0時為8分頻,賦值為1時為1分頻。想要計數速度更快可以選擇1分頻的時鐘源。

SysTick異常請求允許位TICKINT在系統控制和狀態寄存器STK_CTRL的1位,賦值為0時禁止異常請求,賦值為1時允許異常請求。軟件可以使用COUNTFLAG來判斷SysTick是否曾經被計數為零。

計數使能位在系統控制和狀態寄存器STK_CTRL的0位,賦值0時禁止計數,賦值1時使能計數。

圖片

重裝載值RELOAD在SysTick重載值寄存器STK_LOAD的0~23位,加載寄存器指定在啟用計數器時和計數器達到0時加載到當前值寄存器STK_VAL的起始值。

圖片

當前的計數器值CURRENT在當前值寄存器STK_VAL的1~23位。前值寄存器STK_VALSysTick計數器的當前值。讀取返回SysTick計數器的當前值。任何值的寫入都會將字段清除為0,并將STK_CTRL寄存器中的COUNTFLAG位清除為0。

查詢us、ms延時函數

void Systick_Delayus(u32 us)
{
  SysTick- >CTRL &=~ (1< 2);                   //選擇時鐘源,8分頻 
  SysTick- >LOAD  =  21*us - 1;                //賦值裝載值
  SysTick- >VAL   =    0;                      //清除當前值
  SysTick- >CTRL  |=  1< 0;                    //使能計數器
  while((SysTick- >CTRL  &  (1< 16)) == 0);    //判斷計數是否結束
  SysTick- >CTRL  &=~  (1< 0);                 //禁止計數器
}
void Systick_Delayms(u16 ms)
{
  Systick_Delayus(ms * 1000);
}

圖片

從時鐘樹可以知道,系統時鐘168Mhz,8分頻后得到滴答定時器時鐘為21Mhz,裝載值(需要延時時間)可根據時鐘頻率計算求得,每秒可計數21000000次,每微秒可計數21次。裝載值和當前值都是24位,最大為16777215,最大微秒定時798915us,最大毫秒定時798ms。

結合LED燈和Systick定時讓LED燈500ms閃爍一次,主函數為

#include "stm32f4xx.h"
#include "led.h"
#include "delay.h"


int main()
{
  LED_Init();              //初始化LED燈

  while(1)                //點亮或熄滅LED燈
  {
    GPIOH- >ODR      &=~    (0x01< 10);      //輸出為0,led燈亮
    GPIOH- >ODR      &=~    (0x01< 11);      //輸出為0,led燈亮
    Systick_Delayus(500000);
    GPIOH- >ODR      |=    (0x01< 10);      //輸出為1,led燈滅
    GPIOH- >ODR      |=    (0x01< 11);      //輸出為1,led燈滅
    Systick_Delayms(500);
  }
}

編譯成功后將程序燒入,LED每500ms閃爍一次,Systick查詢定時成功。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led燈
    +關注

    關注

    22

    文章

    1592

    瀏覽量

    107999
  • 計數器
    +關注

    關注

    32

    文章

    2256

    瀏覽量

    94568
  • 狀態寄存器
    +關注

    關注

    0

    文章

    39

    瀏覽量

    7087
  • Systick
    +關注

    關注

    0

    文章

    62

    瀏覽量

    13092
  • STM32處理器
    +關注

    關注

    0

    文章

    5

    瀏覽量

    1123
收藏 人收藏

    評論

    相關推薦

    STM32 SYSTICK定時器常見問題

    我們知道,STM32庫函數里通常使用來自內核的系統定時SYSTICK作為時基,實現計數延時。一般來講,ST公司提供的庫函數里將SYSTICK定時
    發表于 09-13 16:20 ?3048次閱讀

    數字電視的典型的處理過程

    典型的處理過程 下面介紹數字電視的幾個典型的處理過程
    發表于 07-31 14:23 ?1531次閱讀
    數字電視的典型的<b class='flag-5'>處理過程</b>

    淺析單片機中斷處理過程

    中斷處理過程可分為中斷響應、中斷處理和中斷返回三個階段。
    的頭像 發表于 11-06 14:31 ?1.8w次閱讀
    <b class='flag-5'>淺析</b>單片機中斷<b class='flag-5'>處理過程</b>

    STM32單片機對Systick心跳定時器的設計

    用途: 1.產生操作系統的時鐘節拍 2.便于不同處理器之間程序移植 SysTick定時器被捆綁在NVIC中,異常號15 3.作為一個鬧鈴測量時間用于測量時間, 但當
    發表于 12-11 15:44 ?4183次閱讀

    什么是SysTick定時器?實現STM32時鐘系統的詳細資料說明

    什么是SysTick定時器?實現STM32時鐘系統的詳細資料說明主要內容包括了:Systick原理和配置方法,ALIENTEK 延時函數delay講解
    發表于 01-02 08:00 ?3次下載
    什么是<b class='flag-5'>SysTick</b><b class='flag-5'>定時</b>器?實現<b class='flag-5'>STM32</b>時鐘系統的詳細資料說明

    如何使用STM32單片機systick來實現延時定時功能

    1、前言 CM4內核的處理和CM3一樣,內部都包含了一個SysTick定時器,SysTick 是一個24 位的倒計數定時器,當計到0 時,將
    的頭像 發表于 02-14 06:25 ?6829次閱讀
    如何使用<b class='flag-5'>STM32</b>單片機<b class='flag-5'>systick</b>來實現延時<b class='flag-5'>定時</b>功能

    【野火指南者】STM32F103延時函數及其系統定時器—SysTick

    學習目的:1、學習STM32的系統定時器及其相關的寄存器2、使用STM32的系統定時器來配置延時函數內容介紹:一、Systick簡介二、
    發表于 11-24 20:06 ?7次下載
    【野火指南者】<b class='flag-5'>STM32</b>F103延時函數及其系統<b class='flag-5'>定時</b>器—<b class='flag-5'>SysTick</b>

    STM32 Systick系統定時

    @STM32 Systick系統定時器#簡介在之前的實驗中,我們只用到的delay函數通過while語句做循環的方式來占用時間,達到延時的目的。但是這種方式延時的時間不好把控,無法應用于更加
    發表于 11-25 10:06 ?6次下載
    <b class='flag-5'>STM32</b> <b class='flag-5'>Systick</b>系統<b class='flag-5'>定時</b>器

    STM32入門(十五)----SysTick系統定時

    的Cortex-M內核的單片機都具有這個定時器。《STM32參考手冊》里的一句話:關于Cortex-M3核心、 SysTick定時器和NVIC的詳細說明,請參考另一篇ST的文檔和一篇A
    發表于 12-01 15:06 ?8次下載
    <b class='flag-5'>STM32</b>入門(十五)----<b class='flag-5'>SysTick</b>系統<b class='flag-5'>定時</b>器

    STM32F4: Systick滴答定時器-延時函數講解(五)

    CM3,CM4內核芯片,都有Systick定時器。Systick定時器常用來做延時,或者實時系統的心跳時鐘。這樣可以節省MCU資源,不用浪費一個定時
    發表于 12-01 15:21 ?15次下載
    <b class='flag-5'>STM32</b>F4: <b class='flag-5'>Systick</b>滴答<b class='flag-5'>定時</b>器-延時函數講解(五)

    Stm32入門——Systick定時

    Stm32入門——Systick定時Systick定時器是什么?從原理上來說,Systick
    發表于 12-07 17:51 ?12次下載
    <b class='flag-5'>Stm32</b>入門——<b class='flag-5'>Systick</b><b class='flag-5'>定時</b>器

    STM32學習筆記(5)——系統定時SysTick

    單獨拿出來講的一個內核外設(所以不要期望在STM32中文參考手冊找到它!即使找到也只會叫你看cm3內核編程手冊),說明它真的很重要。STM32學習筆記(5)——系統定時SysTick
    發表于 12-23 19:56 ?4次下載
    <b class='flag-5'>STM32</b>學習筆記(5)——系統<b class='flag-5'>定時</b>器<b class='flag-5'>SysTick</b>

    STM32筆記(七)---Systick系統定時

    SysTick系統定時器文章目錄SysTick系統定時器一、 概念1-1 Systick簡介1-2 Sy
    發表于 12-23 20:01 ?1次下載
    <b class='flag-5'>STM32</b>筆記(七)---<b class='flag-5'>Systick</b>系統<b class='flag-5'>定時</b>器

    初學stm32-Systick滴答時鐘定時

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

    STM32SysTick滴答定時器(delay延時函數講解)

    Systick定時器,是一個簡單的定時器,對于CM3、CM4內核芯片,都有Systick定時器。Syst
    發表于 02-10 10:35 ?13次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>SysTick</b>滴答<b class='flag-5'>定時</b>器(delay延時函數講解)
    主站蜘蛛池模板: 日韩精品在线一区二区| 国产成人久视频免费| 欧美+日本+国产+在线观看| 美女被色| 成年女人毛片免费观看97| 午夜国产高清精品一区免费| 玖操在线| 69女poren18女| 一级毛片aaa片免费观看| 2022年永久免费观看| 婷婷激情五月| 美女视频网站色软件免费视频| 午夜美女视频在线观看高清| www天天操| 久久第一页| 色多多免费视频观看区一区| 久青草视频在线| 午夜免费小视频| 日本一区二区三区免费看| 四虎影院最新网站| 韩国三级在线视频| 天天干天天要| 91在线视频观看| 亚州免费一级毛片| 黄色在线免费看| 人人艹人人干| 视频在线一区二区| 四虎永久在线精品国产| 666精品国产精品亚洲| jizjizjizjiz日本护士出水| 黄视频网站免费| 女人牲交一级毛片| 久操视频在线免费观看| 欧美视频不卡一区二区三区| 色播五月综合| 日日干干| 国产精品久久久精品三级| 欧美一区二区三区在线观看 | 国产亚洲第一伦理第一区| 天堂在线bt| 男女一进一出无遮挡黄|