430軟復位方法

2021-07-28 11:48:46 字數 804 閱讀 6454

3.7.1 從乙個外部應用中啟動bsl

將程式計數器設定到記憶體為位置0x1000 來啟動bsl。堆疊一直被復位,而ram 被清空。應該注意的

是,gie 位未被禁用,所以如果不需要中斷的話,這一步應該通過呼叫應用來完成,並且如果它們被使用的

話,這一步應該從「返回bsl」返回。

由於堆疊被復位,位置0x1000 也可以被作為乙個c 功能進行呼叫,示例**如下:

((void (*)())0x1000)()

於是想到,既然可以從c裡面跳轉到0x1000,那麼也可以跳轉到其他位址,比如復位位址了。

以6638為例。430的復位中斷向量位址是0xfffe,裡面儲存了將要跳轉的實體地址。6638的**區起始位址是0x8000,正常復位是先進入復位中斷,然後pc指標匯入位址0x8000,然後從0x8000開始執行**。那麼軟復位則是,執行((void (*)())0x8000)(),直接pc指標被匯入0x8000的位址,而這個位址正好是6638的**區起始位址,於是軟復位了。個人分析一下這個指令,如有錯誤敬請大神們指正。

從**上講,(void (*)()是乙個指向空函式的指標,((void (*)())0x8000)()是將0x8000強制轉換為函式指標後進行函式呼叫,於是0x8000便被送入了pc指標。

對於其他的430單片,去查其資料手冊flash段,弄清其**區的開始位址,也可以用這個方法軟復位了。

實測,iar,ccs下編譯、實踐通過。

最後,查了一下,對於計算機系的這個方法可能是常識了,但是對於搞微控制器、嵌入式的大多還不知曉,個人就寫出來,大家交流交流。已經知道這個方法的高手們,就一笑而過吧!

原文:

430的復位及復位電路

msp430使用了兩個分離的復位訊號,乙個用作軟體復位 上電清除 另乙個就用作硬體復位 上電復位 訊號。硬體復位也就是por power on reset 軟體復位標識為puc power up clear 下面我們給出一般的兩種復位訊號的 por訊號在下面兩種事件發生時才會產生 當por訊號產生時...

MSP430教程8 MSP430微控制器復位電路

msp430 微控制器系統復位電路 從上msp430 系統復位電路功能模組圖中可以看到了兩個復位訊號,乙個是上電復位訊號 por power on reset 和上電清除訊號 puc power up clear por 訊號是器件的復位訊號,此訊號只有在以下的事件發生時才會產生 器件上電時。rst...

MSP430常見問題之復位系統類

q2上電復位和硬體看門狗復位有什麼區別嗎,在程式裡將兩者分開,請問有辦法將兩者分開嗎?a2 上電復位時,記憶體被清零或為任意值,看門狗清零時並沒有斷電,記憶體裡的原有資訊被保留,同時上電復位無法通過標誌位來判別,看門狗復位才可以通過wdtifg 來判別。同時注意reset 之後 1 判斷有無復位標誌...