国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

AS32系列MCU芯片TIM模塊的捕獲和比較

安芯 ? 來源:jf_29981791 ? 作者:jf_29981791 ? 2025-11-30 09:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、引言

AS32系列MCU芯片集成4個高級定時器,每個定時器包含一個32位自動重載計數器,該計數器由可編程預分頻器驅動,支持遞增、遞減、中心計數、編碼器模式等計數方式。

高級定時器具有6個獨立通道,可實現測量輸入信號的脈沖寬度、可編程PWM輸出、帶死區插入的互補PWM等功能。

二、PWM簡介

PWM,全稱脈沖寬度調制。它是一種用數字信號模擬模擬電壓的技術。簡單來說,就是快速地在“開”(高電平)和“關”(低電平)之間切換,通過改變一個周期內“開”的時間比例,來控制平均電壓。

2.1****輸出比較模式

定時器被配置為PWM模式時,會用到比較寄存器。

周期: 由自動重載寄存器決定。計數器從0計數到這個值,然后歸零,這個過程就是一個PWM周期。

占空比: 由比較寄存器決定。它設定了電平翻轉的閾值。

工作流程:

1.計數器從0開始向上計數。

2.當計數器的值 小于 比較寄存器的值時,輸出高電平(例如)。

3.當計數器的值 達到或超過 比較寄存器的值時,輸出翻轉為低電平。

4.計數器到達自動重載值后歸零,輸出重新變為高電平,開始下一個周期。

通過修改比較寄存器的值,就改變了高電平在一個周期內持續的時間,從而改變了 占空比

輸出比較可用于:

控制LED亮度: 占空比越大,LED越亮。

驅動舵機: 舵機的角度由PWM脈沖的寬度精確控制。

控制電機速度: 通過改變平均電壓來調節直流電機轉速。

音頻輸出: 通過極高頻率的PWM,經過濾波后可以生成簡單的音頻信號。

2.2****輸入捕獲

輸入捕獲功能就像一個“高速抓拍機”。當外部引腳上發生一個特定事件(如上升沿)時,它立刻“抓拍”下當前計數器的值,并保存起來。通過分析兩次“抓拍”的值,我們就能計算出這個事件的時間參
定時器配置為輸入捕獲模式時,會用到 捕獲寄存器

工作流程:

1.定時器的計數器一直在自由運行。

2.當輸入引腳上出現第一個上升沿時,硬件會立即將計數器當前的值復制到捕獲寄存器中,并產生一個中斷。

3.在中斷服務程序里,程序讀取這個捕獲值(記為t1),并同時將捕獲邊沿設置為 下降沿

4.當引腳出現下降沿時,硬件再次將計數器的當前值捕獲(記為t2)。

5.程序計算 t2 - t1,這個差值就是高電平期間計數器計數的次數,再乘以計數周期,就得到了高電平脈沖的精確寬度。

6.同理,可以再捕獲下一個上升沿,計算出整個信號的周期。

輸入捕獲可用于:

測量脈沖寬度和頻率: 例如解碼紅外遙控信號(NEC協議)、測量超聲波測距模塊返回的脈沖寬度。

解碼編碼器信號: 讀取旋轉編碼器的位置和速度。

測量數字信號的占空比。

三、軟件設計

本文同時啟用定時器HTIM1與HTIM5的通道1與通道2。其中,兩個定時器的通道1均配置為PWM輸出模式,以生成PWM信號;相應的通道2則工作在輸入捕獲模式,并采用中斷驅動方式,以精確測量PWM信號的頻率與占空比。最終,測量數據將通過串口打印輸出。引腳連線如下:PD4->PH9, PC9->PD5

3.1軟件分析

HTIM1初始化函數: void User_TIM1_Config(uint32_t arr, uint32_t psc, uint32_t rcr);

硬件使能與準備

  1. GPIOD_CLK_ENABLE(); // 使能GPIOD時鐘
  2. HTIM1_CLK_ENABLE(); // 使能HTIM1時鐘

定時器時基配置

  1. TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; // 向上計數
  2. TIM_TimeBaseInitStructure.TIM_Period = arr; // 設定周期
  3. TIM_TimeBaseInitStructure.TIM_Prescaler = psc; // 設定預分頻
  4. TIM_TimeBaseInitStructure.TIM_RepetitionCounter = rcr; // 重復計數

輸入捕獲配置(通道2

  1. TIM_IC_InitStructure.TIM_Channel = TIM_Channel_2; // 使用通道2
  2. TIM_IC_InitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; // 上升沿捕獲
  3. TIM_IC_InitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; // 直接輸入
  4. TIM_IC_InitStructure.TIM_ICFilter = 0x0; // 無濾波器
  5. TIM_IC_InitStructure.TIM_ICPrescaler = 0x0; // 每個事件都捕獲

中斷與PWM輸出配置

中斷使能:

  1. TIM_IT_Update://定時器溢出更新中斷
  2. TIM_IT_CC2://通道2捕獲/比較中斷

PWM****輸出配置(通道1):

  1. TIM_OC_InitStructure.TIM_OCMode = TIM_OCMode_PWM1; // PWM模式1
  2. TIM_OC_InitStructure.TIM_Pulse = arr/2; // 初始占空比50%
  3. TIM_OC_InitStructure.TIM_OCPolarity = TIM_OCPolarity_High; // 高電平有效

注:HTIM5配置除GPIO引腳外其余配置通HTIM1,此外HTIM5和HTIM1掛在不同總線下,讀者使用時需自行計算外設時鐘

在輸入捕獲模式下,當相應的 ICx 信號檢測到跳變沿后,將使用捕獲/比較寄存器(TIMx_CCRx)來鎖存計數器的值。簡單的說就是通過檢測 TIMx_CHx 上的邊沿信號,在邊沿信號發生跳變(比如上升沿/下降沿)的時候,將當前定時器的值(TIMx_CNT)存放到對應的通道的捕獲/比較寄存(TIMx_CCRx)里面,完成一次捕獲。

從上圖可以看出,t1-t2 時間就是需要測量的高電平時間,假如定時器工作在向上計數模式,測量方法是:首先設置定時器通道 x 為上升沿捕獲,這樣在 t1 時刻,就會捕獲到當前的 CNT 值,然后立即清零 CNT,并設置通道 x 為下降沿捕獲,這樣到 t2 時刻,又會發生捕獲事件,得到此時的 CNT 值,記為 CCRx2。根據定時器的計數頻率,就可以算出 t1-t2 的時間,從而得到高電平脈寬。在 t1-t2 時間內可能會出現 N 次定時器溢出,因此還需要對定時器溢出進行處理,防止因高電平時間過長發生溢出導致測量數據不準。CNT計數的次數等于:N*ARR+CCRx2,有了這個計數次數,再乘以 CNT 的計數周期,即可得到 t2-t1 的時間長度,即高電平持續時間。部分邏輯在中斷函數中實現:

  1. void TIM1_IRQ_Handler()
  2. {
  3. static uint32_t TIM1_counter=0;
  4. /* Get the value of TIM_CNT*/
  5. if (TIM1_GetComplete==0)
  6. {
  7. if (TIM_GetITStatus(TIM1, TIM_IT_Update)!= RESET)
  8. {
  9. TIM1_Update_counter++;
  10. TIM_ClearITPendingBit(TIM1, TIM_IT_Update);
  11. }
  12. if (TIM_GetITStatus(TIM1, TIM_IT_CC2)!= RESET)
  13. {
  14. TIM1_counter++;
  15. if (TIM1_counter==1)
  16. {
  17. TIM1_Update_counter=0;
  18. TIM1_Value1=TIM_GetCounter(TIM1);
  19. }
  20. if (TIM1_counter==2)
  21. {
  22. TIM1_Value2=TIM_GetCounter(TIM1);
  23. TIM1_counter=0;
  24. TIM1_GetComplete=1;
  25. }
  26. TIM_ClearITPendingBit(TIM1, TIM_IT_CC2);
  27. }
  28. }
  29. else
  30. {
  31. TIM_ClearITPendingBit(TIM1, TIM_IT_Update | TIM_IT_CC2);
  32. }
  33. }

計算并輸出PWM信號周期和頻率的函數

  1. /* Calculate the input frequency and period */
  2. TIM1_Input_Poriod=(10000*TIM1_Update_counter-TIM1_Value1+TIM1_Value2);
  3. TIM1_Input_Poriod = TIM1_Input_Poriod/20;
  4. Printf("TIM1 Input_Poriod: %d usrn", (uint32_t)TIM1_Input_Poriod);
  5. Printf("TIM1 Frequence: %d hzrn", (uint32_t)(1000000/TIM1_Input_Poriod));
  6. TIM1_Update_counter=0;
  7. TIM1_GetComplete=0;
  8. ClearCache();

其中第三行的20 為 HTIM1的時鐘頻率為20M。

四、開發板驗證:

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    147

    文章

    18941

    瀏覽量

    398701
  • MCU芯片
    +關注

    關注

    3

    文章

    260

    瀏覽量

    12907
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    MCU模塊原理圖資料

    電子發燒友網站提供《MCU模塊原理圖資料.pdf》資料免費下載
    發表于 02-26 15:04 ?0次下載

    智能顯示MCU D12x系列芯片在家電HMI上的應用

    D12x系列芯片是一款基于RISC-V架構的工業級高性能微控制器芯片MCU),專為嵌入式應用設計,特別適合智能家電中的人機交互界面。該系列
    的頭像 發表于 02-06 16:29 ?972次閱讀
    智能顯示<b class='flag-5'>MCU</b> D12x<b class='flag-5'>系列</b><b class='flag-5'>芯片</b>在家電HMI上的應用

    如何用外部復位電路對MCU系列芯片進行復位?

    怎么樣用外部復位電路對MCU系列芯片進行復位?
    發表于 01-12 09:05

    LAT1202+TIM DMA burst 輸出變頻 PWM 波形應用筆記

    客戶需要 MCU 輸出一組變頻的 PWM 波形來控制外圍器件,并且不同頻率脈沖的個數也不同。STM32U5 芯片擁有 TIM1/TIM8 高級定時器,還有通用定時器
    發表于 01-11 17:22 ?0次下載

    AS32系列MCU芯片中CRC計算模塊的應用介紹

    、執行器動作異常甚至整個控制系統宕機。循環冗余校驗(CRC)作為一種高效的錯誤檢測技術,如同數據傳輸與存儲過程中的"安全校驗屏障",持續保障MCU與外部設備交互數據的準確性。本文將系統闡述國科安芯推出的AS32系列
    的頭像 發表于 11-21 15:20 ?1386次閱讀
    <b class='flag-5'>AS32</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b><b class='flag-5'>芯片</b>中CRC計算<b class='flag-5'>模塊</b>的應用介紹

    FreeRTOS 在 AS32系列RISC-V 架構MCU電機驅動中的應用實踐與優化

    一、AS32系列 RISC-V MCU與 FreeRTOS 融合的電機驅動架構解析 1.1 硬件層: AS32系列 架構的優勢 在電機驅動系
    的頭像 發表于 11-13 23:33 ?855次閱讀

    32位MCU芯片國產品牌(32系列單片機常用型號有哪些)

    32位MCU芯片,是指處理器內核的數據總線寬度為32位的微控制器,相較于8位或16位MCU,具備更強的數據處理能力、更高的主頻以及更為豐富的外設接口。32系列單片機這類
    的頭像 發表于 11-13 16:31 ?1333次閱讀

    基于 AS32X601 微控制器的定時器模塊TIM)技術研究與應用實踐

    摘要: 本文全面介紹了國科安芯推出的AS32X601系列微控制器的定時器模塊TIM),包括其系統架構、功能特性、應用場景以及工程實踐要點。通過對芯片的詳細分析,揭示了其高性能運行的基
    的頭像 發表于 08-19 16:44 ?853次閱讀

    抗輻照MCU芯片:衛星互聯網光模塊選型的關鍵考量

    和質量。而微控制單元(MCU芯片作為光模塊的“大腦”,在控制與管理光模塊的各項功能中發揮著不可替代的作用。然而,太空環境復雜多變,高能粒子輻射會對
    的頭像 發表于 07-23 18:02 ?1145次閱讀

    AS32系列MCU芯片I2C模塊性能解析與調試

    國科安芯推出的AS32X601內置的I2C模塊提供了符合工業標準的兩線串行制接口,可用于MCU和外部IIC設備的通訊。IIC總線使用兩條串行線:串行數據線SDA和串行時鐘線SCL。 IIC接口模塊
    的頭像 發表于 06-20 16:31 ?982次閱讀
    <b class='flag-5'>AS32</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b><b class='flag-5'>芯片</b>I2C<b class='flag-5'>模塊</b>性能解析與調試

    第二十二章 TIM——高級定時器

    本章介紹了W55MH32的高級定時器(TIM1和TIM8),其含時基單元等,具備輸入捕獲、輸出比較、PWM生成等功能,還支持互補輸出、死區插入等,適用于工業電機控制,也提及相關配置結構
    的頭像 發表于 06-20 13:58 ?1712次閱讀
    第二十二章 <b class='flag-5'>TIM</b>——高級定時器

    第二十一章 TIM——通用定時器

    本篇文章介紹了W55MH32的通用定時器(TIM2~TIM5等),其由16位自動裝載計數器和可編程預分頻器構成,具備輸入捕獲、輸出比較、PWM生成等功能,還介紹了時基單元、計數器模式等
    的頭像 發表于 06-20 13:57 ?1616次閱讀
    第二十一章 <b class='flag-5'>TIM</b>——通用定時器

    一文讀懂熱界面材料:TIM1與TIM2的奇妙世界

    TIM1:芯片的“貼身保鏢”2025ThermalLink在熱界面材料的世界里,TIM1堪稱芯片的“貼身保鏢”。它通常緊緊地貼附在芯片(如C
    的頭像 發表于 05-11 06:41 ?2898次閱讀
    一文讀懂熱界面材料:<b class='flag-5'>TIM</b>1與<b class='flag-5'>TIM</b>2的奇妙世界

    靈動微電子MM32MCU的主流型芯片選型

    靈動微電子MM32系列32位MCU已經在江湖上久負盛名,以產品平臺化、系列化、兼容性好、性價比高、易于開發著稱。MM32MCU分為超值型、主流型、性能型、低功耗、汽車控制、電機與電源等
    的頭像 發表于 05-06 13:32 ?2896次閱讀
    靈動微電子MM32<b class='flag-5'>MCU</b>的主流型<b class='flag-5'>芯片</b>選型

    TIM2輸入捕獲,DMA開啟中斷傳輸輸入捕獲數據,程序跑的過程中,DMA一直中斷,TIM6只觸發一次中斷,怎么解決?

    TIM2捕獲輸入的數據,并且通過DMA存儲,在開啟DMA中斷同時,TIM6中斷也開啟(用于計時)。但是程序跑的過程中,DMA一直中斷,TIM6只觸發一次中斷。
    發表于 03-14 06:39