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

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

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

實現(xiàn)指定個數(shù)脈沖輸出的四種模式

茶話MCU ? 來源:茶話MCU ? 作者:茶話MCU ? 2022-07-24 17:56 ? 次閱讀

在實際產(chǎn)品開發(fā)中有時可能需要實現(xiàn)一些指定個數(shù)脈沖的輸出,這里介紹幾種基于定時器的實現(xiàn)方式。

1、 利用RCR寄存器結(jié)合單脈沖模式;

2、 利用DMA實時修改CCR寄存器的模式;

3、 利用定時器主從模式;

4、 利用中斷對脈沖實現(xiàn)計數(shù)模式;

一、利用RCR結(jié)合單脈沖模式

這種方式僅限于帶RCR寄存器的高級定時器,配合單脈沖模式,實現(xiàn)起來非常方便。

基本原理:計數(shù)器發(fā)生RCR+1個溢出動作后觸發(fā)更新事件,在單脈沖模式下,定時器發(fā)生更新事件時將停止計數(shù)并實現(xiàn)指定個數(shù)的脈沖輸出。

d76f26dc-0b34-11ed-ba43-dac502259ad0.png

參考配置:

d790d962-0b34-11ed-ba43-dac502259ad0.png

d7bbc744-0b34-11ed-ba43-dac502259ad0.png

HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);//TIM1通道1輸出一串脈沖。

d7e194f6-0b34-11ed-ba43-dac502259ad0.png

二、利用DMA實時修改CCR寄存器的模式;

基本原理:基于定時器事件觸發(fā)DMA從而動態(tài)修改CCR寄存器的值最終實現(xiàn)指定個數(shù)的脈沖輸出。

下面示例使用定時器更新事件觸發(fā)DMA,輸出10個脈寬各不一樣的脈沖.

uint16_tDataforCCr[]={25,43,18,65,27,44,66,38,76,11,00};

參考配置:

d7ff68fa-0b34-11ed-ba43-dac502259ad0.png

TIM_CCxChannelCmd(htim3.Instance, TIM_CHANNEL_1,TIM_CCx_ENABLE);

__HAL_TIM_CLEAR_FLAG(&htim3, TIM_FLAG_UPDATE);

__HAL_TIM_ENABLE_DMA(&htim3, TIM_DMA_UPDATE);

HAL_DMA_Start(&hdma_tim3_up,(uint32_t)DataforCCr, (uint32_t)&htim3.Instance->CCR1, 11);

__HAL_TIM_ENABLE(&htim3);

TIM3->EGR = TIM_EGR_UG;

d833e9fe-0b34-11ed-ba43-dac502259ad0.png

眼尖的人可能發(fā)現(xiàn)上圖中最后有個額外的尖脈沖,那是因為這里是基于更新事件觸發(fā)DMA,DMA傳輸新數(shù)據(jù)過來時有點延遲導(dǎo)致下一個PWM脈沖已經(jīng)發(fā)生作用。這時,我們可以調(diào)整觸發(fā)事件,比方這里將觸發(fā)事件調(diào)整為比較事件,并開啟預(yù)裝功能即可以消除這個問題。上面測試過程是關(guān)閉了CCR寄存器的預(yù)裝功能的。

該方式可以做到非常靈活精準(zhǔn),但要多用個DMA外設(shè)。

三、利用定時器主從模式

基本原理:利用兩個定時器級聯(lián)成主從模式,一個定時器輸出門控信號,控制另外一個定時器的計數(shù)工作。

d856fa84-0b34-11ed-ba43-dac502259ad0.png

下面TIM4工作在主模式,其OC輸出作為觸發(fā)信號給到TIM8,TIM8工作在門控模式。

TIM_CCxChannelCmd(htim4.Instance, TIM_CHANNEL_1,TIM_CCx_ENABLE);

__HAL_TIM_ENABLE(&htim4);

TIM_CCxChannelCmd(htim8.Instance, TIM_CHANNEL_1, TIM_CCx_ENABLE);

__HAL_TIM_MOE_ENABLE(&htim8);

__HAL_TIM_ENABLE(&htim8);

d8743df6-0b34-11ed-ba43-dac502259ad0.png

d8a08f3c-0b34-11ed-ba43-dac502259ad0.png

此模式實現(xiàn)起來簡單快捷,但當(dāng)門控信號時鐘與從定時器時鐘缺乏同步關(guān)系時,輸出脈沖個數(shù)可能有偏差,尤其結(jié)尾的電平可能搖擺不定。

四、利用定時器中斷模式

基本原理:基于定時器更新事件或比較事件對脈沖個數(shù)進行實時計數(shù),到達指

定數(shù)據(jù)后通過修改CCR或ARR寄存器的值來停止后續(xù)PWM的輸出。具體操

作需結(jié)合PWM輸出模式和最后希望停止輸出時的電平來對CCR進行賦值。

d8cc901e-0b34-11ed-ba43-dac502259ad0.png

比如:輸出10個脈沖,最后電平停留在高電平。我們可以基于比較事件來對脈沖進行,并開啟CCR寄存器的預(yù)裝功能。若選用PWM1模式,極性選擇為高有效,向上計數(shù)模式時,則在第10個比較中斷里修改CCR=ARR+n[n大于等于1];若選用PWM2模式,極性選擇為高有效,則在第10個比較中斷里修改CCR=00。

該模式實現(xiàn)起來較為簡單,只需對定時器有些基本的了解即可,無需涉及定時器更多知識及DMA方面的應(yīng)用等。

上面大體介紹了利用STM32定時器實現(xiàn)指定個數(shù)脈沖輸出的四種模式,各有特色,供君參考。我們實際應(yīng)用中可以靈活采用。

審核編輯:湯梓紅

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

    關(guān)注

    31

    文章

    5343

    瀏覽量

    120365
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    356010
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3248

    瀏覽量

    114800
  • 脈沖輸出
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    10770

原文標(biāo)題:使用定時器輸出指定個數(shù)脈沖的幾種方式

文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    DDS AD9910的四種工作調(diào)制模式是什么意思

    DDS AD9910的四種工作調(diào)制模式是什么意思?說是有單頻模式數(shù)字斜坡模式RAM模式 和并行模式
    發(fā)表于 07-16 19:37

    請問DDS AD9910上的四種工作模式是什么意思,有什么區(qū)別?

    DDS AD9910的四種工作調(diào)制模式是什么意思?說是有單頻模式數(shù)字斜坡模式RAM模式 和并行模式
    發(fā)表于 12-04 09:07

    STM32芯片GPIO的四種輸入模式四種輸出模式

    STM32芯片的GPIO一共有8配置模式,對8模式的理解如下1.四種輸入模式上拉輸入:在默認(rèn)
    發(fā)表于 05-21 07:55

    單片機四種輸入模式

    單片機四種輸入模式 MCU輸入模式有浮空、上拉、下拉、模擬輸入這四種模式,如果采用上拉或者下拉模式
    發(fā)表于 08-24 16:19

    變頻器主要支持四種模式

    變頻器主要支持四種模式:無PG的V/F模式,有PG的V/F模式,無PG的矢量控制模式,有PG的矢量模式
    發(fā)表于 09-03 06:57

    怎樣使用定時器輸出指定個數(shù)的PWM脈沖?

    怎樣使用定時器輸出指定個數(shù)的PWM脈沖
    發(fā)表于 12-21 06:55

    怎樣使用定時器輸出指定個數(shù)的PWM脈沖

    在步進電機控制時,經(jīng)常會遇到需要輸出指定個數(shù)脈沖實現(xiàn)精確控制。本篇文章將介紹怎樣使用定時器輸出
    發(fā)表于 01-06 06:19

    二維碼的四種主要應(yīng)用模式

    本文介紹二維碼主要的四種應(yīng)用模式,包括讀取數(shù)據(jù)模式、解碼上網(wǎng)模式、解碼驗證模式、解碼通信模式。
    發(fā)表于 01-25 11:52 ?3428次閱讀

    STC單片機如何實現(xiàn)輸出固定的脈沖個數(shù)

    實現(xiàn)方法:運用PWM輸出功能輸出一定頻率(F)的脈沖,在一定的時間、以一定的頻率輸出脈沖
    發(fā)表于 10-24 15:43 ?1w次閱讀
    STC單片機如何<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>輸出</b>固定的<b class='flag-5'>脈沖</b><b class='flag-5'>個數(shù)</b>

    STM32如何實現(xiàn)可調(diào)頻率、 占空比的PWM波形,且可指定輸出脈沖個數(shù)?

    STM32如何實現(xiàn)可調(diào)頻率、占空比的PWM波形,且可指定輸出脈沖個數(shù)?
    的頭像 發(fā)表于 03-12 11:04 ?2.7w次閱讀

    四種方式實現(xiàn)led點亮

    四種方式實現(xiàn)led點亮
    發(fā)表于 01-04 14:31 ?4次下載

    IEC 61851標(biāo)準(zhǔn)中的四種EV充電模式

    在本文中,我們將了解國際電工委員會 (IEC) 規(guī)定的不同 EV 充電模式。這些模式在處理電動汽車傳導(dǎo)充電系統(tǒng)的 IEC 61851 標(biāo)準(zhǔn)中指定。該標(biāo)準(zhǔn)描述了四種不同的充電
    的頭像 發(fā)表于 06-24 15:06 ?9954次閱讀
    IEC 61851標(biāo)準(zhǔn)中的<b class='flag-5'>四種</b>EV充電<b class='flag-5'>模式</b>

    GPIO的四種輸入模式介紹

    32位寄存器共同控制。 輸出和輸入都是針對芯片引腳來講的(即引腳的對外輸出,和外界對引腳的輸入)。 四種輸入模式介紹 輸入模式下可讀取端口的
    的頭像 發(fā)表于 11-09 16:51 ?6575次閱讀
    GPIO的<b class='flag-5'>四種</b>輸入<b class='flag-5'>模式</b>介紹

    介紹MCUboot支持的四種升級模式(2)

    介紹MCUboot支持的四種升級模式,分別是Overwrite、Swap、Direct XIP和加載到RAM中執(zhí)行。由于FSP不支持第四種——加載到RAM中執(zhí)行,因為我們重點介紹前三
    的頭像 發(fā)表于 06-13 10:56 ?936次閱讀
    介紹MCUboot支持的<b class='flag-5'>四種</b>升級<b class='flag-5'>模式</b>(2)

    關(guān)于溫補晶振的四種輸出模式詳解

    TCXO(溫度補償晶振)作為一高精度時鐘源,其獨特的溫度補償技術(shù)使其在各種環(huán)境條件下都能保持穩(wěn)定的頻率輸出。華昕晶振將詳細(xì)介紹TCXO的四種主要輸出
    的頭像 發(fā)表于 07-27 08:34 ?517次閱讀
    關(guān)于溫補晶振的<b class='flag-5'>四種</b><b class='flag-5'>輸出</b><b class='flag-5'>模式</b>詳解