色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

          STM32F103系列微控制器在應用編程技術研究

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

          d.JPG


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

          e.JPG


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

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

          g.JPG



          評論


          相關推薦

          技術專區(qū)

          關閉