日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

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

一、 STM8S 外部中斷進(jìn)行喚醒

先了解一下STM8S的中斷資源


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

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


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


代碼如下:


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;//開全局中斷,必須要有這句,否則只會(huì)響應(yīng)不可屏蔽中斷

//#defineHALT_asm("halt")

//#defineRIM_asm("rim")

//#defineSIM_asm("sim")

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

stm8s_it.c代碼

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

@far@interruptvoidEXTI_PORTC_IRQHandler(void)

{

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

if(cur_mode==RX_MODE)

{

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

if(PB_ODR&PSB)

{

ss=1;

}

}else

{

}

return;

}

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


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

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


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

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

二、 AWU自動(dòng)喚醒

STM8S除了等待模式,停機(jī)模式,還提供活躍停機(jī)模式。活躍停機(jī)的使用,只需要將AWU使能即可。

#ifdefENABLE_AWU

voidInit_AWU(void)

{

CLK_PCKENR2=CLK_PCKENR2_AWU;//使能AWU時(shí)鐘

//#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;//活躍停機(jī)模式(AWU使能情況)下,關(guān)閉電壓調(diào)節(jié)器節(jié)省功耗

FLASH_CR1|=FLASH_CR1_AHALT;//活躍停機(jī)模式下Flash掉電,默認(rèn)只有停機(jī)模式才掉電,代價(jià)是喚醒時(shí)間增加至微秒級(jí)別

#endif/*ENABLEPOWER_LEVEL_1*/

}

#endif/*ENDENABLE_AWU*/

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




三、窗口看門狗

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


代碼如下:

#ifdefENABLE_WWDG

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

{

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

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

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

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

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

}

voidFree_WWDG(void)

{

if((WWDG_CR&0x7F)

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

}

#endif/*ENDENABLE_WWDG*/

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


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


總結(jié):

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

2、AWU的使用相對(duì)簡(jiǎn)單,只需要注意將時(shí)鐘打開。

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


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

STM32有兩個(gè)看門狗,獨(dú)立看門狗和窗口看門狗。其實(shí)兩者的功能是類似的,只是喂狗的限制時(shí)間不同。

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

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

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

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

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

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

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

stm32有兩個(gè)看門狗,獨(dú)立看門狗和窗口看門狗,其實(shí)兩者的功能是類似的,只是喂狗的限制時(shí)間不同。獨(dú)立看門狗是限制喂狗時(shí)間在0-x內(nèi),x由你的相關(guān)寄存器決定。喂狗的時(shí)間不能過晚。窗口看門狗,所以稱之為窗口就是因?yàn)?/p> 關(guān)鍵字: STM32 庫函數(shù) 操作寄存器 窗口看門狗

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

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

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

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

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

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

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

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

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

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