卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

如何使用DSP28335的看門狗模塊進(jìn)行程序重啟

在DSP28335的嵌入式應(yīng)用中,有時會遇到程序跑飛需要重啟的情況。為了解決這個問題,我們可以利用DSP28335的看門狗模塊進(jìn)行程序的重啟。1. 配置看門狗寄存器看門狗的寄存器模塊如下圖所示,我們需

在DSP28335的嵌入式應(yīng)用中,有時會遇到程序跑飛需要重啟的情況。為了解決這個問題,我們可以利用DSP28335的看門狗模塊進(jìn)行程序的重啟。

1. 配置看門狗寄存器

看門狗的寄存器模塊如下圖所示,我們需要進(jìn)行相應(yīng)的寄存器配置,以確保程序重啟時觸發(fā)WDRST信號。通過設(shè)置WDKEY寄存器的值為0x55和0xAA,可以使看門狗定時器計(jì)數(shù)清零,并開始重新計(jì)時。

2. 重啟程序

當(dāng)看門狗定時器觸發(fā)時,我們可以選擇進(jìn)行程序的重啟而不是中斷。下面是一段代碼示例,用于在看門狗定時器觸發(fā)時重啟程序。為了方便觀察,在主程序main中,我們將GPIO0設(shè)置為高電平,并在一個for循環(huán)中將其設(shè)置為低電平。同時,在for循環(huán)中,我們使用一個全局變量進(jìn)行累加操作。以下是示例代碼:

```c

void main(void)

{

// GPIO0設(shè)置為高電平

for(;;)

{

// GPIO0設(shè)置為低電平

// 進(jìn)行其他操作

// 全局變量累加

if(WDKEY 0xAAAA)

{

WDRST 0x0000; // 看門狗重啟

}

}

}

```

3. 配置調(diào)試環(huán)境

如果要對看門狗的重啟程序進(jìn)行調(diào)試,需要將代碼下載到Flash中運(yùn)行。因此,我們需要進(jìn)行相關(guān)的配置,比如采用F708375pxd文件、添加Memcopy函數(shù)和InitFlash函數(shù)等。

4. 喂狗過程調(diào)試

以下是在“喂狗”時設(shè)置斷點(diǎn)的代碼示例。我們可以觀察程序的運(yùn)行狀態(tài),并通過示波器檢查GPIO0的電平??梢钥吹?,程序并沒有返回到斷點(diǎn)處,同時循環(huán)計(jì)數(shù)LoopCount在不斷累加。

5. 取消喂狗過程調(diào)試

以下是取消“喂狗”時設(shè)置斷點(diǎn)的代碼示例。我們可以觀察程序的運(yùn)行狀態(tài),并注意到程序總是返回到斷點(diǎn)處。此外,循環(huán)計(jì)數(shù)LoopCount沒有持續(xù)累加,而是在達(dá)到一定值后又從零開始。同時,示波器檢查GPIO0的電平也不再持續(xù)低電平,說明程序在取消“喂狗”后進(jìn)行了重啟操作。

通過以上步驟,我們可以利用DSP28335的看門狗模塊實(shí)現(xiàn)程序的重啟。這種方法對于解決程序跑飛導(dǎo)致系統(tǒng)崩潰的問題非常有效。

標(biāo)簽: