新聞中心

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

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

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

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://m.butianyuan.cn/article/201611/316512.htm然后外部中斷就可以進(jìn)了,但是發(fā)現(xiàn)中斷服務(wù)函數(shù)沒有中斷源的情況下一直進(jìn)。
解決方法:
在初始化外部中斷的時候,總中斷一定要關(guān)。
初始化完外部中斷,在開總中斷,上述情況得到解決,只有觸發(fā)源來的時候進(jìn)中斷。

因為沒有中斷的清除標(biāo)志位,這一點與其它單片機(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)閉