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

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

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

STM8S_009_ EXTI外部中斷

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-03-14 14:56 ? 次閱讀

有人問

我使用EXIT喚醒芯片,沒什么沒有觸發(fā)中斷,芯片卻喚醒了?

Ⅰ寫在前面

使用STM8S開發(fā)過上面類似功能的朋友應該會知道,STM8S的穩(wěn)定性不如STM32,特別是在低功耗時,使用EXTI外部中斷喚醒,很容易受到干擾信號而喚醒。因此,這種情況需在硬件電路上多加考慮抗干擾的電路。

其次,就是注意軟件的上下拉配置,如果外部加了上拉或下拉電阻,不建議再配置成上拉或下拉;如果沒有,建議加上。要使其軟件穩(wěn)定,還得深入EXTI的功能。

ⅡEXTI基礎知識

STM8S的EXTI外部中斷歸屬于GPIO一類,只需要將其IO配置成外部中斷、使能全局中斷、在中斷入口函數(shù)添加相關的代碼即可。

開啟中斷功能

用戶可以在I/O引腳為輸入模式時通過設置Px_CR2寄存器的相應位來配置某個I/O作為外部輸入中斷模式。在該配置下, I/O引腳上的一個信號沿或是低電平會產(chǎn)生一個中斷請求。

在EXTI_CR[2:1]寄存器中對于每一個中斷向量都可以獨立編程為上升沿或下降沿觸發(fā)。

外部中斷只有在對應I/O口被設置為輸入模式下才有效。

屏蔽中斷功能

可以通過對Px_CR2寄存器的相應位進行編程來單獨使能/關閉外部中斷功能。復位后外部中斷是關閉的。

提示:EXTI外部中斷只有在IO輸入模式下才有效,配置才輸出模式,不能正常由外部觸發(fā)中斷。

Ⅲ軟件工程源代碼

1.關于工程

本文提供的工程代碼是基于前面軟件工程“STM8S-A04_UART基本收發(fā)數(shù)據(jù)”增加EXTI外部中斷修改而來。初學的朋友可以參看我前面對應的基礎文章,那些文章講的比較詳細。

2.EXTI引腳配置

我們尚且定義為按鍵KEY,浮動輸入,中斷模式。

#define KEY_GPIO_PORT GPIOD

#define KEY_GPIO_PIN GPIO_PIN_2

GPIO_Init(KEY_GPIO_PORT, (GPIO_Pin_TypeDef)KEY_GPIO_PIN, GPIO_MODE_IN_FL_IT);

3.EXTI中斷配置

void EXTI_Configuration(void)

{

EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOD, EXTI_SENSITIVITY_FALL_ONLY);

EXTI_SetTLISensitivity(EXTI_TLISENSITIVITY_FALL_ONLY);

}

這個地方配置成下降沿中斷,端口需對應引腳的端口。

4.中斷入口函數(shù)

#define KEY_READ GPIO_ReadInputPin(KEY_GPIO_PORT, KEY_GPIO_PIN)

INTERRUPT_HANDLER(EXTI_PORTD_IRQHandler, 6)

{

if(RESET == KEY_READ)

{

IT_Delay(50); //延時消抖

if(RESET == KEY_READ) //確認按下

{

LED_REVERSE; //改變LED狀態(tài)

}

}

}

提示:我們使用的GPIOD,入口需要對應。

下載

STM8S資料

http://pan.baidu.com/s/1o7Tb9Yq

軟件源代碼工程兩版本(STM8S-A09_EXTI外部中斷):

http://pan.baidu.com/s/1c2EcRo0

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

    關注

    0

    文章

    4

    瀏覽量

    6988
  • STM8S
    +關注

    關注

    16

    文章

    149

    瀏覽量

    31271
收藏 人收藏

    評論

    相關推薦

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

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

    【GD32 MCU 入門教程】GD32 MCU 常見外設介紹(4)EXTI 中斷介紹

    EXTI(中斷/事件控制器)包含多個相互獨立的邊沿檢測電路并且能夠向處理器內(nèi)核產(chǎn)生中斷請求或喚醒事件。 EXTI 有三種觸發(fā)類型:上升沿觸發(fā)、下降沿觸發(fā)和任意沿觸發(fā)。
    的頭像 發(fā)表于 08-13 11:20 ?189次閱讀
    【GD32 MCU 入門教程】GD32 MCU 常見外設介紹(4)<b class='flag-5'>EXTI</b> <b class='flag-5'>中斷</b>介紹

    TPD8S009用于DisplayPort和HDMI的8通道ESD保護數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TPD8S009用于DisplayPort和HDMI的8通道ESD保護數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 07-11 10:41 ?0次下載
    TPD<b class='flag-5'>8S009</b>用于DisplayPort和HDMI的<b class='flag-5'>8</b>通道ESD保護數(shù)據(jù)表

    求助,關于STM8S103外部中斷問題求解

    );/*設置為上升沿和下降沿觸發(fā)觸發(fā)中斷*/ EXTI_CR1 |= (uint8_t)((uint8_t)(0x01) << 4);/*設置為上升沿和下降沿觸發(fā)觸發(fā)
    發(fā)表于 05-16 07:25

    STM8進入halt模式后由EXTI中斷喚醒,程序無法繼續(xù)正常運行下去的原因?

    大家好,我現(xiàn)在有一個問題請教: 1. 我的STM8S103K3在執(zhí)行完相關任務后進入halt模式,在進入之前我設置了幾個EXTI中斷 2. 中斷服務函數(shù)中沒有任何的操作,只起一個喚醒系
    發(fā)表于 05-15 06:40

    STM8L外部中斷跟普通MCU的外部中斷不一致,為什么?

    最近公司一個案子需要用到超低功耗MCU,在TI和ST的片子中糾結了一段時間,最后選了ST的STM8L151G2U6。 在使用外部中斷的時候迷糊了,發(fā)現(xiàn)這個的外部
    發(fā)表于 05-15 06:23

    求助,STM8S外部中斷的問題求解

    stm8s103 外部中斷問題,比如PD2口設置了外部中斷,上升沿觸發(fā),此中斷軟件優(yōu)先級3級最高
    發(fā)表于 05-10 08:23

    STM8S外部中斷進去了,出不來怎么解決?

    STM8S外部中斷進去了,出不來。也沒有中斷標志位,怎么才能讓程序走出來?
    發(fā)表于 05-09 06:25

    請問stm32l152的外部中斷EXTI9_5_IRQn怎么使用?

    中斷向量EXTI9_5_IRQn包含了5種管腳的中斷。如果我設置了GPIO6和GPIO7為外部中斷。我使用HAL庫,,那么
    發(fā)表于 04-22 06:14

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

    結構體   NVIC_InitStructure.NVIC_IRQChannel=EXTI2_IRQn;//使能外部中斷所在的通道
    發(fā)表于 04-08 08:05

    EXTI外部中斷在錯誤的邊沿誤觸發(fā)可能什么原因?

    大家在進行MCU項目開發(fā)時是否碰到過EXTI外部中斷在錯誤的邊沿誤觸發(fā)的情況?比如EXTI配置的為下降沿觸發(fā),實際情況在個別上升沿的時候也被誤觸發(fā)了。
    的頭像 發(fā)表于 02-03 09:48 ?637次閱讀
    <b class='flag-5'>EXTI</b><b class='flag-5'>外部</b><b class='flag-5'>中斷</b>在錯誤的邊沿誤觸發(fā)可能什么原因?

    STM32CubeMX的外部中斷的使用

    庫的中斷處理較為復雜:startup_stm32f103xb.s通過匯編注冊了中斷處理函數(shù)EXTI1_IRQHandler(),在stm32f1xx_it.c中,
    的頭像 發(fā)表于 11-26 08:00 ?647次閱讀
    STM32CubeMX的<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>的使用

    STM32如何配置外部中斷?STM32外部中斷配置步驟

    觸發(fā)或上升沿觸發(fā)的外部中斷線。這些中斷線可以通過中斷線控制器(EXTI)進行設置,并可以綁定到不同的GPIO端口上,以實現(xiàn)
    的頭像 發(fā)表于 10-26 17:47 ?3028次閱讀

    stm32 HAL庫開發(fā)-EXTI外部中斷編程

    如下圖所示,作用于外部IO口的信號,實際上經(jīng)過三個部分進入NVIC控制器:GPIO、EXTI控制器、NVIC控制器。
    的頭像 發(fā)表于 10-26 15:46 ?744次閱讀
    stm32 HAL庫開發(fā)-<b class='flag-5'>EXTI</b><b class='flag-5'>外部</b><b class='flag-5'>中斷</b>編程

    STM32外部中斷

    68個可屏蔽中斷通道,包括EXTI,TIM,ADC,USART,SPI,I2C,RTC等多個外設(F1系列最多的數(shù)量,以型號為主);
    的頭像 發(fā)表于 10-24 09:29 ?383次閱讀
    STM32<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>