1、
問題:stm32 睡眠模式預設debug埠不開啟,設定dbgmcu_standby可以開啟。因此我們可以在程式開始時設定dbgmcu.問題:在除錯模式下,核心被偵錯程式停止時,相關外設是否同時停止. 比如定時器輸出,如果是連線了電機什麼的時候,除錯到某個地方斷點了,預設定時器會繼續跑,這時電機電流可能會失控燒電路,設定了對應的位後,定時器會停止,輸出會固定在ccmr設定的電平. 對於序列通訊,核心停止並且設定了對應的位,資料就有可能發了一半停下來,等核心跑了再繼續發,這樣資料時序就不對了,但這種情況對於分析核心與資料間的時序是有幫助的.
dbgmcu_config(dbgmcu_standby,enable);
stm32f10x_dbgmcu.c 庫函式:
void dbgmcu_config(u32 dbgmcu_periph, functionalstate newstate)
else
}
2、
/*****====關閉jtag-dp,啟用sw-dp,swj_cfg[2:0]=010**********=/
#if(system_run_in_debug==gal_yes)
rcc_apb2periphclockcmd(rcc_apb2periph_afio,enable);
gpio_pinremapconfig(gpio_remap_swj_jtagdisable,enable);
#else
rcc_apb2periphclockcmd(rcc_apb2periph_afio,enable);
gpio_pinremapconfig(gpio_remap_swj_disable,enable);
#endif
3、pwr包括功耗管理和低功耗模式選擇。(電源管理也是必不可少的)
void wkup_init(functionalstate nen)
4、看門狗是防止程式跑飛
void clearwatchdog(void)
5、低功耗處理i/o口
void initialioinlowcost(void)
else
}
/掉電檢測
uchar ifpowerdown(void)
if(ucdata<4)
return 0;
// if(1==getpowersupplystatus())
//
// return 1;
}
#define getpowersupplystatus() (gpio_readinputdatabit(in_pechk_port,in_pechk_pin))
判斷後初始化函式:
uchar runcputodifferentpowermode(uchar mode)
uchar runcputodifferentpowermode(uchar mode)
}
initializevariable
uchar initializevariable(uchar mode)
}
嵌入式系統初始化過程
系統初始化過程可以分為 3 個主要環節,按照自底向上 從硬體到軟體的次序依次為 片級初始化 板 級初始化和系統級初始化。1.片級初始化 完成嵌入式微處理器的初始化,包括設定嵌入式微處理器的核心暫存器和控制暫存器 嵌入式微處理器核心工作模式和嵌入式微處理器的區域性匯流排模式等。片級初始化把嵌入式微處理...
嵌入式Linux系統初始化的過程
通過busybox製作的根檔案系統的啟動過程可以總結如下 一 核心首先啟動第乙個指令碼檔案 linuxrc。二 然後執行 sbin init這個系統程序,這個程序是核心的第乙個程序,區別第一步的第 乙個腳步檔案linuxrc。執行init程序時依次執行以下步驟 1 為init設定訊號處理程序 2 初...
嵌入式Linux系統初始化的過程
通過busybox製作的根檔案系統的啟動過程可以總結如下 一 核心首先啟動第乙個指令碼檔案 linuxrc。二 然後執行 sbin init這個系統程序,這個程序是核心的第乙個程序,區別第一步的第 乙個腳步檔案linuxrc。執行init程序時依次執行以下步驟 1 為init設定訊號處理程序 2 初...