在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM8 IAR中斷向量表重映射

            STM8 IAR中斷向量表重映射

            作者: 時間:2016-11-11 來源:網(wǎng)絡 收藏
            分享STM8 IAP方法
            A:BOOT 項目里操作:
            1.把BOOT程序跟應用程序分兩個項目編寫
            2.在BOOT程序里最重要的是中斷向量表重定向,icf文件就不用設置了(BOOT里不能開中斷)
            中斷向量表重定向設置方法代碼如下:
            __root const long reintvec[]@".intvec"=
            { 0x82008080,0x82009004,0x82009008,0x8200900c, //當應用程序地址不是0x9000時則要相應改掉除第一個0x82008080以外的數(shù)值
            0x82009010,0x82009014,0x82009018,0x8200901c,
            0x82009020,0x82009024,0x82009028,0x8200902c,
            0x82009030,0x82009034,0x82009038,0x8200903c,
            0x82009040,0x82009044,0x82009048,0x8200904c,
            0x82009050,0x82009054,0x82009058,0x8200905c,
            0x82009060,0x82009064,0x82009068,0x8200906c,
            0x82009070,0x82009074,0x82009078,0x8200907c,
            };
            3.然后BOOT程序的跟一般程序一樣編寫通信協(xié)議及FLASH操作代碼就行了,還有一點要記住,BOOT程序里不要開中斷哦!
            這種方法缺點就是會浪費約128個字節(jié)的FLASH空間,如果有高手能把這些空間省下來,請指點哦!
            B:應用程序項目里操作:
            在應用程序項目里必須在icf文件修改,修改如下:
            把下面三行
            define region NearFuncCode = [from 0x8000 to 0xFFFF];
            define region FarFuncCode = [from 0x8000 to 0xFFFF];
            define region HugeFuncCode = [from 0x8000 to 0xFFFF];
            改為
            define region NearFuncCode = [from 0x9000 to 0xFFFF];
            define region FarFuncCode = [from 0x9000 to 0xFFFF];
            define region HugeFuncCode = [from 0x9000 to 0xFFFF];
            就可以了,應用程序就可以開中斷了,IAP就是這么簡單吧!
            當然我這里是用0x9000地址作為應用程序區(qū)的首地址,至于各位BOOT大小是多小就按不同的數(shù)值設置
            但是必須記得在BOOT的中斷向量重定向表也必須要相應修改哦!
            解析下BOOT重定向表內(nèi)的0x82008080為什么是這個數(shù)值:因為重定向表跟中斷表重疊了,編譯器就先分配重定向表,在接著的地址0x008080處,
            再分配一份中斷向量表,所以其實是兩份中斷向量表,所以BOOT重定向表內(nèi)的0x82008080就是為了要跳到真正的BOOT程序入口,
            因為在0x8080處才是真正跳轉(zhuǎn)到__iar_program_start入口。


            關(guān)鍵詞: STM8IAR中斷向量表重映

            評論


            技術(shù)專區(qū)

            關(guān)閉