產(chǎn)品詳情
1
摘要
本篇應(yīng)用筆記主要介紹華大單片機(jī) HC32F460 系列芯片的停止模式注意事項(xiàng)。
2
華大HC32F460 系列的停止模式
2.1
簡(jiǎn)介
停止(STOP)模式是華大HC32F460 系列芯片三種低功耗模式之一,在停止模式中,CPU、大部分外設(shè)和時(shí)鐘源都停止動(dòng)作,芯片保持 CPU 內(nèi)部寄存器和 SRAM 數(shù)據(jù),外設(shè)狀態(tài)和管腳狀態(tài)。
2.2
寄存器介紹
1) PWR_PWRC1:電源模式控制寄存器,設(shè)定不同模式進(jìn)去 STOP 模式時(shí)的驅(qū)動(dòng)能力。
2) PWR_STPMCR:停止模式控制器,使能 STOP 模式以及設(shè)定 STOP 模式喚醒時(shí) CLK、FLASH 狀態(tài)。
3) INT_WUPEN:停止模式喚醒事件使能寄存器。
注意:進(jìn)入 stop 模式之前必須設(shè)定 INT_WUPEN,使能相應(yīng)喚醒事件,否則無(wú)法喚醒 stop 模式。
2.3 操作流程
2.3.1 進(jìn)入停止模式
上圖列出了進(jìn)入停止模式的步驟,在停止模式中,芯片的外設(shè)和 CPU 都停止工作。
注意:當(dāng)系統(tǒng)時(shí)鐘為 HRC 和 MPLL 時(shí),需切換系統(tǒng)時(shí)鐘源至 MRC,其他時(shí)鐘源只需打開(kāi)HRC。
2.3.2 解除停止模式
停止模式可以通過(guò)復(fù)位和中斷解除。
可以用于解除停止模式的復(fù)位方式有:
? 管腳復(fù)位
? 上電復(fù)位
? 欠壓復(fù)位(BOR)
? 電壓檢測(cè) 1/2 復(fù)位
? 專(zhuān)用看門(mén)狗復(fù)位可以用于解除停止模式的中斷事件有:
? 管腳中斷 EIRQ0~15
? 電壓檢測(cè) 1/2 中斷
? 專(zhuān)用看門(mén)狗下溢中斷
? 實(shí)時(shí)時(shí)鐘的周期中斷
? 鬧鐘中斷
? 喚醒定時(shí)器中斷
? 比較器 1 中斷
? UART1_RXD0 中斷
? TIMER01_A 比較匹配中斷
注意: 選擇中斷事件解除停止模式,需在進(jìn)入停止模式之前操作 INT_WUPEN 寄存器,設(shè)定相應(yīng)中斷事件喚醒許可。
2.4 注意事項(xiàng)
1) 執(zhí)行 WFI 進(jìn)入停止模式之前,需確保 FLASH 不處于編程或者擦除狀態(tài)(即
EFM_FSR.RDY=1),且振蕩停止監(jiān)測(cè)功能無(wú)效,否則芯片無(wú)法進(jìn)入停止模式。
2) 執(zhí)行 WFI 進(jìn)入停止模式之前,需確保 DMA 處于停止?fàn)顟B(tài)(即DMA_EN.EN=0),否則芯片可能會(huì)出現(xiàn)不可保證的動(dòng)作。
3) 執(zhí)行 WFI 進(jìn)入停止模式之前,需將 EIRQ 的數(shù)字濾波設(shè)置為無(wú)效,否則該中斷不能用于STOP 喚醒。
4) 選擇中斷事件解除停止模式,在執(zhí)行 WFI 進(jìn)入停止模式之前,需使能相應(yīng)中斷事件喚醒停止模式(INT_WUPEN)。
5) 執(zhí)行 WFI 進(jìn)入停止模式之前,需確保其他外設(shè)中斷(非 STOP 模式喚醒中斷)都已關(guān)閉。否則其他中斷的觸發(fā)可能導(dǎo)致芯片出現(xiàn)不可保證的動(dòng)作。喚醒后,再恢復(fù)其他外設(shè)中斷狀態(tài),以免錯(cuò)過(guò)中斷事件。
6) 執(zhí)行 WFI 進(jìn)入停止模式之前,須確保 HRC 震蕩,若系統(tǒng)時(shí)鐘為 HRC 和 MPLL,還需將系統(tǒng)時(shí)鐘切換至 MRC,喚醒后再恢復(fù)系統(tǒng)時(shí)鐘,恢復(fù) HRC 狀態(tài)。
7) 由中斷事件將 MCU 從停止模式恢復(fù)時(shí),需將系統(tǒng)從 MRC 恢復(fù)至用戶時(shí)鐘設(shè)定,并還原中斷配置
- 其中第 4、5、6、7 點(diǎn)注意事項(xiàng)可通過(guò)自行關(guān)閉 NVIC 及時(shí)鐘模塊對(duì)應(yīng)寄存器實(shí)現(xiàn),或調(diào)用 HDSC 提供的 API 接口:。
?
en_result_t enIntWakeupEnable(uint32_t u32WakeupSrc); (使能中斷事件喚醒停止模
式)
?
void PWC_EnterStopMd(void); (進(jìn)入停止模式)
此函數(shù)額外占用約 100us@168MHz
?
void PWC_IrqClkBackup(void); (備份用戶時(shí)鐘設(shè)置)
此函數(shù)額外占用約 50us@168MHz
?
void PWC_IrqClkRecover(void)(恢復(fù)用戶時(shí)鐘設(shè)置)
此函數(shù)額外占用約 50us@168MHz
3
樣例代碼
3.1
代碼介紹
用戶可根據(jù)上述的操作流程及注意事項(xiàng)編寫(xiě)自己的代碼來(lái)學(xué)習(xí)驗(yàn)證該模塊,也可以直接通過(guò)華大半導(dǎo)體的網(wǎng)站獲取到設(shè)備驅(qū)動(dòng)庫(kù)(Device Driver Library, DDL)的樣例代碼并使用其中的 LPM 里有關(guān) stop mode的樣例進(jìn)行驗(yàn)證。
3.2 代碼運(yùn)行
用戶可以通過(guò)華大半導(dǎo)體的網(wǎng)站獲取到 HC32F460 的 DDL 的樣例代碼(lpm_stop_wkup),并配合評(píng)估用板(EV-HC32F460-LQFP100-050-V1.1)運(yùn)行相關(guān)代碼學(xué)習(xí)使用 STOP 模式。