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