STM32CUBEMX F103 HAL庫(kù)開(kāi)發(fā)之 定時(shí)器中斷多任務(wù)

stm32定時(shí)器簡(jiǎn)介

stm32的定時(shí)器資源還是相當(dāng)豐富的,連最基礎(chǔ)的stm32f103c8t6都有四個(gè)定時(shí)器,更高級(jí)的zet6,或者f4系列的有十幾個(gè)定時(shí)器,相比arduino來(lái)說(shuō)強(qiáng)大了太多,利用好了可以實(shí)現(xiàn)確定時(shí)間間隔的做某件事情,多個(gè)定時(shí)器中斷可以用來(lái)做多件事情,不使用延時(shí)也能夠?qū)⒊绦驅(qū)崿F(xiàn),而且更快,更靈敏。

STM32F103C8T6 - Black Pill 定時(shí)器資源

STM32F103C8T6 - Black Pill

定時(shí)器資源概覽
定時(shí)器

stm32f103c8t6一共有四個(gè)定時(shí)器,每個(gè)定時(shí)器都可以用來(lái)作為定時(shí)器中斷模式,也可以以將定時(shí)器配置成PWM輸出模式,一個(gè)定時(shí)器可以同時(shí)輸出四路不同的PWM波

cubemx中配置定時(shí)器中斷

選擇芯片過(guò)程不再贅述

RCC: HSE高速總線始終改為外部晶振

在這里插入圖片描述

SYS: DEBUG選擇 SW模式
在這里插入圖片描述

TIMER: Clock Source 選擇 internal Clock 內(nèi)部時(shí)鐘源
加粗樣式

Parameter Settings: 配置分頻72分頻,因?yàn)橹黝l為72MHZ,這樣分了之后定時(shí)器的工作頻率就是1MHZ,計(jì)數(shù)模式向上計(jì)數(shù),計(jì)數(shù)次數(shù)為 1000 ,這里的意思就是 定時(shí)器1MHZ的頻率工作,工作1000個(gè)周期觸發(fā)一次中斷,這樣 定時(shí)器中斷的頻率應(yīng)該為 1000HZ,也就是1/1000 s = 1ms觸發(fā)一次
定時(shí)器分頻設(shè)置

時(shí)鐘樹(shù)配置
時(shí)鐘樹(shù)

工程配置 IDE選擇 MDK V5
project

第一欄里選擇復(fù)制必要的庫(kù)文件 第二欄里勾選將文件分為.c和.h
codegen

最后點(diǎn)擊生成文件

注意 !

工程路徑絕對(duì)不能有中文名,否則會(huì)報(bào)錯(cuò),無(wú)法復(fù)制stm32的庫(kù)文件到你的工程

keil中添加處理函數(shù)

打開(kāi)生成的文件,在main.c中初始化的時(shí)候開(kāi)啟中斷

HAL_TIM_Base_Start_IT(&htim1); //開(kāi)啟定時(shí)器

在下面,或者自己創(chuàng)建一個(gè).c文件 include tim.h ,調(diào)用下面的回調(diào)函數(shù),這個(gè)是hal庫(kù)公用定時(shí)器中斷回調(diào)函數(shù),定時(shí)器1會(huì)在這里面以1ms一次的頻率循環(huán)

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance == TIM1)
  {
    //編寫(xiě)用戶函數(shù),1ms執(zhí)行一次
  }
}

如果要停用定時(shí)器則使用這個(gè)函數(shù)

HAL_TIM_Base_Stop_IT(&htim1);  //停止定時(shí)器

定時(shí)器中斷里面的函數(shù)絕對(duì)不要有延時(shí),時(shí)間控制可以使用累加器來(lái)做比如說(shuō)下面這樣,循環(huán)體里的函數(shù)時(shí)間為1s一次

int counter = 0 ;
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim==(&htim1))
    {
      counter++;
      if(counter == 1000)
        {
          counter = 0;
          //這里的循環(huán)頻率為1S
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容