STM8S 外部中斷一直進(jìn)解決方法
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ā)方式
解決方法:
在初始化外部中斷的時(shí)候,總中斷一定要關(guān)。
初始化完外部中斷,在開(kāi)總中斷,上述情況得到解決,只有觸發(fā)源來(lái)的時(shí)候進(jìn)中斷。
因?yàn)闆](méi)有中斷的清除標(biāo)志位,這一點(diǎn)與其它單片機(jī)是不同的。
EXTI_CR1 觸發(fā)邊沿的設(shè)置 要在總中斷沒(méi)開(kāi)時(shí)才能寫(xiě)入!
PD7 是 不可屏蔽的最高優(yōu)先級(jí)的硬件中斷 (TLI)
設(shè)置順序:最好先關(guān)中斷 設(shè)置邊沿 開(kāi)啟引腳 最后開(kāi)總中斷
DisableAllIntp();
EXTI_CR1 = ****(PD口雙沿中斷);
Init_Exti_PD_Intp();
EnableAllIntp();
另外定時(shí)器讀取與51有異,順序要先讀TIM1->CNTRH 再讀TIM1->CNTRL
要是反過(guò)來(lái)讀 就會(huì)得不到正確的值 寫(xiě)CNTR寄存器時(shí),要先關(guān)閉(disable)定時(shí)器,否則有可能無(wú)法正常寫(xiě)入的值
評(píng)論