在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

基于向上計(jì)數(shù)的單脈沖PWM模式

茶話MCU ? 來源:ST MCU 信息交流 ? 作者:ST MCU 信息交流 ? 2020-07-12 10:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

有人說在MCU的開發(fā)應(yīng)用過程中遇到過一次中斷事件觸發(fā)兩次中斷的奇怪事情。有這樣的事嗎?應(yīng)該說有真有假,這里以STM32為例來聊聊該話題。

所謂假的,就是指基于誤會(huì)以為一次事件觸發(fā)了兩次甚至多次中斷。比方按鍵事件沒有做好消抖處理,或者中斷請(qǐng)求標(biāo)志位沒有被及時(shí)清零等。順便說下,對(duì)于STM32芯片而言,如果中斷請(qǐng)求標(biāo)志沒有被清零會(huì)沒完沒了的循環(huán)進(jìn)相應(yīng)中斷服務(wù)程序。

這里重點(diǎn)聊聊真的,即一次中斷事件進(jìn)入兩次中斷服務(wù)程序,的確有機(jī)會(huì)碰到。偶爾也有人反映類似問題,比方做UART通信時(shí),一個(gè)空閑事件進(jìn)入兩次空閑中斷,感覺相關(guān)標(biāo)志沒法清除;有人通過定時(shí)器觸發(fā)SPI傳輸,一個(gè)定時(shí)器事件竟然進(jìn)入兩次中斷連續(xù)給SPI數(shù)據(jù)寄存器賦值兩次。

發(fā)生這種一次觸發(fā)事件進(jìn)入兩次中斷的情況時(shí),一般有個(gè)非常明顯的特征,那就是在中斷服務(wù)程序里對(duì)中斷請(qǐng)求標(biāo)志的清零代碼往往放在中斷服務(wù)程序的最末尾。我們不妨弄個(gè)具體的實(shí)例感受下。

下面以一個(gè)定時(shí)器更新中斷為例。我讓定時(shí)器工作在基于向上計(jì)數(shù)的單脈沖PWM模式,即啟動(dòng)計(jì)數(shù)器后,當(dāng)發(fā)生溢出產(chǎn)生更新事件時(shí)即告停止。那么每次啟動(dòng)定時(shí)器后按理有且只有一次進(jìn)入更新中斷服務(wù)程序。我在中斷服務(wù)程序里放個(gè)計(jì)數(shù)變量,統(tǒng)計(jì)進(jìn)入中斷的次數(shù)。我這里使用STM32F4的開發(fā)板測(cè)試的。

先看看中斷服務(wù)程序里清除中斷請(qǐng)求標(biāo)志的代碼不是放在最后一行的情況。其中變量counterX用來統(tǒng)計(jì)進(jìn)入中斷服務(wù)程序次數(shù)。

基于向上計(jì)數(shù)的單脈沖PWM模式

這次測(cè)試結(jié)果沒問題,一次更新事件對(duì)應(yīng)進(jìn)入一次中斷服務(wù)程序。我將上面的中斷服務(wù)程序稍微調(diào)整下代碼前后順序,讓清除中斷請(qǐng)求位的代碼放在最后,再看看下面結(jié)果。

基于向上計(jì)數(shù)的單脈沖PWM模式

嗯?counterX結(jié)果變?yōu)?了,一次觸發(fā)事件怎么進(jìn)了兩次中斷服務(wù)程序呢?!

這時(shí)不同的人往往會(huì)有不同的判斷或結(jié)論。比方中斷請(qǐng)求標(biāo)志一次清不掉啊;同樣的寫法別的系列或型號(hào)卻可以,認(rèn)為太莫名其妙啦!【其實(shí),到底是不是完全相同的寫法只是感覺,就像我上面的寫法不細(xì)究的話也可以說是一樣的寫法】,或者說芯片很奇葩啊云云。

怎么會(huì)這樣呢?原因就在于那行清除中斷請(qǐng)求位的代碼放在最后,在第一次退出中斷服務(wù)程序時(shí)該請(qǐng)求位尚未完成被清零的狀態(tài)。程序指令執(zhí)行速度越快,這種可能性就越高。既然該中斷請(qǐng)求位依然保持置1的有效狀態(tài),經(jīng)硬件觸發(fā)再次進(jìn)入中斷服務(wù)程序就順理成章了。

有人會(huì)問,我在退出中斷服務(wù)程序之前不是已經(jīng)做了中斷請(qǐng)求位的清零操作嗎?怎么沒有立即生效呢?再怎么“立即”也是需要時(shí)間的,程序指令的執(zhí)行完畢和指令執(zhí)行后的狀態(tài)改變并不一定同步。比方你到包子鋪去跟老板說買3個(gè)饅頭,老板滿口應(yīng)諾后,你不能立即扭頭就走啊。他還需要點(diǎn)時(shí)間來處理,不然一輩子都買不到3個(gè)饅頭。具體結(jié)合到stm32芯片,程序執(zhí)行是基于哈佛結(jié)構(gòu)的流水線形式,前面代碼執(zhí)行時(shí)依然可以執(zhí)行后序的指令代碼。

談到這里,有人或許想到在清除中斷請(qǐng)求位的代碼后面加上一句內(nèi)存屏蔽指令,即DSB。應(yīng)該說加這個(gè)DSB指令是有效的,即該指令前的所有內(nèi)存訪問指令執(zhí)行完畢后才執(zhí)行后序指令代碼。不過,一般來講,在這個(gè)地方用不著它,我們只須注意別將清除中斷請(qǐng)求位的代碼放在服務(wù)程序的末尾,稍微給清零操作留點(diǎn)實(shí)現(xiàn)時(shí)間。就像上面打比方買饅頭一樣,給老板一點(diǎn)為你取饅頭的時(shí)間就行。

也許有人會(huì)說,我中斷服務(wù)程序里就只需做中斷請(qǐng)求位清零這一件事怎么辦呢?那你就隨便在清零操作代碼后面隨便一兩行無關(guān)緊要的代碼也行,確保不發(fā)生1次事件進(jìn)兩次中斷即可。

剛才前面說了,當(dāng)清除中斷請(qǐng)求位的代碼放在服務(wù)程序最后時(shí),程序指令執(zhí)行速度越快,一次觸發(fā)事件進(jìn)入兩次中斷服務(wù)程序的可能性就越高。我們不妨看看下面基于STM32H7系列的一段中斷服務(wù)程序代碼。是TIM3的更新中斷服務(wù)程序,截圖里的兩行代碼為中斷服務(wù)程序的最末兩行。注意,清除中斷標(biāo)志的代碼沒有在最末一行。

基于向上計(jì)數(shù)的單脈沖PWM模式

其基本功能就是每進(jìn)一次更新中斷,先清中斷標(biāo)志,然后給SPI數(shù)據(jù)寄存器賦值令其發(fā)送一個(gè)16位數(shù)據(jù)。顯然,結(jié)合我們前面的分析,如果代碼這樣寫一般來講是不太可能發(fā)生一次事件觸發(fā)2次中斷的,事實(shí)上當(dāng)程序代碼在FLASH里運(yùn)行時(shí)也的確沒有任何問題。

但當(dāng)將中斷服務(wù)程序放到RAM里,比方放到DTCM里去運(yùn)行時(shí)發(fā)生了功能異常。結(jié)果變成了每次更新事件發(fā)送的數(shù)據(jù)不是16位而是32位了。這個(gè)32位數(shù)據(jù)正是因?yàn)橐淮胃率录B續(xù)兩次進(jìn)入中斷服務(wù)程序,兩次發(fā)送SPI數(shù)據(jù)。那為什么完全相同的代碼在FLASH里運(yùn)行沒這個(gè)問題呢,因?yàn)榇a在DTCM的運(yùn)行速率要比在FLASH里快,盡管在清中斷請(qǐng)求標(biāo)志的代碼后面已經(jīng)有了兼具延時(shí)功能的那句針對(duì)SPI數(shù)據(jù)寄存器的賦值語句,在退出中斷前該請(qǐng)求標(biāo)志位還是未完成清零而再進(jìn)了一次中斷。

看來,這里還得稍微加多點(diǎn)延時(shí)以保證中斷請(qǐng)求標(biāo)志在退出中斷前被清零。為了避免加延時(shí)代碼的盲目性,即要么短了要么長(zhǎng)了,我們可以使用對(duì)標(biāo)志位的輪詢方式,將代碼稍加改動(dòng)變成下面的樣子。

基于向上計(jì)數(shù)的單脈沖PWM模式

之后,再行驗(yàn)證測(cè)試都是正常的。若有興趣的話,可以在清標(biāo)志位的代碼后面加DSB指令驗(yàn)證測(cè)試下。
責(zé)任編輯:pj

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

    關(guān)注

    459

    文章

    52464

    瀏覽量

    440144
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17961

    瀏覽量

    366154
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2291

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    第二十章 TIM——基本定時(shí)器

    本章介紹了W55H32基本定時(shí)器TIM6、TIM7,16位向上計(jì)數(shù),含時(shí)鐘源、預(yù)分頻器等,講解定時(shí)計(jì)算及初始化結(jié)構(gòu)體。
    的頭像 發(fā)表于 06-20 13:51 ?338次閱讀
    第二十章 TIM——基本定時(shí)器

    STM32H7開啟單脈沖模式 PWM脈沖寬度不受CCR控制怎么解決?

    我將定時(shí)器1作為從定時(shí)器 從定時(shí)器arr是49 也就是50us記完一圈 CCR是25并且把定時(shí)器配置成了OPM單脈沖模式(時(shí)鐘頻率分頻率我都已設(shè)置好了定時(shí)器計(jì)數(shù)一次都是1us)定時(shí)器15作為主定時(shí)器
    發(fā)表于 06-18 07:14

    開關(guān)電源三種控制模式PWM/PFM/PSM

    PWM/PFM/PSM 三種控制模式的定義通常來說,開關(guān)電源(DC-DC)有三種最常見的調(diào)制方式分別為: 脈沖寬度調(diào)制(PWM脈沖
    發(fā)表于 06-09 16:11

    MOSFET單脈沖雪崩擊穿能量的失效模式

    單脈沖雪崩擊穿能量(Energy during avalanche for single pulse),即 EAS。指的是MOSFET器件串聯(lián)感性負(fù)載時(shí),在單次脈沖(工作到關(guān)斷)狀態(tài)下,所能承受的最大能量消耗,單位是焦耳(J),其值越大,器件在電路中遭遇瞬間過電壓或過電流
    的頭像 發(fā)表于 05-15 15:32 ?1201次閱讀
    MOSFET<b class='flag-5'>單脈沖</b>雪崩擊穿能量的失效<b class='flag-5'>模式</b>

    MCU定時(shí)器/計(jì)數(shù)

    架構(gòu)與功能特性? 定時(shí)器類型與配置? 高級(jí)控制定時(shí)器?:支持互補(bǔ)PWM輸出與剎車功能,適用于電機(jī)驅(qū)動(dòng)等高精度控制場(chǎng)景。通用定時(shí)器?:集成輸入捕獲、輸出比較、單脈沖模式等基礎(chǔ)功能?。 系統(tǒng)定時(shí)器?:內(nèi)置64位SysTick(MTIME)計(jì)
    的頭像 發(fā)表于 04-27 13:54 ?277次閱讀

    STM32F103高級(jí)定時(shí)器中,開啟單脈沖模式是不是會(huì)立刻清除計(jì)數(shù)器使能位?

    、關(guān)閉單脈沖模式,將RCR寄存器寫入最高值255,軟件引發(fā)一次更新事件,使RCR的值生效,然后清除標(biāo)志位并打開更新中斷。 2、將RCR的值設(shè)置為4,RCR的值只有在下一次更新事件后生效。使能計(jì)數(shù)器,計(jì)數(shù)
    發(fā)表于 03-10 07:34

    【RA-Eco-RA2L1-48PIN-V1.0開發(fā)板試用】——PWM

    PWM操作中生成死區(qū)時(shí)間。 11、可以同步啟動(dòng)、停止和清除任意通道的計(jì)數(shù)器。 12、計(jì)數(shù)器可以根據(jù)最多4個(gè)ELC(Event Link Controller)事件來啟動(dòng)、停止、清零、向上計(jì)數(shù)
    發(fā)表于 01-26 15:40

    微控制器中的PWM模塊介紹

    : 一、PWM模塊的工作原理 PWM模塊的工作原理基于脈沖寬度調(diào)制技術(shù),通過控制信號(hào)脈沖的持續(xù)時(shí)間和頻率來產(chǎn)生一種模擬信號(hào),即PWM信號(hào)。
    的頭像 發(fā)表于 11-28 17:21 ?1948次閱讀

    脈沖模式調(diào)制的優(yōu)點(diǎn)是什么

    在現(xiàn)代通信和信號(hào)處理領(lǐng)域,脈沖模式調(diào)制(Pulse Modulation)技術(shù)扮演著至關(guān)重要的角色。這種技術(shù)通過將連續(xù)的模擬信號(hào)轉(zhuǎn)換為離散的脈沖序列,為信號(hào)的傳輸、處理和存儲(chǔ)提供了多種優(yōu)勢(shì)。以下
    的頭像 發(fā)表于 11-26 10:02 ?1085次閱讀

    MOSFET規(guī)格書中單脈沖雪崩能量EAS如何理解?電路設(shè)計(jì)咋用它計(jì)算MOS會(huì)損壞嗎?

    單脈沖雪崩能量簡(jiǎn)稱是EAS,這一參數(shù)是描述MOSFET在雪崩模式下能承受的能量極限的參數(shù),我們一般在電路設(shè)計(jì)中拿這個(gè)參數(shù)來評(píng)估MOSFET 的瞬態(tài)過壓耐受能力,進(jìn)而來評(píng)估器件在異常瞬態(tài)過壓情況下不會(huì)失效,
    的頭像 發(fā)表于 11-25 11:31 ?5865次閱讀
    MOSFET規(guī)格書中<b class='flag-5'>單脈沖</b>雪崩能量EAS如何理解?電路設(shè)計(jì)咋用它計(jì)算MOS會(huì)損壞嗎?

    高級(jí)定時(shí)器PWM輸入模式的配置方法

    我們將向大家介紹高級(jí)定時(shí)器的另一個(gè)常見應(yīng)用——PWM輸入模式。在本節(jié)課中,我們將先圍繞輸入捕獲模式展開,并重點(diǎn)描述PWM輸入模式和涉及的寄存
    的頭像 發(fā)表于 11-08 16:48 ?4329次閱讀
    高級(jí)定時(shí)器<b class='flag-5'>PWM</b>輸入<b class='flag-5'>模式</b>的配置方法

    數(shù)字單脈沖多普勒雷達(dá)與DSP教學(xué)

    電子發(fā)燒友網(wǎng)站提供《數(shù)字單脈沖多普勒雷達(dá)與DSP教學(xué).pdf》資料免費(fèi)下載
    發(fā)表于 10-28 10:17 ?0次下載
    數(shù)字<b class='flag-5'>單脈沖</b>多普勒雷達(dá)與DSP教學(xué)

    使用TMS320C40 DSP實(shí)現(xiàn)單脈沖雷達(dá)的數(shù)字跟蹤器

    電子發(fā)燒友網(wǎng)站提供《使用TMS320C40 DSP實(shí)現(xiàn)單脈沖雷達(dá)的數(shù)字跟蹤器.pdf》資料免費(fèi)下載
    發(fā)表于 10-28 10:04 ?0次下載
    使用TMS320C40 DSP實(shí)現(xiàn)<b class='flag-5'>單脈沖</b>雷達(dá)的數(shù)字跟蹤器

    使用如下定時(shí)器配置PWM,直接卡死了是什么原因呢?

    stcTim2BaseCfg.enCntDir= BtCntUp;//向上計(jì)數(shù),在三角波模式時(shí)只讀 stcTim2BaseCfg.enPWMTypeSel= BtIndependentPWM;//獨(dú)立輸出PWM
    發(fā)表于 09-27 06:21

    LMH6554放大200MHz的周期單脈沖信號(hào),沒有起到放大的作用,反而縮小了,為什么?

    放大200MHz的周期單脈沖信號(hào),沒有起到放大的作用,反而縮小了!
    發(fā)表于 09-14 07:57
    主站蜘蛛池模板: 色爱综合区五月小说 | 亚洲人成在线精品 | 一二三区在线视频 | 久久久精品2021免费观看 | 欧美又黄又嫩大片a级 | 天天操天天摸天天射 | 久久性感美女视频 | 色偷偷91久久综合噜噜噜噜 | 日韩成人午夜 | 免费高清在线视频色yeye | 黄 色 录像成 人播放免费 | 国产三片高清在线观看 | 黄色免费网站在线 | 丁香网五月网 | 伊人久久综合网亚洲 | 美女网站一区二区三区 | 午夜一级精品免费毛片 | 欧美无遮挡一区二区三区 | 午夜亚洲视频 | 国产在线色视频 | 亚洲第一视频 | 欧美jizzhd精品欧美4k | 天天狠天天天天透在线 | 免费一级特黄特色大片在线 | 免费在线观看理论片 | 精品精品国产理论在线观看 | 天天做天天摸天天爽天天爱 | china国语对白刺激videos chinese国产videoxx实拍 | 国产香蕉一区二区精品视频 | 成人欧美精品一区二区不卡 | 99久久亚洲国产高清观看 | 亚洲免费福利视频 | 欧美大狠狠大臿蕉香蕉大视频 | 天天做人人爱夜夜爽2020 | 在线亚洲精品中文字幕美乳 | 国产高清免费不卡观看 | 久久综合久久久久 | 黄色aa毛片 | 性欧美高清极品xx | 一区不卡 | 四虎永久在线精品影院 |