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

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

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

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

CKS32F4xx系列MCU SysTick定時(shí)器的原理及使用方法

中科芯MCU ? 來(lái)源:中科芯MCU ? 2023-12-18 09:21 ? 次閱讀

本課將為大家講解CKS32F4xx系列產(chǎn)品的SysTick定時(shí)器原理及使用方法。SysTick定時(shí)器也叫SysTick滴答定時(shí)器,屬于Cortex-M4內(nèi)核外設(shè)。SysTick定時(shí)器可以用于查詢延時(shí)、中斷延時(shí)以及測(cè)量函數(shù)運(yùn)行時(shí)間;在實(shí)時(shí)操作系統(tǒng)RTOS中作為滴答定時(shí)器,用于上下文切換。采用Cortex-M內(nèi)核的微處理都有SysTick定時(shí)器,方便不同處理器之間的軟件移植。SysTick定時(shí)器時(shí)鐘源可直接選取系統(tǒng)時(shí)鐘,還可以通過(guò)系統(tǒng)時(shí)鐘8分頻后取得。

SysTick定時(shí)器內(nèi)部是一個(gè)遞減的計(jì)時(shí)器,當(dāng)減到0時(shí),將從LOAD寄存器中自動(dòng)重裝定時(shí)器初始值,重新向下遞減計(jì)數(shù),如此循環(huán)往復(fù)。如果開(kāi)啟SysTick中斷,當(dāng)計(jì)數(shù)器減到0時(shí),SysTick可以生產(chǎn)異常,異常編號(hào)為15。

SysTick定時(shí)器寄存器

SysTick定時(shí)器內(nèi)部是一個(gè)24位向下遞減的計(jì)時(shí)器,包含4個(gè)寄存器,如圖。

34167e5a-9bf6-11ee-8b88-92fbcf53809c.png

圖1SysTick定時(shí)器框圖

1)STK_CTRL寄存器

STK_CTRL是SysTick定時(shí)器的控制及狀態(tài)寄存器,相應(yīng)功能如下:

3429746a-9bf6-11ee-8b88-92fbcf53809c.jpg

2)STK_LOAD寄存器

STK_LOAD寄存器是SysTick定時(shí)器的重裝載數(shù)值寄存器,相應(yīng)功能如下:

3438bc86-9bf6-11ee-8b88-92fbcf53809c.jpg

3)STK_VAL寄存器

STK_VAL寄存器是SysTick定時(shí)器的當(dāng)前數(shù)值寄存器,相應(yīng)功能如下:

3441d30c-9bf6-11ee-8b88-92fbcf53809c.jpg

4)STK_CALIB寄存器

STK_CALIB寄存器是SysTick定時(shí)器的校準(zhǔn)數(shù)值定時(shí)器,用于利用片上硬件為軟件提供校準(zhǔn)信息,但使用情況較少。在CMSIS Core中,不需要使用SysTick校準(zhǔn)寄存器,因?yàn)镃MSIS Core提供了一個(gè)名為“SystemCoreClock”的軟件變量。此變量在系統(tǒng)初始化函數(shù)“SystemInit()”中設(shè)置,每次更改系統(tǒng)時(shí)鐘配置時(shí)也會(huì)更新。這種方法比使用SysTick CalibrationRegister的硬件方法靈活。校準(zhǔn)寄存器描述如下表:

3458cca6-9bf6-11ee-8b88-92fbcf53809c.jpg

查詢延時(shí)使用步驟

1)配置SysTick定時(shí)器時(shí)鐘源

2)加載延時(shí)計(jì)數(shù)值 3)清零計(jì)數(shù)器,啟動(dòng)定時(shí)器開(kāi)始遞減計(jì)數(shù) 4)等待計(jì)數(shù)結(jié)束 5)清零計(jì)數(shù),關(guān)閉定時(shí)器,延時(shí)結(jié)束 相關(guān)函數(shù)如下:

void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)
{
  if (SysTick_CLKSource == SysTick_CLKSource_HCLK)
  {
    SysTick->CTRL |= SysTick_CLKSource_HCLK;
  }
  else
  {
    SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;
  }
}
void TickDelayInit(u8 SYSCLK)
{
//選擇時(shí)鐘源為AHB/8
    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
fac_us=SYSCLK>>3;
fac_ms=((u32)SYSCLK*1000)>>3;
}
void TickDelayUs(u16 nus)
{
uint32_t temp;
SysTick->LOAD=nus*fac_us-1;
SysTick->VAL=0x00;
SysTick->CTRL=0x01;
do
{
temp=SysTick->CTRL;
}while((temp&0x01)&&!(temp&(1<<16)));
SysTick->CTRL=0x00;        
SysTick->VAL =0X00;       
}
void TickDelayMs(u16 nms)
{        
u32 temp;    
SysTick->LOAD=nms*fac_ms -1;
SysTick->VAL =0x00;
SysTick->CTRL=0x01 ;
do
{
temp=SysTick->CTRL;
}while((temp&0x01)&&!(temp&(1<<16)));
SysTick->CTRL=0x00;
SysTick->VAL =0X00;  
}

中斷方式延時(shí)使用步驟

1)配置SysTick定時(shí)器時(shí)鐘源

2)調(diào)用系統(tǒng)函數(shù)SysTick_Config(),開(kāi)啟中斷,配置中斷間隔

3)延時(shí)函數(shù)賦值延時(shí)變量,并等待延時(shí)變量遞減到0,達(dá)到精確延時(shí)效果

4)中斷函數(shù)中延時(shí)變量遞減到0 相關(guān)函數(shù)如下:

__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
   if ((ticks - 1) > 0xFFFFFF)//24位寄存器,大于該值返回錯(cuò)誤
   {
      return (1);  
   }
  SysTick->LOAD  = (uint32_t)(ticks - 1);//計(jì)數(shù)到0,ticks值應(yīng)減1   
  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1);
  SysTick->VAL   = 0UL;    
  SysTick->CTRL  = (1<<2) |(1<<1) | 1;//配置時(shí)鐘源,使能定時(shí)器,開(kāi)啟中斷
  return (0UL);  
}
void TickInterruptDelay(__IO u32 nTime)
{
  TimingDelay = nTime;
  while(TimingDelay != 0);
}
void TickInterruptHandleTimingDelay_Decrement(void)
{
  if (TimingDelay != 0)
   {
     TimingDelay--;
   }
}

測(cè)量短時(shí)函數(shù)的執(zhí)行時(shí)間

SysTick計(jì)時(shí)器可用于計(jì)時(shí)測(cè)量。例如,可以使用以下代碼測(cè)量短函數(shù)的持續(xù)時(shí)間:

SysTick->CTRL = 0; // 禁用 SysTick

SysTick->LOAD = 0xFFFFFFFF; // 設(shè)置重裝寄存器到最大值

SysTick->VAL = 0; // 清零VAL

SysTick->CTRL = 0x5; // 使能SysTick, 使用處理器時(shí)鐘

while(SysTick->VAL != 0); // 等待重裝完畢

start_time = SysTick->VAL; // 較大的起始點(diǎn)

TestDelayFunc(); // 待測(cè)函數(shù)執(zhí)行時(shí)間

stop_time = SysTick->VAL; // 獲取執(zhí)行結(jié)束時(shí)間

cycle_count = start_time e stop_time;//計(jì)算函數(shù)執(zhí)行時(shí)間

由于SysTick是一個(gè)遞減計(jì)數(shù)器,因此start_time的值大于stop_time。如果待測(cè)函數(shù)執(zhí)行時(shí)間較長(zhǎng),這種情況必須啟用SysTick異常,并使用SysTick處理程序來(lái)計(jì)算SysTick計(jì)數(shù)器下溢的次數(shù)。

總結(jié)及注意事項(xiàng)

SysTick定時(shí)器是微處理器系統(tǒng)內(nèi)部定時(shí)器,提供精確的時(shí)間延時(shí)和計(jì)時(shí)功能。采用中斷方式延時(shí),需要考慮SysTick中斷優(yōu)先級(jí)較低,容易被打斷影響延時(shí);在嵌入式系統(tǒng)中,系統(tǒng)將使用SysTick計(jì)時(shí)器,應(yīng)用程序中則不可在使用SysTick;在系統(tǒng)在線調(diào)試停止時(shí),SysTick計(jì)時(shí)器將停止計(jì)時(shí)。

審核編輯:湯梓紅

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

    關(guān)注

    146

    文章

    17876

    瀏覽量

    361282
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5425

    瀏覽量

    123559
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    7103

    瀏覽量

    125056
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3289

    瀏覽量

    117372
  • Systick
    +關(guān)注

    關(guān)注

    0

    文章

    63

    瀏覽量

    13505

原文標(biāo)題:MCU微課堂|CKS32F4xx系列SysTick定時(shí)器

文章出處:【微信號(hào):中科芯MCU,微信公眾號(hào):中科芯MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

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

    MCU微課堂|CKS32F4xx系列產(chǎn)品時(shí)鐘配置

    作為MCU運(yùn)行的基礎(chǔ),時(shí)鐘是單片機(jī)各個(gè)模塊工作時(shí)序的最小時(shí)間單位,推動(dòng)單片機(jī)的各指令執(zhí)行,是MCU選型的一個(gè)重要指標(biāo)。CKS32F4xx系列產(chǎn)品具有眾多的外設(shè),但并非所有的外設(shè)均需要系
    發(fā)表于 12-12 10:17 ?997次閱讀

    CKS32F4xx系列ETH通信詳解

    CKS32F4xx系列芯片自帶以太網(wǎng)模塊,該模塊包括帶專用DMA控制的MAC 802.3(介質(zhì)訪問(wèn)控制)控制
    的頭像 發(fā)表于 11-10 11:13 ?1359次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>ETH通信詳解

    基于CKS32F4xx系列MCU互補(bǔ)PWM方案

    互補(bǔ)輸出實(shí)際跟比較輸出章節(jié)一樣使用的是定時(shí)器的功能,所以相關(guān)的函數(shù)設(shè)置同樣在庫(kù)函數(shù)文件CKS32f4xx_tim.h和CKS32f4xx_tim.c文件中。 1)開(kāi)啟TIM1和GPIO時(shí)鐘,配置PA7、PA8選擇復(fù)用功能GPIO
    發(fā)表于 12-02 10:13 ?961次閱讀
    基于<b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>的<b class='flag-5'>MCU</b>互補(bǔ)PWM方案

    CKS32F4xx系列產(chǎn)品串口DMA傳輸

    在上一講,我們講過(guò)CKS32F4xx系列的6個(gè)串口都支持DMA傳輸。因此本節(jié)我們對(duì)CKS32F4xx系列的DMA進(jìn)行介紹,同時(shí)利用DMA對(duì)串口數(shù)據(jù)進(jìn)行傳輸。
    的頭像 發(fā)表于 04-10 11:18 ?1334次閱讀

    CKS32F4xx系列產(chǎn)品的定時(shí)器使用-基本特征和定時(shí)操作

    這一課我們將介紹CKS32F4XX系列產(chǎn)品的定時(shí)器使用,CKS32F4XX定時(shí)器功能十分強(qiáng)大,包含2個(gè)高級(jí)控制
    的頭像 發(fā)表于 05-19 09:18 ?1213次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產(chǎn)品的<b class='flag-5'>定時(shí)器</b>使用-基本特征和<b class='flag-5'>定時(shí)</b>操作

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時(shí)器脈沖計(jì)數(shù)

    上一章我們介紹了CKS32F4的通用定時(shí)器定時(shí)操作的使用方法,這一章我們將向大家介紹通用定時(shí)器作為定時(shí)器
    的頭像 發(fā)表于 06-05 09:39 ?1277次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產(chǎn)品Timer的基本<b class='flag-5'>使用方法</b>-<b class='flag-5'>定時(shí)器</b>脈沖計(jì)數(shù)

    CKS32F4xx系列RNG功能設(shè)置

    ? MCU 微課堂 CKS32F4xx 系 列RNG功能 隨機(jī)數(shù)發(fā)生簡(jiǎn)介 ? ? CKS32F4xx系列自帶了硬件隨機(jī)數(shù)發(fā)生
    的頭像 發(fā)表于 09-08 10:01 ?886次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>RNG功能設(shè)置

    CKS32F4xx系列DAC功能

    CKS32F4xx系列DAC功能
    的頭像 發(fā)表于 11-06 16:56 ?1117次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>DAC功能

    CKS32F4xx系列ADC多通道DMA電壓采集

    CKS32F4xx系列ADC多通道DMA電壓采集
    的頭像 發(fā)表于 11-06 16:53 ?1341次閱讀

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時(shí)器脈沖計(jì)數(shù)

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時(shí)器脈沖計(jì)數(shù)
    的頭像 發(fā)表于 11-09 17:38 ?1381次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產(chǎn)品Timer的基本<b class='flag-5'>使用方法</b>-<b class='flag-5'>定時(shí)器</b>脈沖計(jì)數(shù)

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-比較輸出

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-比較輸出
    的頭像 發(fā)表于 11-09 17:39 ?1128次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產(chǎn)品Timer的基本<b class='flag-5'>使用方法</b>-比較輸出

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時(shí)操作

    CKS32F4xx系列產(chǎn)品Timer的基本使用方法-定時(shí)操作
    的頭像 發(fā)表于 11-09 17:41 ?821次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產(chǎn)品Timer的基本<b class='flag-5'>使用方法</b>-<b class='flag-5'>定時(shí)</b>操作

    MCU微課堂 | CKS32F4xx系列產(chǎn)品SPI通信

    MCU微課堂 | CKS32F4xx系列產(chǎn)品SPI通信
    的頭像 發(fā)表于 10-24 17:12 ?1013次閱讀
    <b class='flag-5'>MCU</b>微課堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產(chǎn)品SPI通信

    MCU微課堂 | CKS32F4xx系列產(chǎn)品GPIO口配置

    MCU微課堂 | CKS32F4xx系列產(chǎn)品GPIO口配置
    的頭像 發(fā)表于 10-24 15:14 ?1082次閱讀
    <b class='flag-5'>MCU</b>微課堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>產(chǎn)品GPIO口配置

    CKS32F4xx系列FSMC功能簡(jiǎn)介

    本課講為大家講解CKS32F4xx系列產(chǎn)品的FSMC應(yīng)用實(shí)例,F(xiàn)SMC全稱是Flexible Static Memory Controller,讀作靈活的靜態(tài)存儲(chǔ)控制,顧名思義,MCU
    的頭像 發(fā)表于 04-14 15:06 ?1407次閱讀
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>FSMC功能簡(jiǎn)介
    主站蜘蛛池模板: 国产在线视欧美亚综合 | 特级毛片视频在线 | 久久sese| 35pao免费视频 | 亚洲人成网站色7777 | 日本黄色美女网站 | 扒开末成年粉嫩的流白浆视频 | 黄页网站在线播放 | 日夜夜操 | 日韩色爱 | 国产h视频在线观看网站免费 | 苦瓜se影院在线视频网站 | 三级aa久久 | 日本不卡视频免费 | 精品精品国产理论在线观看 | 亚洲最新在线 | 伊人久操 | 婷婷在线观看香蕉五月天 | 天天狠天天透天干天天怕处 | 被啪漫画羞羞漫画 | 欧美特黄一区二区三区 | 2021韩国理论片ok电影天堂 | 色多多www视频在线观看免费 | 免费的男女拍拍拍的视频 | 91夫妻视频| 免费网站日本 | 五月天在线播放 | 婷婷开心激情 | 午夜影视在线视频观看免费 | 狠狠色狠色综合曰曰 | 一级毛片在线免费视频 | 日韩综合色 | 奇米影视四色7777久久精品 | 激情亚洲综合网 | 你懂的在线看 | 三级毛片免费看 | 黄色免费网站在线 | 天天色色色 | 日本噜噜影院 | 啪啪中文字幕 | 操干|