<strong id="0toem"><dl id="0toem"></dl></strong><b id="0toem"><menuitem id="0toem"></menuitem></b>

      <b id="0toem"><menuitem id="0toem"></menuitem></b>
    1. <code id="0toem"><abbr id="0toem"></abbr></code>
      <strong id="0toem"><dl id="0toem"></dl></strong>
      <kbd id="0toem"></kbd>
              1. <code id="0toem"></code>
                <th id="0toem"><progress id="0toem"></progress></th><strong id="0toem"><form id="0toem"></form></strong>

                <th id="0toem"></th>
              2. 131 1300 0010
                其他
                當(dāng)前位置: 首頁>> 元件技術(shù)>>其他>>
              3. 導(dǎo)航欄目
              4. 二極管
              5. 整流橋
              6. MOS管
              7. 其他
              8. msp430單片機(jī)程序升級(jí)的方法有哪些
                msp430單片機(jī)程序升級(jí)的方法有哪些
              9. msp430單片機(jī)程序升級(jí)的方法有哪些
              10.   發(fā)布日期: 2019-06-04  瀏覽次數(shù): 1,645

                最近在搞430的FLASH的自定義法(利用串口)程序燒寫,燒寫完成后斷電復(fù)位,reset按鍵就可以運(yùn)行新的程序。但是和學(xué)長(zhǎng)交流了一下,這種方法不夠好,希望有一種軟復(fù)位的方式。于是百度了一下,都是些對(duì)看門狗進(jìn)行寫入特殊值使得430的cpu復(fù)位。反正個(gè)人是沒有采用。


                msp430單片機(jī)程序升級(jí)的方法有哪些

                 

                因?yàn)樵诟愠绦虻臒龑懴螺d,所以看了一下430的BSL。看到里面有一段話,關(guān)于從C代碼中啟動(dòng)BSL的方法。如下:

                從一個(gè)外部應(yīng)用中啟動(dòng)BSL

                將程序計(jì)數(shù)器設(shè)定到內(nèi)存為位置0x1000 來啟動(dòng)BSL。堆棧一直被復(fù)位,而RAM 被清空。應(yīng)該注意的是,GIE 位未被禁用,所以如果不需要中斷的話,這一步應(yīng)該通過調(diào)用應(yīng)用來完成,并且如果它們被使用的話,這一步應(yīng)該從“返回BSL”返回。

                由于堆棧被復(fù)位,位置0x1000 也可以被作為一個(gè)C 功能進(jìn)行調(diào)用,示例代碼如下:

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

                于是想到,既然可以從C里面跳轉(zhuǎn)到0x1000,那么也可以跳轉(zhuǎn)到其他地址,比如復(fù)位地址了。

                以6638為例。430的復(fù)位中斷矢量地址是0xFFFE,里面存儲(chǔ)了將要跳轉(zhuǎn)的物理地址。6638的代碼區(qū)起始地址是0x8000,正常復(fù)位是先進(jìn)入復(fù)位中斷,然后PC指針導(dǎo)入地址0x8000,然后從0x8000開始執(zhí)行代碼。那么軟復(fù)位則是,執(zhí)行((void (*)())0x8000)(),直接PC指針被導(dǎo)入0x8000的地址,而這個(gè)地址正好是6638的代碼區(qū)起始地址,于是軟復(fù)位了。個(gè)人分析一下這個(gè)指令,如有錯(cuò)誤敬請(qǐng)大神們指正。

                從代碼上講,(void (*)()是一個(gè)指向空函數(shù)的指針,((void (*)())0x8000)()是將0x8000強(qiáng)制轉(zhuǎn)換為函數(shù)指針后進(jìn)行函數(shù)調(diào)用,于是0x8000便被送入了PC指針。

                對(duì)于其他的430單片,去查其數(shù)據(jù)手冊(cè)FLASH段,弄清其代碼區(qū)的開始地址,也可以用這個(gè)方法軟復(fù)位了。

                實(shí)測(cè),IAR,CCS下編譯、實(shí)踐通過。


              11. ·上一篇:
                ·下一篇:
              12. 其他關(guān)聯(lián)資訊
                深圳市日月辰科技有限公司
                地址:深圳市寶安區(qū)松崗鎮(zhèn)潭頭第二工業(yè)城A區(qū)27棟3樓
                電話:0755-2955 6626
                傳真:0755-2978 1585
                手機(jī):131 1300 0010
                郵箱:[email protected]

                深圳市日月辰科技有限公司 版權(quán)所有:Copyright?2010-2023 www.xydibang.com 電話:13113000010 粵ICP備2021111333號(hào)
                <strong id="0toem"><dl id="0toem"></dl></strong><b id="0toem"><menuitem id="0toem"></menuitem></b>

                    <b id="0toem"><menuitem id="0toem"></menuitem></b>
                  1. <code id="0toem"><abbr id="0toem"></abbr></code>
                    <strong id="0toem"><dl id="0toem"></dl></strong>
                    <kbd id="0toem"></kbd>
                            1. <code id="0toem"></code>
                              <th id="0toem"><progress id="0toem"></progress></th><strong id="0toem"><form id="0toem"></form></strong>

                              <th id="0toem"></th>
                            2. 亚洲免费黄色片 | 操逼内射 | 日日干夜夜爽 | 男热天堂| 天天干天天久 |