衡阳派盒市场营销有限公司

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

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

3天內不再提示

STM32外部中斷大問題

撞上電子 ? 2023-11-08 08:00 ? 次閱讀

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

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

問題一:電氣噪聲和抖動

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

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

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

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

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

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

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

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

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

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

方法二:代碼配置問題

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

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

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

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

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

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

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

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

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

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

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

GPIO_InitStruct.Pull = GPIO_PULLUP; // 或 GPIO_PULLDOWN

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

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

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

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

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

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

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

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

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

17.棧溢出:如果中斷服務例程的調用棧溢出,可能會導致不穩定的行為。

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

    關注

    2272

    文章

    10923

    瀏覽量

    357576
  • 信號
    +關注

    關注

    11

    文章

    2804

    瀏覽量

    77104
  • 中斷
    +關注

    關注

    5

    文章

    900

    瀏覽量

    41753
收藏 人收藏

    評論

    相關推薦

    串口中斷是內部中斷還是外部中斷,串口中斷是怎么觸發的

    串口中斷通常被視為外部中斷。雖然串口控制器(如USART、UART等)可能集成在微控制器或處理器的內部,但從中斷的角度來看,串口中斷是由處理
    的頭像 發表于 01-29 15:03 ?124次閱讀

    stm32 GPIO中斷配置教程

    在嵌入式開發中,STM32微控制器因其高性能和豐富的外設而廣受歡迎。GPIO(通用輸入/輸出)中斷STM32微控制器中常用的功能之一,它允許開發者在特定引腳上檢測到外部信號變化時快速
    的頭像 發表于 11-19 15:53 ?1238次閱讀

    在TMS320C672x器件上配置外部中斷

    電子發燒友網站提供《在TMS320C672x器件上配置外部中斷.pdf》資料免費下載
    發表于 10-15 09:58 ?0次下載
    在TMS320C672x器件上配置<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>

    STM32CUBEMX(11)--外部中斷(EXTI)

    概述 外部中斷和事件控制器 (EXTI) 管理外部和內部異步事件 / 中斷,并生成相應的事件請求到CPU/ 中斷控制器和到電源管理的喚醒請求
    發表于 09-10 15:44

    stm32怎樣觸發軟件中斷

    了解STM32中斷系統 STM32微控制器具有豐富的中斷系統,包括NVIC(嵌套向量中斷控制器)和SYSTICK定時器。NVIC可以處理多達
    的頭像 發表于 09-02 09:32 ?1057次閱讀

    STM32F0外部中斷容易誤觸發怎么解決?

    STM32F0的外部中斷抗干擾能力太差了,經常誤觸發。旁邊電烙鐵開關按鈕只要切換一次都會引起誤觸發,當然外部中斷IO口有阻容RC濾波的,也照
    發表于 05-06 06:33

    STM32中斷分組及外部中斷的配置過程分享

    STM32中斷分組   STM32 的每一個GPIO都能配置成一個外部中斷觸發源,這點也是 STM32
    發表于 04-08 08:05

    請問如何區分觸發STM32外部中斷的GPIO引腳?

    如何區分觸發STM32 外部中斷的GPIO引腳?
    發表于 04-01 07:07

    STM32F030F4P6進入停止模式后,外部中斷引腳觸發不能喚醒的原因?

    stm32f030f4p6 使用HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFE);進入停止模式后,外部中斷引腳觸發不能喚醒,使用RT鬧鐘
    發表于 03-27 06:05

    STM32f103觸發外部中斷后再檢測斷開異常的原因?怎么解決?

    現象如下,使用stm32f103c8t6PA11端口檢測下降沿信號,外部中斷采用的是下降沿觸發,信號脈寬大于100us,現在現象是每次脈沖信號過來都會觸發外部
    發表于 03-25 08:08

    stm32G031串口外部不接上拉電阻,導致stm32進入到了硬件中斷怎么解決?

    stm32G031使用串口和另一其他芯片交互,外部直連,未接上拉電阻,導致stm32進入到了硬件中斷
    發表于 03-13 07:59

    STM32cubeIDE PA0口外部中斷改變LED燈狀態時,GPIO翻轉函數放在外部中斷回調函數中不被調用怎么解決?

    STM32cubeIDE PA0口外部中斷改變LED燈狀態時,GPIO翻轉函數放在外部中斷回調函數中不被調用,放在EXTI0_IRQHand
    發表于 03-12 06:32

    stm32外部中斷存在自身內部的消抖嗎?

    請問stm32外部中斷存在自身內部的消抖嗎? 若存在請問如何配置
    發表于 03-11 06:15

    stm32外部中斷能夠采樣到的邊沿是否有具體要求?

    請問下各位大佬,stm32外部中斷(下降沿或者上升沿觸發)能夠采樣到的邊沿是否有具體要求,我在spec里面只看到說能采樣到比主頻短的脈沖,但是對邊沿的時間沒有具體的表述,比如能采到多快的下降沿
    發表于 03-08 07:46

    請問下stm32G0系列理論上的外部中斷響應時間是多少?

    大佬們,請問下stm32G0系列理論上的外部中斷響應時間是多少?我在spec里面沒有找到對這塊的詳細描述,只有如下描述; 看之前的帖子stm32F103的
    發表于 03-08 07:41
    静安区| 沙龙百家乐官网娱乐平台| 综合百家乐官网博彩论坛| 博彩百家乐最新优惠| 澳门百家乐家用保险柜| 菲律宾沙龙国际| 先锋百家乐官网的玩法技巧和规则 | 百家乐官网tt娱乐| 百家乐下注口诀| 日博网址| 旅百家乐官网赢钱律| 顶级赌场官方安卓版手机下载| 绥江县| 百家乐实战技术| 大发888娱乐场 zb8| 罗浮宫百家乐官网的玩法技巧和规则 | 互助| 真人百家乐宣传| 六合彩开奖结果直播| 环球百家乐官网娱乐城| 大发888官网网址| 百家乐官网博彩的玩法技巧和规则| 真人百家乐做假| 圣淘沙百家乐官网游戏| 澳门百家乐心| 赌博百家乐官网趋势把握| 博E百百家乐的玩法技巧和规则| 网上赌城| 百家乐保单破解方法| 平遥县| 百家乐算牌方| 百家乐官网路单| 大发888官方sscptdf88yb| 上海百家乐官网的玩法技巧和规则 | 白水县| 百家乐概率统计| 百家乐官网仿水晶筹码| 鼎尚百家乐的玩法技巧和规则| bet365娱乐城| e世博百家乐娱乐场| 百家乐官网庄闲机率|