91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

STM32外部中斷大問題

撞上電子 ? 2023-11-08 08:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

問題:一直進入中斷,沒有觸發(fā)信號,也一直進入。

描述:開PA0為外部中斷,剛剛很好,一個觸發(fā)信號一個中斷,中斷函數(shù)沒有丟,也沒有搶跑,開PA1為外部中斷也是,都很好,只要能開到3個外部中斷以上,就會出現(xiàn)這種情況,明明沒有觸發(fā)外部中斷,可是中斷服務函數(shù)還是不斷的++。

問題一:電氣噪聲和抖動

電氣噪聲和抖動是常見的問題,可能會導致STM32的外部中斷不斷觸發(fā),即使沒有明顯的觸發(fā)信號。以下是一些處理電氣噪聲和抖動的方法:

1.添加電容濾波器:在外部中斷引腳上添加適當大小的電容,以平滑信號并抑制高頻噪聲。電容的值應根據(jù)信號頻率和噪聲特性進行選擇。

2.使用濾波器電路:在外部信號引腳前添加濾波器電路,如低通濾波器,以濾除高頻噪聲。這可以是RC(電阻-電容)濾波器或其他合適的濾波器。

3.增加上拉/下拉電阻:使用外部上拉或下拉電阻,以增加信號的穩(wěn)定性。這有助于確保信號在未連接到外部源時維持穩(wěn)定的邏輯電平。

4.硬件抖動消除電路:使用硬件抖動消除電路,如Schmitt觸發(fā)器,以抵抗瞬時信號變化引起的抖動。

5.增加軟件消抖:在中斷服務例程中實現(xiàn)軟件抖動消除。這意味著只有在信號保持穩(wěn)定一段時間后才觸發(fā)中斷,而不是立刻觸發(fā)。

6.檢查信號線和地線:確保信號線和地線連接正確,避免共模干擾。使用良好的接地和信號線布局規(guī)則。

7.屏蔽未使用的引腳:在STM32上未使用的引腳可以被配置為輸出并拉低,以防止它們接收到干擾信號。

8.選擇合適的外部電源:使用穩(wěn)定的電源供應,避免電源波動引起的問題。

9.地線屏蔽:對于特別嘈雜的環(huán)境,可以考慮在地線上添加屏蔽層,以減少共模噪聲。

方法二:代碼配置問題

如果外部中斷一直觸發(fā),但中斷源明明沒有給觸發(fā)信號,代碼配置錯誤可能是一個潛在的問題。以下是該問題的一些解決方法:

1.配置錯誤的中斷源:STM32具有多個外部中斷線,每個中斷線可以與多個引腳相關聯(lián)。確保你正確選擇了要與外部中斷線相關聯(lián)的引腳。此外,還要確保你正確配置了中斷線的觸發(fā)方式和優(yōu)先級。

2.未正確初始化HAL庫:如果你使用HAL庫,確保在程序開始時正確初始化HAL庫,包括系統(tǒng)時鐘的配置。

3.合理設置優(yōu)先級:根據(jù)你的應用需求,為每個中斷源設置適當?shù)膬?yōu)先級。通常,更重要的中斷應具有更高的優(yōu)先級。注意,不要將所有中斷設置為相同的優(yōu)先級,因為這可能會導致不穩(wěn)定的中斷處理。

4.分組優(yōu)先級的選擇:STM32允許你在中斷優(yōu)先級分組和子優(yōu)先級之間進行權(quán)衡。分組優(yōu)先級位數(shù)的選擇取決于應用的需求。較長的分組優(yōu)先級位數(shù)允許更多的分組,但可能限制子優(yōu)先級的數(shù)量。較短的分組優(yōu)先級位數(shù)允許更多的子優(yōu)先級,但可能限制分組數(shù)。

5.處理多級中斷:如果你有多個中斷源,確保正確設置它們的優(yōu)先級,以確保較高優(yōu)先級的中斷可以打斷較低優(yōu)先級的中斷。這在實時性要求較高的系統(tǒng)中尤為重要。

6.不要忽略系統(tǒng)中斷:STM32還有一些系統(tǒng)中斷,如SysTick定時器中斷,這些中斷對系統(tǒng)的正常運行非常重要。在設置中斷優(yōu)先級時,不要忽略這些系統(tǒng)中斷。

7.避免中斷嵌套問題:在某些情況下,中斷嵌套可能會引起問題。確保不會出現(xiàn)不必要的中斷嵌套,以避免優(yōu)先級爭奪和死鎖問題。

8.引腳模式錯誤:確保你已正確配置外部中斷引腳的模式。在HAL庫中,可以使用 `HAL_GPIO_Init` 函數(shù)或直接設置寄存器來配置引腳模式。外部中斷引腳應配置為輸入模式。示例(使用HAL庫):

GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

9.引腳狀態(tài)錯誤:檢查引腳的初始狀態(tài)。外部中斷引腳可能需要上拉或下拉電阻來確保初始狀態(tài)是穩(wěn)定的。示例(使用HAL庫):

GPIO_InitStruct.Pull = GPIO_PULLUP; // 或 GPIO_PULLDOWN

10 觸發(fā)方式設置錯誤:外部中斷可以根據(jù)信號的上升沿、下降沿或兩者都觸發(fā)。確保你選擇了正確的觸發(fā)方式。示例(使用HAL庫):

EXTI_InitStruct.Trigger = EXTI_TRIGGER_RISING_FALLING; // 或 EXTI_TRIGGER_RISING 或 EXTI_TRIGGER_FALLING

11. 中斷引腳編號錯誤:STM32有多個引腳可用于外部中斷,確保你選擇的引腳編號與硬件連接匹配。不同的STM32型號可能有不同的引腳分配。

12. 中斷線配置錯誤:某些STM32型號允許將多個引腳連接到相同的中斷線。確保你正確配置了中斷線以將引腳連接到外部中斷。

13. 未啟用中斷線:在使用外部中斷之前,需要啟用中斷線。在HAL庫中,你可以使用 `HAL_NVIC_EnableIRQ` 函數(shù)來啟用中斷線。示例(使用HAL庫):

HAL_NVIC_EnableIRQ(EXTI0_IRQn); // 啟用中斷線0

14.中斷服務例程過長:中斷服務例程應盡量簡潔和高效,不應占用太多時間。如果中斷服務例程過長,可能會導致其他中斷無法及時觸發(fā),或者導致系統(tǒng)性能問題。確保中斷服務例程只包含必要的操作,避免執(zhí)行復雜的計算或大量的數(shù)據(jù)傳輸。

15.未清除中斷標志:如果中斷服務例程未清除中斷標志,可能會導致中斷不斷觸發(fā),因為中斷標志仍然保持為1。

16.全局中斷嵌套問題:如果中斷嵌套配置不正確,可能會導致問題,如死鎖或中斷爭奪。

17.棧溢出:如果中斷服務例程的調(diào)用棧溢出,可能會導致不穩(wěn)定的行為。

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

    關注

    2310

    文章

    11162

    瀏覽量

    373515
  • 信號
    +關注

    關注

    12

    文章

    2914

    瀏覽量

    80159
  • 中斷
    +關注

    關注

    5

    文章

    917

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    CW32F030CxTx外部中斷

    這里使用的外部中斷函數(shù)宏定義板子上的LED和按鍵的引腳 #define LED_GPIO_PORT CW_GPIOB #define LED_GPIO_PINS GPIO_PIN_8
    發(fā)表于 01-29 07:37

    瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南之DTC外部中斷觸發(fā)傳輸實驗

    本實驗的目標是使用外部中斷來觸發(fā)DTC傳輸,因此需要用到一個按鍵。
    的頭像 發(fā)表于 12-26 09:32 ?3999次閱讀
    瑞薩RA系列FSP庫開發(fā)實戰(zhàn)指南之DTC<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>觸發(fā)傳輸實驗

    在CW32F030 MCU上設置外部中斷和RTC喚醒條件的示例

    示例1:外部中斷喚醒 假設我們有一個按鍵連接到CW32F030的某個外部中斷引腳上,當按鍵被按下時,MCU將從Sleep模式喚醒。 c #include \"cw32a030.h
    發(fā)表于 11-25 08:00

    求助,關于蜂鳥mcu外部中斷的問題求解

    請問我如果想知道具體是哪個外部中斷觸發(fā),該看哪個plic寄存器呢,是看pending嗎還是claim/complete,claim/complete這個寄存器是什么意思呢,我看他的地址
    發(fā)表于 11-07 07:14

    RVMCU課堂「12」: 手把手教你玩轉(zhuǎn)RVSTAR—外部中斷

    ?外部中斷是單片機實時地處理外部事件的一種機制。具體指的是,當某種外部事件發(fā)生時,單片機的中斷系統(tǒng)迫使CPU暫停正在執(zhí)行的程序,轉(zhuǎn)而去進行
    發(fā)表于 10-31 07:39

    瑞薩RA系列MCU的外部引腳中斷詳解

    上一章節(jié)我們已經(jīng)詳細介紹了NVIC、ICU、ELC、NMI并對RA系列MCU的中斷管理系統(tǒng)有個全局的了解,我們這一章節(jié)的內(nèi)容是如何控制外部中斷,也是內(nèi)核里的NVIC的實例應用,這也是RA系列MCU非常重要的一個
    的頭像 發(fā)表于 09-23 09:38 ?1690次閱讀
    瑞薩RA系列MCU的<b class='flag-5'>外部</b>引腳<b class='flag-5'>中斷</b>詳解

    telnet連接后,當外部中斷觸發(fā)rt_kprintf時候,telnet服務會卡死怎么解決?

    環(huán)境: STM32F407VET6+LAN8720A+RT-Thread4.1.0 1、用的netutils里的telnet服務 2、rt_pin_attach_irq注冊的外部中斷服務
    發(fā)表于 09-11 06:48

    何時使用 GPIO 中斷外部中斷

    何時使用 GPIO 中斷外部中斷?
    發(fā)表于 08-26 07:27

    中科昊芯Core_DSC280025C開發(fā)板的外部中斷問題

    獲得中科昊芯Core_DSC280025C開發(fā)板開發(fā)板后,我就抓緊時間研究,無奈學識淺薄,學得很慢,近日研究外部中斷,好像該單片機支持INT_XINT1~INT_XINT7中斷,不知道哪個引腳對應
    發(fā)表于 08-08 22:06

    CYW20719 最多有多少個外部中斷?

    CYW20719 最多有多少個外部中斷?
    發(fā)表于 07-01 07:16

    第六章 外部中斷

    本章介紹W55MH32的IO口作為外部中斷輸入的使用。先闡述了NVIC(嵌套向量中斷控制器) 的結(jié)構(gòu)、寄存器、優(yōu)先級及相關函數(shù),再說明EXTI(外部
    的頭像 發(fā)表于 05-26 16:27 ?1499次閱讀
    第六章 <b class='flag-5'>外部</b><b class='flag-5'>中斷</b>

    極海APM32F003觸發(fā)NMI中斷的解決方案

    問題:APM32F003F6P6 PC3配置成外部中斷口,下拉觸發(fā)之后沒有進入EINTC_IRQHandler外部中斷函數(shù),反而一直觸發(fā)NMI中斷
    的頭像 發(fā)表于 05-24 14:44 ?957次閱讀
    極海APM32F003觸發(fā)NMI<b class='flag-5'>中斷</b>的解決方案

    STM32中斷如此簡單(可下載)

    下面我們先來了解一些基本概念:中斷中斷是什么?舉個例子來說,當我們正在工作時,突然電話響了,這時你會把手里的工作先停下來,然后去接電話,當接完電話后,電話里的人安排你馬上做一件事,這時你需要立刻去
    發(fā)表于 03-24 14:27 ?1次下載

    STM32使用外部中斷觸發(fā)ADC采樣DMA搬運出現(xiàn)兩次進入DMA中斷的異常情況,怎么解決?

    STM32使用外部中斷觸發(fā)ADC采樣DMA搬運出現(xiàn)兩次進入DMA中斷的異常情況,使用的HAL庫+MX配置的,示波器觀察波形ADC中斷進入一次
    發(fā)表于 03-14 12:46

    Stm32f103 hal庫如果設置多個外部中斷,只要用螺絲刀碰觸其中一個中斷線,所有的中斷函數(shù)都有可能進入,亂跳,為什么?

    Stm32f103 hal庫如果設置多個外部中斷,只要用螺絲刀碰觸其中一個中斷線,所有的中斷函數(shù)都有可能進入,亂跳。同一個線路板用標準庫就沒
    發(fā)表于 03-10 08:07