秉火429笔记之十一 Systick--滴答定时器
生活随笔
收集整理的這篇文章主要介紹了
秉火429笔记之十一 Systick--滴答定时器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
1. 概述
2. 寄存器說明
3. 編程要點
4. 實例代碼
SysTick—系統定時器是屬于CM4內核中的一個外設,內嵌在NVIC中。系統定時器是一個24bit的向下遞減的計數器。所有基于CM4內核的單片機都具有這個系統定時器,使得軟件在CM4單片機中可以很容易的移植。系統定時器一般用于操作系統,用于產生時基,維持操作系統的心跳。
2. 寄存器說明
- CTRL? SysTick控制及狀態寄存器
| 16 | COUNTFLAG | R/W | 0 | 如果在上次讀取本寄存器后, SysTick 已經計到 了 0,則該位為 1。 |
| 2 | CLKSOURCE | R/W | 0 | 時鐘源選擇位,0=AHB/8,1=處理器時鐘AHB |
| 1 | TICKINT | R/W | 0 | 1=SysTick倒數計數到 0時產生 SysTick異常請 求,0=數到 0 時無動作。也可以通過讀取COUNTFLAG標志位來確定計數器是否遞減到0 |
| 0 | ENABLE | R/W | 0 | SysTick 定時器的使能位 |
- LOAD? SysTick重裝載數值寄存器
- VAL SysTick當前數值寄存器
- CALIB SysTick校準數值寄存器(可忽略)
3. 編程要點
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) {if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */SysTick->LOAD = ticks - 1; /* set reload register */NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */SysTick->VAL = 0; /* Load the SysTick Counter Value */SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | /* CLKSOURCE = AHB */SysTick_CTRL_TICKINT_Msk |SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */return (0); /* Function successful */ }?參照代碼可知
4. 實例代碼
/*** @brief 啟動系統滴答定時器 SysTick* @param 無* @retval 無*/ void SysTick_Init(void) {/* SystemFrequency / 1000 1ms中斷一次* SystemFrequency / 100000 10us中斷一次* SystemFrequency / 1000000 1us中斷一次*/if (SysTick_Config(SystemCoreClock / 100000)){ /* Capture error */ while (1);} }?
總結
以上是生活随笔為你收集整理的秉火429笔记之十一 Systick--滴答定时器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于单片机烟雾及温度报警器-火灾监测-毕
- 下一篇: 成功,很简单!推荐5款网站,拒绝做行动上