国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32系統(tǒng)滴答定時(shí)器SysTick實(shí)現(xiàn)精確ms和us延時(shí)

這篇具有很好參考價(jià)值的文章主要介紹了STM32系統(tǒng)滴答定時(shí)器SysTick實(shí)現(xiàn)精確ms和us延時(shí)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

時(shí)間記錄:2023/12/11
一、時(shí)間的計(jì)算
STM32F103C8T6單片機(jī)為例,系統(tǒng)時(shí)鐘為72MHz,則一個(gè)時(shí)鐘周期為(1/72M)秒,即1/72us
二、寄存器介紹
(1)CTRL控制及狀態(tài)寄存器

位段 名稱 描述
16 COUNTFLAG 當(dāng)計(jì)數(shù)到0時(shí),該位置為1,當(dāng)讀取該位時(shí),自動(dòng)清零
2 CLKSOURCE 值為0時(shí)選擇外部時(shí)鐘源,值為1時(shí)選擇內(nèi)核時(shí)鐘
1 TICKINT 值為1時(shí),計(jì)數(shù)到0產(chǎn)生SysTick中斷,值為0時(shí),計(jì)數(shù)到0無(wú)動(dòng)作
0 ENABLE SysTick使能位

(2)LOAD重裝載數(shù)值寄存器

位段 名稱 描述
23:0 RELOAD 當(dāng)計(jì)數(shù)到零時(shí),自動(dòng)加載的計(jì)數(shù)值

(3)VAL當(dāng)前數(shù)值寄存器

位段 名稱 描述
23:0 CURRENT 讀取時(shí)返回當(dāng)前倒計(jì)數(shù)的值,向其中寫(xiě)入值時(shí),自動(dòng)清零并且會(huì)清除CTRL寄存器的COUNTFLAG位

三、配置步驟
3.1 配置時(shí)鐘源
3.2 計(jì)算延時(shí)1us和1ms的時(shí)鐘周期
3.3 裝入自動(dòng)重裝載值
3.4 向當(dāng)前值寄存器寫(xiě)入值
3.5 使能SysTick開(kāi)始計(jì)數(shù)
3.6 循環(huán)判斷是否到達(dá)計(jì)數(shù)值
3.7 清除SysTick使能位停止計(jì)數(shù)
四、代碼展示
頭文件(.h文件)

#ifndef __DELAY_H__
#define __DELAY_H__
#include "stm32f10x.h"

static int fac_us=0;
static int fac_ms=0;

//滴答定時(shí)器初始化
void vDelayInit(void);
//計(jì)時(shí)微妙
void vDelayUs(u32 nus);
//計(jì)時(shí)毫秒
void vDelayMs(u16 nms);

#endif

源文件(.c文件)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-821351.html

#include "delay.h"

void vDelayInit(void)
{
    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//配置時(shí)鐘源為外部時(shí)鐘9MHz,一個(gè)時(shí)鐘周期時(shí)間為1/9us
    fac_us=SystemCoreClock/8/1000000;//計(jì)算1us的計(jì)數(shù)周期,9個(gè)周期,即9*1/9=1us
    fac_ms=fac_us*1000;//計(jì)算1ms的計(jì)數(shù)周期
}

void vDelayUs(u32 nus)
{
    u32 temp;
    SysTick->LOAD = fac_us*nus;     //自動(dòng)重裝載值寄存器,當(dāng)計(jì)數(shù)到0時(shí),將被重裝載的值
    SysTick->VAL = 0x00;            //當(dāng)前值寄存器,返回當(dāng)前倒計(jì)數(shù)的值,寫(xiě)它則使之清零
    SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;          //使能,開(kāi)始計(jì)數(shù)
    do{
        temp=SysTick->CTRL;
    }while((temp&0x01)&&!(temp&(1<<16)));   //使能位沒(méi)有清零,并且COUNTFLAG=0(沒(méi)有數(shù)完)
    SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;          //失能,停止計(jì)數(shù)
    SysTick->VAL = 0x00;
}

void vDelayMs(u16 nms)
{
    if(nms>1864){//由于是24位寄存器,最大計(jì)數(shù)為0xFFFFFF=16777215/9000=1864
        return;
    }
    
    u32 temp;
    SysTick->LOAD = (u32)fac_ms*nms;     //自動(dòng)重裝載值寄存器,當(dāng)計(jì)數(shù)到0時(shí),將被重裝載的值
    SysTick->VAL = 0x00;            //當(dāng)前值寄存器,返回當(dāng)前倒計(jì)數(shù)的值,寫(xiě)它則使之清零
    SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;          //使能,開(kāi)始計(jì)數(shù)
    do{
        temp=SysTick->CTRL;
    }while((temp&0x01)&&!(temp&(1<<16)));   //使能位沒(méi)有清零,并且COUNTFLAG=0(沒(méi)有數(shù)完)
    SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;          //失能,停止計(jì)數(shù)
    SysTick->VAL = 0x00;
}

到了這里,關(guān)于STM32系統(tǒng)滴答定時(shí)器SysTick實(shí)現(xiàn)精確ms和us延時(shí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【致敬未來(lái)的攻城獅計(jì)劃】— 連續(xù)打卡第十六天:FSP固件庫(kù)系統(tǒng)定時(shí)器(滴答定時(shí)器SysTick)每2秒LED閃爍一次

    【致敬未來(lái)的攻城獅計(jì)劃】— 連續(xù)打卡第十六天:FSP固件庫(kù)系統(tǒng)定時(shí)器(滴答定時(shí)器SysTick)每2秒LED閃爍一次

    1.連續(xù)打卡第一天:提前對(duì)CPK_RA2E1是瑞薩RA系列開(kāi)發(fā)板的初體驗(yàn),了解一下 2.開(kāi)發(fā)環(huán)境的選擇和調(diào)試(從零開(kāi)始,加油) 3.欲速則不達(dá),今天是對(duì)RA2E1 基礎(chǔ)知識(shí)的補(bǔ)充學(xué)習(xí)。 4.e2 studio 使用教程 5.Keil配置使用(使用 RASC 生成 Keil 工程) 6.Keil配置使用(使用 RASC 生成 Keil 工程)

    2024年02月01日
    瀏覽(22)
  • 2.STM32 SysTick定時(shí)器

    2.STM32 SysTick定時(shí)器

    一、SysTick定時(shí)器概念 SysTick定時(shí)器是一種在嵌入式系統(tǒng)中常用的定時(shí)器,它是由ARM Cortex-M處理器核內(nèi)置的定時(shí)器。SysTick定時(shí)器具有精簡(jiǎn)、低功耗和易用的特點(diǎn),可以用來(lái)實(shí)現(xiàn)各種定時(shí)、延時(shí)和時(shí)間基準(zhǔn)等功能。 二、SysTick定時(shí)器的主要特性 ? 1. 單調(diào)遞增計(jì)數(shù)器:SysTick定時(shí)器

    2024年02月22日
    瀏覽(27)
  • STM32F407 滴答定時(shí)器

    STM32F407 滴答定時(shí)器

    介紹STM32F407滴答定時(shí)器配置方法、使用方式,封裝延時(shí)函數(shù)得到精確的時(shí)間。 STM32F407參考手冊(cè)中第10章介紹了滴答定時(shí)器的校準(zhǔn)值。 M4權(quán)威指南介紹滴答定時(shí)器的章節(jié),M3權(quán)威指南中與M4權(quán)威指南中的介紹一樣。 在sys.c文件中增加滴答定時(shí)器的代碼 在delay.c文件增加以下代碼

    2024年02月11日
    瀏覽(30)
  • stm32的學(xué)習(xí)——SysTick定時(shí)器的使用

    stm32的學(xué)習(xí)——SysTick定時(shí)器的使用

    SysTick定時(shí)器也稱為滴答定時(shí)器,SysTick定時(shí)器是內(nèi)核中的一個(gè)外設(shè),內(nèi)嵌在NVIC(嵌套向量中斷控制器)里面,在cortex M3、M4中都存在,很方便用戶移植。 雖然我用的是cortex M4的內(nèi)核,但是他的內(nèi)核文檔在這方面和Cortex M3的相似。 所以我這里參考了M3的內(nèi)核中文文檔。M3和M4內(nèi)核

    2024年02月04日
    瀏覽(23)
  • 【STM32筆記】低功耗模式、WFI命令等進(jìn)入不了休眠的可能原因(系統(tǒng)定時(shí)器SysTick一直產(chǎn)生中斷)

    【STM32筆記】低功耗模式、WFI命令等進(jìn)入不了休眠的可能原因(系統(tǒng)定時(shí)器SysTick一直產(chǎn)生中斷)

    【STM32】低功耗模式、WFI命令等進(jìn)入不了休眠的可能原因(系統(tǒng)定時(shí)器SysTick一直產(chǎn)生中斷) 【STM32筆記】低功耗模式配置及避坑匯總 前文: blog.csdn.net/weixin_53403301/article/details/128216064 【STM32筆記】HAL庫(kù)低功耗模式配置(ADC喚醒無(wú)法使用、低功耗模式無(wú)法燒錄解決方案) __WFI

    2024年02月10日
    瀏覽(119)
  • STM32 F103C8T6學(xué)習(xí)筆記4:時(shí)鐘樹(shù)、滴答計(jì)時(shí)器、定時(shí)器定時(shí)中斷

    STM32 F103C8T6學(xué)習(xí)筆記4:時(shí)鐘樹(shù)、滴答計(jì)時(shí)器、定時(shí)器定時(shí)中斷

    今日理解一下STM32F103 C8T6的時(shí)鐘與時(shí)鐘系統(tǒng)、滴答計(jì)時(shí)器、定時(shí)器計(jì)時(shí)中斷的配置,文章提供原理,代碼,測(cè)試工程下載。 目錄 時(shí)鐘樹(shù)與時(shí)鐘系統(tǒng): 滴答計(jì)時(shí)器: 定時(shí)器計(jì)時(shí)中斷: 測(cè)試結(jié)果: 測(cè)試工程下載: 該系統(tǒng)介紹在 STM32F10x-中文參考手冊(cè) P56頁(yè)開(kāi)始 微控制器的時(shí)鐘系

    2024年02月13日
    瀏覽(32)
  • 關(guān)于STM32的hal庫(kù)中滴答定時(shí)器uwTick溢出的思考和分析

    思考:如果中斷函數(shù)HAL_IncTick中的uwTick一直增加導(dǎo)致溢出會(huì)不會(huì)導(dǎo)致延時(shí)不準(zhǔn)? 下面展示一些 STM32的官方庫(kù)文件stm32f1xx_hal.c部分摘錄 。 系統(tǒng)Tick頻率設(shè)置為1毫秒中斷一次,每1ms產(chǎn)生一次Tick中斷, 在Tick中斷中uwTick++; 那么當(dāng)自增到0xFFFFFFFF后就會(huì)溢出,再?gòu)?開(kāi)始自增 。 0xFFFF

    2024年03月21日
    瀏覽(27)
  • STM32—系統(tǒng)定時(shí)器

    SysTick是一種系統(tǒng)定時(shí)器,可以用于實(shí)現(xiàn)操作系統(tǒng)、任務(wù)調(diào)度、時(shí)鐘管理等功能。它通常集成在微控制器中,并且是硬件實(shí)現(xiàn)的,具有高精度和可靠性。 在ARM Cortex-M處理器中,SysTick定時(shí)器可以配置為計(jì)數(shù)器模式或外部時(shí)鐘模式。在計(jì)數(shù)器模式下,SysTick定時(shí)器使用內(nèi)部時(shí)鐘作為

    2024年02月21日
    瀏覽(19)
  • 超詳細(xì)!必看!!STM32--系統(tǒng)滴答SysTick

    超詳細(xì)!必看??!STM32--系統(tǒng)滴答SysTick

    Systick定時(shí)器是一個(gè)24bit的倒計(jì)時(shí)(向下計(jì)數(shù))定時(shí)器,功能就是實(shí)現(xiàn)簡(jiǎn)單的延時(shí)。 SysTick 是一種系統(tǒng)定時(shí)器,通常在嵌入式系統(tǒng)中使用。它是 ARM Cortex-M 處理器的一個(gè)特殊定時(shí)器,用于提供系統(tǒng)級(jí)的定時(shí)服務(wù)。SysTick 可以用于生成定時(shí)中斷,以便執(zhí)行特定的任務(wù)或進(jìn)行系統(tǒng)級(jí)的

    2024年01月20日
    瀏覽(45)
  • 【STM32筆記】STM32的定時(shí)器開(kāi)發(fā)基礎(chǔ)(二)(基于STM32CubeMX實(shí)現(xiàn)定時(shí)器中斷)

    【STM32筆記】STM32的定時(shí)器開(kāi)發(fā)基礎(chǔ)(二)(基于STM32CubeMX實(shí)現(xiàn)定時(shí)器中斷)

    ? 傳統(tǒng)STM32外部中斷 的設(shè)計(jì)步驟: ?(1)將GPIO初始化為輸入端口。 ?(2)配置相關(guān)I/O引腳與中斷線的映射關(guān)系。 ?(3)設(shè)置該I/O引腳對(duì)印的中斷觸發(fā)條件。 ?(4)配置NVIC,并使能中斷。 ?(5)編寫(xiě)中斷服務(wù)函數(shù)。 ? 基于STM32CubeMX的外部中斷 設(shè)計(jì)步驟 ?(1)在STM3

    2024年02月20日
    瀏覽(98)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包