亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 華大單片機復(fù)位原因的確定 [打印本頁]

作者: 白虎姐    時間: 2020-1-20 22:01
標題: 華大單片機復(fù)位原因的確定
本文以華大MCU HC32F003為例說明相應(yīng)的操作。
HC32F003一共有7個復(fù)位信號來源,每個復(fù)位信號都可以讓CPU重新運行,絕大多數(shù)寄存器會被復(fù)位到復(fù)位值,程序計數(shù)器 PC 會被復(fù)位指向 00000000。

復(fù)位時復(fù)位標識寄存器(Reset_flag )的復(fù)位值為 00000000_00000000_00000000_xxxxxx11b。

Ÿ POR/BOR 復(fù)位(VCC 域及 Vcore 域)
Ÿ 外部 Reset PAD 復(fù)位Ÿ WDT 復(fù)位
Ÿ PCA 復(fù)位Ÿ LVD 復(fù)位
Ÿ Cortex-M0+ SYSRESETREQ 軟件復(fù)位
Ÿ Cortex-M0+ LOCKUP 硬件復(fù)位

每個復(fù)位源由相應(yīng)的復(fù)位標志進行指示。復(fù)位標志均由硬件置位,需要用戶軟件清零。

芯片復(fù)位時,如果查詢到 Reset_flag. POR15V 或 Reset_flag. POR5V 為 1 則為 上電復(fù)位。

由于仿真器的局限性,芯片復(fù)位的時候不建議用仿真器來讀Reset_flag的值。建議使用UART將Reset_flag的值輸出。

下面以一段WDT復(fù)位的程序顯示一下,相關(guān)代碼如下:
#define DEBUG #include "gpio.h"
int main(){    int8_t RstData = 0;    if ( M0P_RESET->RESET_FLAG_f.POR15 || M0P_RESET->RESET_FLAG_f.POR5V )  //上電復(fù)位,清Reset_flag    {     M0P_RESET->RESET_FLAG = 0X00;    }    Clk_SetPeripheralGate(ClkPeripheralUart0, TRUE);          //開UART0外設(shè)時鐘    Clk_SetPeripheralGate(ClkPeripheralBt, TRUE);             //開定時器外設(shè)時鐘    Clk_SetPeripheralGate(ClkPeripheralGpio, TRUE);           //開GPIO外設(shè)時鐘    RstData = (int8_t)M0P_RESET->RESET_FLAG ;                 #ifdef DEBUG  Debug_UartInit();                                           //調(diào)試串口初始化#endif  #ifdef DEBUG  printf("The RESET_FLAG is %x \n",RstData);                  //輸出調(diào)試內(nèi)容#endif      M0P_RESET->RESET_FLAG = 0X00;                             //清Reset_flag    M0P_CLOCK->PERI_CLKEN_f.WDT = 0X01;                       //打開WDT時鐘    M0P_WDT->CON_f.WOV = 0X0A;                                //定時1.64s    M0P_WDT->CON_f.WINT_EN =    0X00;                         //WDT溢出復(fù)位    M0P_WDT->RST = 0x1E;                                      //啟動WDT    M0P_WDT->RST = 0xE1;  while(1)  {     __enable_irq();   ;  }}







歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1