stm8l051 halt之後外部中斷喚醒問題

2021-07-09 15:36:30 字數 940 閱讀 4799

最近用到stm8l051 halt,在halt之後開啟了外部中斷,有時靈,有時不靈,設定下降沿觸發,但是按鍵(低有效)放開了才會從halt退出,最後發現在進去外部中斷的時候一直在外部中斷裡面不退出。

在外部中斷程式裡面把埠的外部中斷和埠使能的外部中斷功能關閉,問題解決,可以在下降沿從halt退出。

1、開啟halt,其他**省略,只貼halt部分:

/* 禁止tim3 */

tim3->sr1 = (uint8_t)(~(uint8_t)tim3_it_update);

clk_peripheralclockconfig(clk_peripheral_tim3, disable);   

tim3_itconfig(tim3_it_update, disable);  

tim3_cmd(disable);

if(halt.wakeupflag == 0)

halt.wakeupflag = 0; 

si4432portreset();

mcutxledoff; 

power433mon;

//喚醒  

exti->sr1 = 0xff;

exti->sr2 = 0xff; 

gpioa->cr2  = 0x00;    

gpiob->cr2  = 0x00;  

gpiod->cr2  = 0x00;  

gpioe->cr2  = 0x00;  

set_x_inputpullhigh(); 

2、     stm8l15x_it.c裡面:

/*** @brief external it pin6 interrupt routine.

* @param  none

* @retval none

*/interrupt_handler(exti6_irqhandler,14)

stm8l051的外部中斷

stm8l051,如果開啟全域性中斷後再去設定外部中斷,在 情況下觀察暫存器沒有被設定,即使直接向中斷控制暫存器寫值也無效。關閉總中斷後,再去設定相應的外部中斷,則中斷相關暫存器設定成功,程式執行正常。如下 disableinterrupts exti deinit exti setpinsensi...

STM8L051低功耗實現

最近專案中需要用到門磁,用的stm8l051晶元。使用鈕扣電池自然少不了要求低功耗節能省電。首先看下這款晶元的低功耗能力 halt模式下可以達到350na,可以說是非常省電了。從halt模式喚醒的時間也非常快,只需要5us。門磁的功能介紹 就是利用磁鐵吸合幹簧管之後,給微控制器乙個脈衝,分開後再產生...

STM8L051 RTC寫入時間失敗

最近用stm8l051做的乙個低功耗的專案,需要同步兩個節點之間的時間,結果rtc沒有在設定的時間點喚醒微控制器,最開始以為是晶振的誤差太大,偶然間發現兩次喚醒的時間間隔和我設定的是一致的,於是排除晶振的原因。把節點的喚醒時間和收到其它節點發來的時間列印後之後發現有時候要經過2 3次才能正確的把接收...