新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32由boot跳轉到應用程序地址

        STM32由boot跳轉到應用程序地址

        作者: 時間:2016-11-24 來源:網絡 收藏
        1、keil c應用程序工程中設置IROM1 的起始地址和程序空間的大小。

        2、boot中,定義目標地址及函數指針類型:

        #define ApplicationAddress 0x08001000
        typedef void (*pFunction)(void);

        pFunction Jump_To_Application;
        u32 JumpAddress;

        3、boot中,完成以下任務:

        a)、NVIC_SETFAULTMASK(); //關總中斷

        b)、 JumpAddress = *(volatile u32*) (ApplicationAddress + 4); // 取中斷向量表中的復位中斷地址
        c)、Jump_To_Application = (pFunction) JumpAddress; // 該地址強置為跳轉函數地址
        d)、Jump_To_Application();

        4、應用程序中:

        NVIC_RESETFAULTMASK();//開放總中斷



        問題:1、為什么要使用 volatile?(經測試可以不用)

        2、為什么要+4? (此處保存的是中斷向量表的復位中斷地址

        本文引用地址:http://www.104case.com/article/201611/320967.htm

        void NVIC_SetVectorTable(uint32 NVIC_VectTab)
        {
        SCB->VTOR = NVIC_VectTab;
        }



        關鍵詞: STM32boot程序地

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 临猗县| 中江县| 谢通门县| 馆陶县| 麻江县| 石家庄市| 若羌县| 巴楚县| 汉川市| 枞阳县| 胶南市| 武宁县| 侯马市| 涪陵区| 喀喇沁旗| 金山区| 哈巴河县| 从江县| 乐清市| 汶上县| 钦州市| 通海县| 陆丰市| 华安县| 珲春市| 门源| 南漳县| 河曲县| 武鸣县| 淳安县| 吉木乃县| 铁岭县| 昭觉县| 广西| 黔南| 东阳市| 五台县| 龙井市| 周至县| 康马县| 叙永县|