在單片機(jī)和嵌入式開發(fā)中,經(jīng)常會(huì)遇到PWM(脈寬調(diào)制)、定時(shí)器、SysTick(系統(tǒng)滴答定時(shí)器)這幾個(gè)詞。很多初學(xué)者容易把它們混為一談,以為都是“定時(shí)相關(guān)的東西”。其實(shí),它們在本質(zhì)和應(yīng)用上有明顯差別。下面我們來梳理清楚。
一、基本概念
定時(shí)器(Timer)
MCU 內(nèi)最基礎(chǔ)的計(jì)數(shù)外設(shè),通過計(jì)數(shù)時(shí)鐘周期實(shí)現(xiàn)定時(shí)、計(jì)數(shù)功能。多數(shù) MCU 內(nèi)部有多個(gè)通用定時(shí)器,可配置為定時(shí)中斷、事件觸發(fā)或輸入捕獲等。
示例:STM32 16 位定時(shí)器每 1ms 觸發(fā)一次中斷
- HAL_TIM_Base_Start_IT(&htim2);// 啟動(dòng)定時(shí)器中斷
- voidHAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim){
- if(htim->Instance==TIM2){
- // 每 1ms 執(zhí)行的任務(wù)
- }
- }
PWM(Pulse Width Modulation,脈寬調(diào)制)
嚴(yán)格來說,PWM 并非獨(dú)立硬件,而是基于定時(shí)器的一種輸出模式。它通過控制高電平與低電平的占空比,調(diào)節(jié)輸出信號的平均電壓,實(shí)現(xiàn) LED 調(diào)光、馬達(dá)調(diào)速等。
示例:STM32 生成 1 kHz,50% 占空比 PWM
- HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
- __HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,500);// 占空比 50%
SysTick(System Tick Timer,系統(tǒng)滴答定時(shí)器)ARM Cortex-M 系列內(nèi)核自帶的24 位倒計(jì)時(shí)定時(shí)器,主要用于操作系統(tǒng)節(jié)拍(OS Tick),也可作為輕量級定時(shí)器使用。它獨(dú)立于通用定時(shí)器,硬件固定,配置簡單。、
示例:使用 SysTick 生成 1ms Tick
- HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);// 系統(tǒng)時(shí)鐘 1ms
- voidSysTick_Handler(void){
- HAL_IncTick();// 系統(tǒng)時(shí)間遞增
- }

- 三、應(yīng)用場景舉例
- 定時(shí)器(Timer)系統(tǒng)定時(shí)中斷(如每 1 ms 觸發(fā)一次)
- 測量脈沖寬度(捕獲模式)
- 外部信號計(jì)數(shù)(計(jì)數(shù)模式)
- 與 PWM 配合生成復(fù)雜波形PWM電機(jī)調(diào)速(通過占空比控制速度)
- LED 調(diào)光(調(diào)節(jié)亮度,避免閃爍)
- 模擬電壓輸出(通過濾波電路平滑波形)
- 簡單音頻輸出(模擬 DAC 方案)
- SysTickRTOS 心跳定時(shí)(如 FreeRTOS 1ms Tick)
- 簡單延時(shí)函數(shù)(中斷或計(jì)數(shù)實(shí)現(xiàn))
- 周期性任務(wù)調(diào)度(輕量級應(yīng)用)
- 四、總結(jié)定時(shí)器:基礎(chǔ)硬件,功能靈活,可用于計(jì)數(shù)、比較、捕獲等。
- PWM:定時(shí)器的應(yīng)用模式,用于波形輸出與占空比調(diào)節(jié)。
- SysTick:Cortex-M 內(nèi)核自帶的簡化定時(shí)器,主要服務(wù)系統(tǒng)調(diào)度。
- 可以類比理解:定時(shí)器 = 萬能工具箱PWM = 工具箱里的電烙鐵(專門輸出“熱量”)SysTick = 內(nèi)核贈(zèng)送的小手表(簡單好用,但功能有限)
-
PWM
+關(guān)注
關(guān)注
116文章
5872瀏覽量
225757 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3368瀏覽量
123742 -
Systick
+關(guān)注
關(guān)注
0文章
67瀏覽量
13970
發(fā)布評論請先 登錄
STM32 SYSTICK定時(shí)器常見問題
Systick定時(shí)器是什么?
SysTick—系統(tǒng)定時(shí)器
SysTick定時(shí)器介紹,SysTick定時(shí)器寄存器
MCU中定時(shí)器的可能應(yīng)用場景
STM32入門(十五)----SysTick系統(tǒng)定時(shí)器
STM32F4: Systick滴答定時(shí)器-延時(shí)函數(shù)講解(五)
Systick定時(shí)器幾個(gè)簡單的函數(shù)簡介
SysTick 定時(shí)器
Stm32入門——Systick定時(shí)器
STM32筆記(七)---Systick系統(tǒng)定時(shí)器
systick定時(shí)器 延時(shí)計(jì)時(shí)
【STM32】SysTick滴答定時(shí)器(delay延時(shí)函數(shù)講解)
PWM、定時(shí)器、SysTick 區(qū)別及應(yīng)用場景
評論