日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【STM32】STM32f4学习之路--嘀嗒定时器

發布時間:2025/4/16 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【STM32】STM32f4学习之路--嘀嗒定时器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

嘀嗒定時器,作為stm32特有的系統定時器,它的出現,旨在為用戶在使用OS以及延時的時候提供一個精確的定時。

SysTick 是 MDK 定義了的一個結構體(在 core_m4.h 里面),里面包含 CTRL、LOAD、VAL、CALIB 等 4 個寄存器;


CTRL寄存器:顧名思義就是SYSTick的控制寄存器。它的幾個常用位如下圖,其中CLKSOURCE位為1的時候,嘀嗒計時器將選擇系統時鐘8分頻后的時鐘(即168/8=21),我們一般采用這個。


LOAD:重裝載的值(0-23位)


VAl:返回當前倒計數的值(0-23)


根據以上,我們可以編寫一小段程序作為延時程序:

//nus應小于2^24/21=798915 void _Delay_us(u32 nus) {SysTick->CTRL&=~(1<<2);//選擇時鐘源為21MHzSysTick->CTRL&=~(1<<1);//SYsTick數到0時無動作SysTick->LOAD=21*nus;//裝載的值,此值每減1,需要1/21us,故用21*nusSysTick->CTRL|=(1<<0);//使能SySTickwhile(!(SysTick->CTRL&(1<<16)));//等待倒計數數到0} void _Delay_ms(u32 nms) {SysTick->CTRL&=~(1<<2);//選擇時鐘源為21MHzSysTick->CTRL&=~(1<<1);//SYsTick數到0時無動作SysTick->LOAD=21000*nms;//裝載的值,此值每減1,需要1/21us,故用21*nusSysTick->CTRL|=(1<<0);//使能SySTickwhile(!(SysTick->CTRL&(1<<16)));//等待倒計數數到0}

Systick 的時鐘來自系統時鐘 8 分頻, 正因為如此,系統時鐘如果不是 8 的倍數(不能被 8 整除),則會導致延時函數不準確,所以STM32的外部晶振一般采用8MHz的。

總結

以上是生活随笔為你收集整理的【STM32】STM32f4学习之路--嘀嗒定时器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。