stm32利用SysTick實現精確定時

2021-06-20 05:22:29 字數 1157 閱讀 6018

stm32定時器資源雖然豐富,但是在一些專案中,我們任然希望不借助傳統定時器實現精確延時,這樣在面對一些對定時器資源需求多的專案我們剩下資源用來做該做事情。stm32用的是arm cortex-mx系列的核心,該核心具有乙個滴答時鐘,這個滴答時鐘大意就是在配置完時鐘源和使能以後能進入到中斷處理函式中。是為了方便一些作業系統,諸如ucos等系統,的移植,作為任務呼叫的同步節拍。以下是在stm32f103上利用systick來實現精確延時的步驟。

第一步:配置時鐘源

[cpp]view plain

copy

print?

void systick_configuration(void)  

nvic_setpriority (systick_irqn, 3);                   // the highest priority */

}  

void systick_configuration(void)

nvic_setpriority (systick_irqn, 3); // the highest priority */

}

第二步:寫中斷處理函式

[cpp]view plain

copy

print?

void systick_handler(void)  

void systick_handler(void)

第三步:寫延時函式

[cpp]view plain

copy

print?

volatile unsigned int timingdelay = 0;  

void delay_ms(unsigned int n)  

void delay_us(unsigned int n)    

volatile unsigned int timingdelay = 0;

void delay_ms(unsigned int n)

void delay_us(unsigned int n)

完成

利用STM32的SysTick設計精確延時函式

在專案中使用i2c介面感測器時要求有比較精確的延時,在網上搜了下,如果不想用中斷systick定時器可以做到,找到如下資料 主要仿照原子的 stm32 不完全手冊 systick 的時鐘固定為 hclk 時鐘的1 8 在這裡我們選用內部時鐘源 72m,所以 systick 的時鐘為 9m,即 sys...

stm32的Systick定時器

systick定時器簡介 systick定時器就是系統滴答定時器,乙個24 位的倒計數定時器,計到0 時,將從reload 暫存器中自動重裝載定時初值。只要不把它在systick 控制及狀態暫存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。systick定時器被 在nvic中,用於產生sy...

STM32學習筆記3 Systick

對於stm32中,有乙個經常用到,卻在資料手冊上很少資料的工具,那就是systick,這個工具是所有cortex m0核心的微控制器所共有的,他是乙個系統定時器,其存在的主要目的是為嵌入式作業系統提供100hz 即10ms 的定時節拍。當然,也可以做為其它的普通定時等其他用途。下面,我們就開始理解這...