新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM8S 外部中斷一直進(jìn)解決方法

        STM8S 外部中斷一直進(jìn)解決方法

        作者: 時間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
        用到官方的函數(shù)庫操作,也看了例程,設(shè)計(jì)方法基本一樣:

        GPIO_Init(GPIOA, (GPIO_Pin_TypeDef)(GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6), GPIO_MODE_IN_PU_IT); //設(shè)置外部IO中斷模式
        EXTI_SetExtIntSensitivity(EXTI_PORT_GPIOA, EXTI_SENSITIVITY_FALL_ONLY); //設(shè)置中斷觸發(fā)方式

        本文引用地址:http://www.104case.com/article/201611/316512.htm然后外部中斷就可以進(jìn)了,但是發(fā)現(xiàn)中斷服務(wù)函數(shù)沒有中斷源的情況下一直進(jìn)。
        解決方法:
        在初始化外部中斷的時候,總中斷一定要關(guān)。
        初始化完外部中斷,在開總中斷,上述情況得到解決,只有觸發(fā)源來的時候進(jìn)中斷。

        因?yàn)闆]有中斷的清除標(biāo)志位,這一點(diǎn)與其它單片機(jī)是不同的。
        EXTI_CR1 觸發(fā)邊沿的設(shè)置 要在總中斷沒開時才能寫入!
        PD7 是 不可屏蔽的最高優(yōu)先級的硬件中斷 (TLI)
        設(shè)置順序:最好先關(guān)中斷 設(shè)置邊沿 開啟引腳 最后開總中斷
        DisableAllIntp();
        EXTI_CR1 = ****(PD口雙沿中斷);
        Init_Exti_PD_Intp();
        EnableAllIntp();
        另外定時器讀取與51有異,順序要先讀TIM1->CNTRH 再讀TIM1->CNTRL
        要是反過來讀 就會得不到正確的值 寫CNTR寄存器時,要先關(guān)閉(disable)定時器,否則有可能無法正常寫入的值



        關(guān)鍵詞: STM8S外部中

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 阜南县| 彩票| 灵璧县| 博罗县| 舒城县| 临沂市| 酉阳| 新余市| 甘肃省| 宜兰县| 阳西县| 香河县| 洪泽县| 汝南县| 台湾省| 衡水市| 衡阳市| 宜丰县| 井研县| 横山县| 洛浦县| 尖扎县| 巴塘县| 桂东县| 慈利县| 东辽县| 吴桥县| SHOW| 来宾市| 龙江县| 额尔古纳市| 什邡市| 阿城市| 柞水县| 白山市| 曲阜市| 都兰县| 伊宁县| 江西省| 获嘉县| 营山县|