新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM32F103系列微控制器在應(yīng)用編程技術(shù)研究

        STM32F103系列微控制器在應(yīng)用編程技術(shù)研究

        作者: 時間:2013-10-29 來源:網(wǎng)絡(luò) 收藏
        2 軟件完成的IAP方案
        該方案是在主程序前添加一個簡單的Bootloader程序,用該程序來判斷是否進(jìn)行軟件更新。Bootloader程序的主要編程思路如圖4所示。

        d.JPG


        該方案的原理是:芯片啟動時將從FLASH的0x8000000地址開始執(zhí)行程序,Bootloader程序也要寫在地址0x8000000處,在Boot loader程序中通過判斷標(biāo)志位的值來判斷是否直接進(jìn)入主函數(shù),判斷標(biāo)志位的值存放在的FLASH中避免標(biāo)志位丟失。主程序的位置在Bootloader程序所占用的地址空間之后,具體地址要由Bootloader程序的大小來決定。
        更新主程序的過程就是將以前的主程序覆蓋掉。Bootloader程序、主程序以及更新標(biāo)志位的地址位置及加入Bootloader程序后,主程序的中斷工作過程如圖5所示。

        e.JPG


        Bootloader程序被放在芯片啟動后讀取的第一個地址0x8000000上,依次按照地址排下來是Bootloader的中斷向量表、Bootloader的主程序。在IAP主程序之后0x8000000+X處放置更新標(biāo)志位temp。在更新標(biāo)志位后0x8000000+X+M處地址開始主程序。
        主程序的中斷響應(yīng)過程為:中斷發(fā)出中斷請求,中斷請求根據(jù)的硬件機制會到0x8000000后的中斷向量表進(jìn)行中斷的響應(yīng),但主程序有自己的中斷向量表,所以在主程序的main()函數(shù)開始時要偏移中斷向量表,使中斷響應(yīng)時按照主程序的中斷向量表進(jìn)行。
        由上述分析可以得出編寫主程序的三個注意事項:
        首先,在主程序編譯前需要先將程序的啟動地址設(shè)置為Bootloader寫入的地址,例如在RVMDK軟件中設(shè)置芯片的啟動地址為0x8000000,但主程序?qū)懺?x8004000的位置,所以需要將主程序的啟動地址改為0x8004000。
        其次,就是在main()函數(shù)中設(shè)置偏移中斷向量表,如下面的程序所示,在主程序開始時偏移中斷向量表。
        f.JPG
        最后,使用IAP下載的更新程序的格式最好為.bin文件,但不能是.hex文件,可以使用fromelf這一類的工具將.hex格式文件轉(zhuǎn)換為.bin文件。

        3 藍(lán)牙串口模塊完成的無線IAP方案
        該方案主要由圖6所示的幾個部分組成,STM32F103的其中一個串口與藍(lán)牙串口模塊相連接。藍(lán)牙串口模塊支持SPP藍(lán)牙串口通信協(xié)議,即使用藍(lán)牙替代串口線,通過無線的方式進(jìn)行串口通信。上位機是一臺PC機,負(fù)責(zé)給嵌入式產(chǎn)品下載更新軟件,PC機需要通過一個藍(lán)牙適配器與嵌入式產(chǎn)品的藍(lán)牙串口模塊進(jìn)行藍(lán)牙數(shù)據(jù)傳輸。

        g.JPG



        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 民和| 阿克苏市| 天长市| 车致| 阿巴嘎旗| 德州市| 右玉县| 南和县| 珠海市| 平陆县| 长寿区| 阿拉善右旗| 弥勒县| 黑龙江省| 公主岭市| 沁阳市| 伽师县| 周至县| 河源市| 蓬安县| 繁昌县| 宜黄县| 哈尔滨市| 泉州市| 拜泉县| 兴和县| 阿合奇县| 旅游| 桂平市| 博湖县| 庆阳市| 民县| 公主岭市| 达日县| 岳阳县| 南通市| 佛冈县| 交口县| 常宁市| 德令哈市| 永嘉县|