0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MindSDK應(yīng)用基礎(chǔ)—TIM模塊樣例

靈動(dòng)MM32MCU ? 來(lái)源:靈動(dòng)MM32MCU ? 2023-06-29 17:16 ? 次閱讀

引言

MindSDK為MM32使用星辰處理器內(nèi)核的系列微控制器,實(shí)現(xiàn)了一組TIM樣例工程,MindSDK中的TIM模塊對(duì)應(yīng)硬件定時(shí)器TIM外設(shè)。本文通過(guò)講解TIM模塊的樣例工程,介紹TIM模塊的功能和用法。關(guān)于TIM模塊對(duì)應(yīng)的驅(qū)動(dòng)程序,以及TIM外設(shè)模塊硬件的實(shí)現(xiàn)細(xì)節(jié),可具體查閱MindSDK工程的源文件,以及MM32微控制器(例如MM32F5270)的用戶(hù)手冊(cè)。

樣例工程

MindSDK中為T(mén)IM驅(qū)動(dòng)設(shè)計(jì)的樣例工程包括:

tim_basic

tim_one_time_run

tim_output_compare_pwm

tim_input_capture

tim_external_trigger_input

tim_slave_mode

tim_slave_mode_encoder

tim_comp_output_compare_pwm

其中,tim_basic、tim_one_time_run、tim_output_compare_pwm、tim_input_capture和tim_external_trigger_input 分別演示了定時(shí)器最典型的功能,包括定時(shí)、輸出比較、輸入捕捉,以及對(duì)外部脈沖進(jìn)行計(jì)數(shù)等。另外,還有一些不大典型,用在特殊應(yīng)用場(chǎng)景的功能,例如,使用“從機(jī)”模式干預(yù)常規(guī)的定時(shí)器計(jì)數(shù),通過(guò)硬件實(shí)現(xiàn)互補(bǔ)的PWM輸出(常用于電機(jī)控制應(yīng)用中控制驅(qū)動(dòng)橋)。

tim_basic

tim_basic 描述了使用TIM模塊最基本的方式,周期定時(shí)器。在樣例工程中,通過(guò) TIM_Init() 函數(shù),配置一個(gè)選定的TIM外設(shè)模塊的計(jì)數(shù)引擎,為連續(xù)計(jì)數(shù)模式 TIM_PeriodMode_Continuous ,并指定計(jì)數(shù)周期為 APP_TIM_UPDATE_PERIOD 。然后,啟用選定TIM外設(shè)模塊對(duì)應(yīng)的NVIC中斷。最后,通過(guò)調(diào)用 TIM_Start() 驅(qū)動(dòng)函數(shù),啟動(dòng)定時(shí)器開(kāi)始計(jì)數(shù)。

每當(dāng)定時(shí)器計(jì)數(shù)到達(dá)預(yù)設(shè)的計(jì)數(shù)周期值后,計(jì)數(shù)值折返為0,重新開(kāi)始計(jì)數(shù)。同時(shí),TIM會(huì)觸發(fā)NVIC中斷, tim_basic 樣例工程中為T(mén)IM中斷實(shí)現(xiàn)的服務(wù)程序中,實(shí)現(xiàn)了通過(guò)串口發(fā)送字符*的操作。

最終程序運(yùn)行時(shí),可以在PC機(jī)上的串口通信終端看到以指定周期輸出的字符 * ,驗(yàn)證定時(shí)器中斷被周期觸發(fā)。

tim_one_time_run

tim_one_time_run 相對(duì)于 tim_basic 樣例工程實(shí)現(xiàn)周期觸發(fā)定時(shí)器中斷服務(wù),實(shí)現(xiàn)了每次啟動(dòng)定時(shí)器后,僅觸發(fā)一次中斷的用法。

其實(shí)現(xiàn)原理,是在 tim_basic 配置定時(shí)器周期運(yùn)行的基礎(chǔ)之上,修改初始化配置 .PeriodMode 的值為 TIM_PeriodMode_OneTimeRun。之后,每次通過(guò) TIM_Start() 函數(shù)啟動(dòng)定時(shí)器后,定時(shí)器僅計(jì)數(shù)一個(gè)周期后,觸發(fā)中斷,然后停止計(jì)數(shù)。

實(shí)際運(yùn)行程序時(shí),用戶(hù)在串口調(diào)試終端中每次輸入任意字符,程序均會(huì)調(diào)用一次 TIM_Start() 函數(shù),延時(shí)指定計(jì)數(shù)周期后,在定時(shí)器中斷服務(wù)程序中打印字符 * 到串口終端界面。

tim_output_compare_pwm

tim_output_compare_pwm 實(shí)現(xiàn)的是一個(gè)通過(guò)輸出比較功能產(chǎn)生PWM輸出信號(hào)的樣例工程。

其實(shí)現(xiàn)原理,是在 tim_basic 基礎(chǔ)之上,額外通過(guò)驅(qū)動(dòng)函數(shù) TIM_EnableOutputCompare(),啟動(dòng)并配置給定通道 BOARD_TIM_CHANNEL 為輸出比較功能。其中,指定通道的配置屬性 .PinPolarity 的值為 TIM_PinPolarity_Rising,.RefOutMode 值為 TIM_OutputCompareRefOut_FallingEdgeOnMatch,設(shè)定同通道綁定的硬件引腳信號(hào)在計(jì)數(shù)初始的階段為高電平,當(dāng)計(jì)數(shù)值達(dá)到通道數(shù)據(jù)寄存器中設(shè)定的匹配值時(shí),輸出下降沿信號(hào),輸出低電平。

實(shí)際運(yùn)行程序時(shí),用戶(hù)通過(guò) TIM_Init() 函數(shù)配置定時(shí)器的基本定時(shí)單元,對(duì)應(yīng)的計(jì)數(shù)周期即為輸出PWM信號(hào)波形的周期,啟用輸出比較的指定通道綁定的引腳即為輸出PWM信號(hào)的引腳,通過(guò) TIM_PutChannelValue() 函數(shù)設(shè)定輸出波形在整個(gè)周期下降沿的位置,進(jìn)而調(diào)整PWM輸出信號(hào)波形的占空比。通道引腳在每次定時(shí)器周期的開(kāi)始輸出為高電平,在周期內(nèi)設(shè)定的匹配值的位置產(chǎn)生下降沿,轉(zhuǎn)而輸出低電平,再計(jì)數(shù)周期結(jié)束折返為0時(shí),恢復(fù)為高電平。如此周而復(fù)始,實(shí)現(xiàn)輸出PWM信號(hào)波形。

tim_input_capture

tim_intput_capture 實(shí)現(xiàn)的是一個(gè)使用定時(shí)器為外部輸入的觸發(fā)信號(hào)記錄時(shí)刻的樣例工程。

其實(shí)現(xiàn)原理,是在 tim_basic 基礎(chǔ)之上,額外通過(guò)驅(qū)動(dòng)函數(shù) TIM_EnableInputCapture(),啟動(dòng)并配置給定通道 BOARD_TIM_CHANNEL 為輸入捕獲功能。其中,指定給定通道的捕獲輸入信號(hào)極性 .PinPolarity 的值為 TIM_PinPolarity_Falling,表示在該給定通道綁定的引腳上出現(xiàn)下降沿信號(hào)時(shí),觸發(fā)捕獲事件。此時(shí),捕獲計(jì)數(shù)器當(dāng)前的計(jì)數(shù)值到給定通道的通道數(shù)據(jù)寄存器中,這個(gè)值就可以作為該捕獲事件的時(shí)刻記錄。

實(shí)際運(yùn)行程序時(shí),用戶(hù)通過(guò) TIM_Init() 函數(shù)配置定時(shí)器的基本定時(shí)單元,此時(shí)定時(shí)器的計(jì)數(shù)周期,就是可能捕獲時(shí)刻值的有效范圍。然后在電路上使用一個(gè)按鍵接入到指定通道綁定的引腳上,模擬產(chǎn)生下降沿觸發(fā)信號(hào)。當(dāng)按下按鍵時(shí),觸發(fā)信號(hào)到來(lái),觸發(fā)程序中的通道事件中斷服務(wù)程序,在其中可以通過(guò) TIM_GetChannelValue() 函數(shù)讀取本次輸入捕獲事件發(fā)生時(shí)的計(jì)數(shù)時(shí)刻。

tim_external_trigger_input

相對(duì)于 tim_basic 中,使用芯片內(nèi)部的時(shí)鐘源脈沖進(jìn)行計(jì)數(shù),tim_external_trigger_input 樣例工程可以對(duì)用戶(hù)指定引腳上的脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)的脈沖來(lái)自于芯片外部的信號(hào)源。

其實(shí)現(xiàn)原理,是在 tim_basic 基礎(chǔ)上,額外通過(guò)驅(qū)動(dòng)函數(shù) TIM_EnableExtTriggerIn(),配置啟用外部對(duì)外部輸入的脈沖信號(hào)進(jìn)行計(jì)數(shù)的功能,固定從TIM外設(shè)模塊的 ETR 引腳捕獲來(lái)自外部的脈沖信號(hào)。每次捕獲到一個(gè)脈沖信號(hào),等同于使用芯片內(nèi)部時(shí)鐘源的脈沖,計(jì)數(shù)器自增計(jì)數(shù)。此時(shí),還可以基于這個(gè)新的時(shí)鐘源,使用周期計(jì)數(shù)中斷等功能。

實(shí)際運(yùn)行程序時(shí),用戶(hù)可以將一個(gè)按鍵接入到指定TIM外設(shè)模塊的 ETR 引腳上,用手動(dòng)按按鍵產(chǎn)生脈沖信號(hào)。在程序中指定定時(shí)器的計(jì)數(shù)周期 APP_TIM_UPDATE_PERIOD 值為2,意味著每輸入兩次脈沖,就會(huì)觸發(fā)一次定時(shí)器周期中斷。

tim_slave_mode

tim_slave_mode 實(shí)現(xiàn)的是一個(gè)使用從機(jī)TIM從機(jī)模式的樣例工程。實(shí)際上,這里的“從機(jī)”同從屬關(guān)系的的“從”是沒(méi)關(guān)系的,而是可以理解為更豐富的可由用戶(hù)控制的工作模式。

tim_slave_mode 工程,在 tim_basic 基礎(chǔ)上,額外通過(guò)驅(qū)動(dòng)函數(shù) TIM_EnableSlaveMode(),配置了其中一種“從機(jī)”模式:使用 ETR 作為控制信號(hào)(下降沿)的引腳 TIM_SlaveIn_Alt7,當(dāng)控制信號(hào)到來(lái)時(shí),選擇暫停計(jì)數(shù) TIM_SlaveResp_Alt5。

實(shí)際運(yùn)行程序時(shí),用戶(hù)可以將一個(gè)按鍵接入到指定TIM外設(shè)模塊的 ETR 引腳上,用手動(dòng)按按鍵產(chǎn)生電平控制信號(hào)。當(dāng)按下按鍵時(shí),控制定時(shí)器暫停計(jì)數(shù),松開(kāi)按鍵時(shí),定時(shí)器恢復(fù)計(jì)數(shù)。正常計(jì)數(shù)到一整個(gè)周期時(shí),會(huì)產(chǎn)生中斷。如此,當(dāng)按下按鍵時(shí),會(huì)影響定時(shí)器中斷的周期。

tim_slave_mode_encoder

tim_slave_mode_encoder 工程基于 tim_input_capture 工程,通過(guò)額外調(diào)用 TIM_EnableSlaveMode() 并傳入一組特定的配置,啟用了一種特殊的“從機(jī)”模式,從而實(shí)現(xiàn)了編碼器的功能。

tim_comp_output_compare_pwm

tim_comp_output_compare_pwm 基于tim_output_compare_pwm 工程,通過(guò)額外的驅(qū)動(dòng)函數(shù) TIM_EnableCompOutput(),實(shí)現(xiàn)了PWM信號(hào)的互補(bǔ)輸出,這意味著當(dāng)使用正常的輸出比較通道輸出PWM信號(hào)時(shí),還開(kāi)啟了硬件設(shè)計(jì)的,使用對(duì)應(yīng)的另一個(gè)通道,輸出電平極性剛好相反的PWM信號(hào)。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7553

    瀏覽量

    151426
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19286

    瀏覽量

    229853
  • 電機(jī)控制
    +關(guān)注

    關(guān)注

    3534

    文章

    1879

    瀏覽量

    268821
  • PWM輸出
    +關(guān)注

    關(guān)注

    1

    文章

    66

    瀏覽量

    5150

原文標(biāo)題:靈動(dòng)微課堂 (第261講)|MindSDK應(yīng)用基礎(chǔ)——TIM模塊樣例

文章出處:【微信號(hào):MindMotion-MMCU,微信公眾號(hào):靈動(dòng)MM32MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Hardware Semaphore 2 工程

    介紹了Hardware Semaphore 2的使用方法以及工作模式(Direct和Indirect),本工程基于CCSv4,可在C6678EVM板上運(yùn)行,內(nèi)附模塊介紹以及代碼流程的PPT文件。
    發(fā)表于 06-21 14:21

    7改成數(shù)碼管秒表顯示TIM5~TIM7不行

    我把7改成數(shù)碼管秒表顯示,試了TIM2,TIM3,TIM4都可以,但試TIM5~TIM7就不行
    發(fā)表于 05-21 21:06

    MindSDKTIM定時(shí)器測(cè)試步驟分享

    定時(shí)器是MCU常用的,這篇測(cè)試下MindSDK例程下的tim定時(shí)器。開(kāi)發(fā)環(huán)境按照論壇的教程安裝完成,下面就直接打開(kāi)例程編譯。1、例程下載:網(wǎng)站注冊(cè)下載MindSDK例程包。2、打開(kāi)TIM
    發(fā)表于 08-23 15:37

    STM32單片機(jī)TIM模塊定時(shí)器向上溢出的輸出比較

    首先有一點(diǎn)需要注意:FWLib固件庫(kù)目前的最新版應(yīng)該是V2.0.x,V1.0.x版本固件庫(kù)中,TIM1模塊被獨(dú)立出來(lái),調(diào)用的函數(shù)與其他定時(shí)器不同;在V2.0系列版本中,取消了TIM1.h,所有
    發(fā)表于 11-22 16:20 ?3730次閱讀

    AMetal適配:以TIM來(lái)展示如何開(kāi)發(fā)通用驅(qū)動(dòng)外設(shè)代碼

    基于定時(shí)器、RTC、WDT本質(zhì)上均是計(jì)數(shù)器的共性,本次將這三種通用外設(shè)統(tǒng)一為TIM。以TIM,來(lái)展示如何開(kāi)發(fā)通用驅(qū)動(dòng)外設(shè)代碼。對(duì)于AMetal所提供的標(biāo)準(zhǔn)層驅(qū)動(dòng)文件,均存放于ametal
    的頭像 發(fā)表于 05-12 17:08 ?1859次閱讀
    AMetal適配:以<b class='flag-5'>TIM</b>為<b class='flag-5'>例</b>來(lái)展示如何開(kāi)發(fā)通用驅(qū)動(dòng)外設(shè)代碼

    MindSDK概述、使用方法及應(yīng)用案例

    MindSDK(mm32-mcu-sdk)是由靈動(dòng)官方的軟件團(tuán)隊(duì)開(kāi)發(fā)和維護(hù)的基于靈動(dòng)微控制器的軟件開(kāi)發(fā)平臺(tái)。
    的頭像 發(fā)表于 08-12 09:10 ?1429次閱讀

    基于OpenHarmony開(kāi)發(fā)的步驟

    單絲不成線,獨(dú)木不成林,一個(gè)社區(qū)想要健康蓬勃發(fā)展離不開(kāi)社區(qū)參與者的持續(xù)貢獻(xiàn)。而社區(qū)貢獻(xiàn)點(diǎn)有很多種,本文以貢獻(xiàn)OpenAtom OpenHarmony(以下簡(jiǎn)稱(chēng)“OpenHarmony”)開(kāi)發(fā),圍繞以下5個(gè)問(wèn)題,帶大家了解
    的頭像 發(fā)表于 09-20 10:30 ?1368次閱讀

    31107液晶C語(yǔ)言編程

    31107液晶 C語(yǔ)言編程
    發(fā)表于 10-17 15:17 ?4次下載

    MindSDK搭建Keil MDK開(kāi)發(fā)環(huán)境

    本文介紹基于Windows操作系統(tǒng)構(gòu)建嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境過(guò)程中需要使用的主要軟件Keil MDK,并對(duì)一些需要特別關(guān)注的要點(diǎn)重點(diǎn)說(shuō)明。Keil MDK是靈動(dòng)官方的軟件開(kāi)發(fā)平臺(tái)MindSDK支持的主要編譯工具之一。
    的頭像 發(fā)表于 05-04 10:42 ?1632次閱讀
    為<b class='flag-5'>MindSDK</b>搭建Keil MDK開(kāi)發(fā)環(huán)境

    MindSDK中FlexCAN驅(qū)動(dòng)程序及工程

    和MM32F0140微控制器,其中就有FlexCAN外設(shè)模塊的驅(qū)動(dòng)程序以及工程,以及對(duì)CAN總線通信協(xié)議CANopen的適配工程。本文將介紹MindSDK中FlexCAN驅(qū)動(dòng)程序及
    的頭像 發(fā)表于 06-23 15:41 ?1260次閱讀
    <b class='flag-5'>MindSDK</b>中FlexCAN驅(qū)動(dòng)程序及<b class='flag-5'>樣</b><b class='flag-5'>例</b>工程

    MindSDK為MM32實(shí)現(xiàn)了一組TIM工程

    MindSDK為MM32使用星辰處理器內(nèi)核的系列微控制器,實(shí)現(xiàn)了一組TIM工程,MindSDK中的T
    的頭像 發(fā)表于 06-30 17:32 ?889次閱讀

    STM32 TIM—基本定時(shí)器

    STM32F4xx系列控制器有共有14個(gè)TIM定時(shí)器。其中2個(gè)高級(jí)控制定時(shí)器TIM1和TIM8、10 個(gè)通用定時(shí)器TIM2TIM5和TIM9TIM
    的頭像 發(fā)表于 07-22 17:05 ?5066次閱讀
    STM32 <b class='flag-5'>TIM</b>—基本定時(shí)器

    MindSDK應(yīng)用基礎(chǔ)—SPI模塊簡(jiǎn)介

    MindSDK為MM32主流的微控制器,實(shí)現(xiàn)了一系列SPI驅(qū)動(dòng)的工程。本文通過(guò)講解 SPI 模塊
    的頭像 發(fā)表于 08-10 17:14 ?1075次閱讀

    MindSDK應(yīng)用基礎(chǔ)—ADC模塊

    MindSDK為MM32主流的微控制器,實(shí)現(xiàn)了一組ADC工程。本文通過(guò)講解ADC模塊
    的頭像 發(fā)表于 08-17 17:16 ?929次閱讀

    MindSDK應(yīng)用基礎(chǔ)——TIM模塊

    MindSDK應(yīng)用基礎(chǔ)——TIM模塊
    的頭像 發(fā)表于 10-25 16:25 ?620次閱讀