www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]一、 STM8S 外部中斷進行喚醒先了解一下STM8S的中斷資源再看看STM8S的中斷管理。STM8S采用軟件優(yōu)先級和硬件優(yōu)先級來控制一個中斷的響應(yīng),先比較軟件優(yōu)先級只有當(dāng)軟件優(yōu)先級一致時才會比較硬件優(yōu)先級,由于硬件優(yōu)先級

一、 STM8S 外部中斷進行喚醒

先了解一下STM8S的中斷資源


再看看STM8S的中斷管理。STM8S采用軟件優(yōu)先級和硬件優(yōu)先級來控制一個中斷的響應(yīng),先比較軟件優(yōu)先級只有當(dāng)軟件優(yōu)先級一致時才會比較硬件優(yōu)先級,由于硬件優(yōu)先級具有唯一性,這樣便保證了某一時刻定會只有一個中斷被處理。

要使用外部中斷,只需簡單的配置一下EXTI_CR1寄存器,并將主程序main的軟件優(yōu)先級置為0即可。默認情況下自復(fù)位開始,主程序的軟件優(yōu)先級被設(shè)置為3,處于最高軟件優(yōu)先級,僅有TRAP,TLI,RESET中斷能夠打斷,其余的中斷都是不會被響應(yīng)的。


為了防止中斷過程中被別的優(yōu)先級高的中斷所打斷,可以將當(dāng)前優(yōu)先級置為最高3級。


代碼如下:


main.c代碼

//EXTI_CR1|=EXTI_CR1_PBIS_R;//PB5TRINT高電平觸發(fā)

EXTI_CR1|=EXTI_CR1_PCIS_R;//PC3上升沿觸發(fā)

//#defineEXTI_CR1_PCIS_R(1<<4)

RIM;//開全局中斷,必須要有這句,否則只會響應(yīng)不可屏蔽中斷

//#defineHALT_asm("halt")

//#defineRIM_asm("rim")

//#defineSIM_asm("sim")

GPIO_Init(GPIOC,TRINT,GPIO_MODE_IN_PU_IT);//使能對應(yīng)的IO口中斷

stm8s_it.c代碼

//收發(fā)中斷(PC3)BJ8F101

@far@interruptvoidEXTI_PORTC_IRQHandler(void)

{

//作為接收中斷使用,需要注意PSB_D,TRRDY_U會產(chǎn)生一次中斷,TRINT被拉高

if(cur_mode==RX_MODE)

{

//為了排除第一次,可以檢測PSB是否為高,高表示是ActiveMode

if(PB_ODR&PSB)

{

ss=1;

}

}else

{

}

return;

}

其實rim指令,只是將主程序的軟件優(yōu)先級降低為0,這樣才能被中斷打斷。自然sim指令適用于將軟件優(yōu)先級拉升至3級別。


而且還得注意如果一個端口上存在幾個不同的中斷(PC3,PC4,PC5都有中斷發(fā)生),只能根據(jù)其他的一些標(biāo)志來判斷是哪個IO口中斷,其實這個芯片是沒有中斷標(biāo)志位的。

另外一個是出現(xiàn)進入中斷后跳不出來,很有可能是指令執(zhí)行順序不正確,如:先執(zhí)行了rim指令,接著使能GPIO口中斷后,將對應(yīng)的IO口設(shè)置為上升沿觸發(fā),發(fā)現(xiàn)跳進中斷后就出不來。這個原因是因為IO口可能復(fù)位后就處于不確定狀態(tài),執(zhí)行rim后立刻就被響應(yīng)。默認情況下IO口上升沿下降沿都將觸發(fā)中斷。


外部中斷是能夠喚醒系統(tǒng)的,如:

也就是說在main函數(shù)中執(zhí)行了halt指令后,進入停機模式(沒有使能AWU的情況下),外部中斷能夠?qū)CU中停機喚醒。使用仿真器可以設(shè)置斷點進行證實,或者通過LED燈亦可。

二、 AWU自動喚醒

STM8S除了等待模式,停機模式,還提供活躍停機模式?;钴S停機的使用,只需要將AWU使能即可。

#ifdefENABLE_AWU

voidInit_AWU(void)

{

CLK_PCKENR2=CLK_PCKENR2_AWU;//使能AWU時鐘

//#defineAWU_AWUTB_1S0x0C/*500ms~1s*/

//#defineAWU_AWUTB_2S0x0D/*1s~2s*/

AWU_TBR=AWU_AWUTB_1S;//AWU_AWUTB_2S;//1~2s

AWU_APR=0x3E;//分頻

AWU_CSR|=0x10;//AWU使能

#ifdefPOWER_LEVEL_1//功耗1,最省電

CLK_ICKR|=CLK_ICKR_REGAH;//活躍停機模式(AWU使能情況)下,關(guān)閉電壓調(diào)節(jié)器節(jié)省功耗

FLASH_CR1|=FLASH_CR1_AHALT;//活躍停機模式下Flash掉電,默認只有停機模式才掉電,代價是喚醒時間增加至微秒級別

#endif/*ENABLEPOWER_LEVEL_1*/

}

#endif/*ENDENABLE_AWU*/

然后在main函數(shù)內(nèi)部執(zhí)行halt指令后直到AWU進行喚醒,MCU才會接著運行。另外STM8S的AWU定時喚醒提供最大30秒左右延時。




三、窗口看門狗

STM8S提供兩種類型看門狗,個人感覺窗口看門狗能夠解決停機模式與使用看門狗的矛盾,因此獨衷于窗口看門狗。


代碼如下:

#ifdefENABLE_WWDG

voidInit_WWDG(void)//初始化窗口看門狗

{

//窗口看門狗在計數(shù)值降到0x3F時產(chǎn)生復(fù)位,而且不能在大于窗口值時喂狗,否則復(fù)位

WWDG_WR=0x60;//看門狗窗口值,窗口值必須在0x3F以上,但必須小于計數(shù)值,否則無法喂狗

WWDG_CR=0x7F;//看門狗計數(shù)值

WWDG_CR|=0x80;//使能窗口看門狗

//4Mhz主頻,計數(shù)值0x7F最大延長時間為(64*(12288/4000000))=196ms

}

voidFree_WWDG(void)

{

if((WWDG_CR&0x7F)

WWDG_CR|=0x7F;//重新喂狗

}

#endif/*ENDENABLE_WWDG*/

不能使用定時器來定時喂狗,MCU掛掉后可能定時器電路仍在工作,這樣看門狗就失去了意義。


獨立看門狗不受MCU停機模式或其他模式影響,它的時鐘是獨立的,所以進入停機模式會導(dǎo)致系統(tǒng)復(fù)位。


總結(jié):

1、中斷的使用需要注意優(yōu)先級的設(shè)置,以及對應(yīng)的IO口使能觸發(fā)條件。

2、AWU的使用相對簡單,只需要注意將時鐘打開。

3、窗口看門狗要注意喂狗,以及延時設(shè)置,具體延時時間可以使用 step = 12288 / fclk_wwdg_ck計算出來。


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

STM32有兩個看門狗,獨立看門狗和窗口看門狗。其實兩者的功能是類似的,只是喂狗的限制時間不同。

關(guān)鍵字: 看門狗 窗口看門狗

關(guān)注星標(biāo)公眾號,不錯過精彩內(nèi)容素材來源|STM32早期的MCU沒有看門狗,就容易引起有些產(chǎn)品死機了不能重啟工作。為了避免這個問題,后期的MCU在內(nèi)部集成了看門狗的功能。為了滿足更多使用場景,現(xiàn)在很多MCU都集成了兩個看門...

關(guān)鍵字: MCU 獨立看門狗 窗口看門狗

▼更多精彩推薦,請關(guān)注我們▼早期的MCU沒有看門狗,就容易引起有些產(chǎn)品死機了不能重啟工作。為了避免這個問題,后期的MCU在內(nèi)部集成了看門狗的功能。為了滿足更多使用場景,現(xiàn)在很多MCU都集成了兩個看門狗:獨立看門狗與窗口看...

關(guān)鍵字: 獨立看門狗 窗口看門狗

STM32有兩個看門狗,獨立看門狗和窗口看門狗。其實兩者的功能是類似的,只是喂狗的限制時間不同。 窗口看門狗 窗口看門狗,之所以稱為窗口,是因為其喂狗時間是一個有上下限的范圍內(nèi),你可以通過設(shè)定相關(guān)寄存器,設(shè)定其上限時間和...

關(guān)鍵字: 獨立看門狗 窗口看門狗 計數(shù)器 定時

stm32有兩個看門狗,獨立看門狗和窗口看門狗,其實兩者的功能是類似的,只是喂狗的限制時間不同。獨立看門狗是限制喂狗時間在0-x內(nèi),x由你的相關(guān)寄存器決定。喂狗的時間不能過晚。窗口看門狗,所以稱之為窗口就是因為

關(guān)鍵字: STM32 庫函數(shù) 操作寄存器 窗口看門狗

今天查看STM32資料時,對輸出速度2M 10M 50M不是很了解,再加上移植ARF2496K程序到STM32時出現(xiàn)意外情況。一、STM8S端作為接收端和發(fā)送端時接收到的數(shù)據(jù)都正常。二、發(fā)送端(STM8S),接收端(ST...

關(guān)鍵字: io口 stm32f stm8s 輸出速率

1)獨立看門狗沒有中斷,窗口看門狗有中斷2)獨立看門狗有硬件軟件之分,窗口看門狗只能軟件控制3)獨立看門狗只有下限,窗口看門狗又下限和上限4)獨立看門狗是12位遞減的。窗口看門狗是7位遞減的5)獨立看門狗是用

關(guān)鍵字: STM32 獨立看門狗 窗口看門狗

STM8S單片機開發(fā)環(huán)境由三大部分組成,包括PC機上的開發(fā)軟件(集成開發(fā)軟件、驅(qū)動程序等)、調(diào)試&編程器ST-LINK、目標(biāo)單片機電路板。如下圖所示:1、PC機上開發(fā)軟件PC機上的軟件包括:ST-LINK驅(qū)動程序...

關(guān)鍵字: stm8s 單片機入門 開發(fā)環(huán)境

一直理解STM8S定時器有點問題,所以在做定時器時候,出現(xiàn)了好奇怪的問題.比如,今次在理解預(yù)裝載值時候出現(xiàn)問題,導(dǎo)致動態(tài)調(diào)整預(yù)裝載值均無法得到自己預(yù)期的效果.我們可以看參考手冊定時器這塊的描述,或者上網(wǎng)找一些文章

關(guān)鍵字: stm8s 定時器溢出 重裝載

Ⅰ、寫在前面完事開頭難,只要肯努力;師傅領(lǐng)進門,修行看個人;當(dāng)你看到本文,說明你是幸運的,作者接下來推出的一系列STM8S教程,將助你踏入STM8S的世界。本文是STM8S教程的開始,寫給剛?cè)腴TSTM8S的朋友。學(xué)習(xí)本文

關(guān)鍵字: gpio stm8s 基礎(chǔ)知識
關(guān)閉