国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

STM32 IAP功能實現學習筆記

發布時間:2016-10-20 15:35    發布者:designapp
關鍵詞: STM32 , IAP
  最早接觸STM32的時候就了解到,stm32有IAP功能,但是一直沒有用到,最近公司項目中用到了,我才詳細的學習了這個功能,學完之后感覺這個功能很好用,也很實用,特此寫下來,做個筆記,同時也希望能幫助到所有的熱愛單片機的人。
  直奔主題把,最初我做了一個小實驗,具體內容是:
  1.寫兩個小程序,編譯完畢生成兩個bin文件
  2.用stm官方提供的flashloader 下載到單片機內,不過這里需要注意的是第二個bin文件的下載地址需要更改,具體怎么改后面介紹
  3.通過某種觸發方式,讓單片機在兩個程序之間來回切換
  上面是我實驗的內容,在做這個小實驗的前提是你必須知道怎么在兩個程序之間跳轉,其次你也必須知道bin文件的生成,以及生成之前工程選項的設置,最后肯定是怎么下載到單片機內。
  一、跳轉代碼的實現
  從官方網站上下載了IAP例子,從中摘取了一下代碼用在項目中,其他的沒有用,只需核心部分。
  if (((*(volatile uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
  {
  JumpAddress = *(volatile uint32_t*)(ApplicationAddress + 4);
  Jump_To_Application = (pFunction)JumpAddress;
  __set_MSP(*(volatile uint32_t*)ApplicationAddress); //初始化用戶程序的堆棧指針
  Jump_To_Application();
  }
  ApplicationAddress 是你要跳轉的那個代碼存放的首地址,我代碼里是
  #define ApplicationAddress1 0x08008000 //應用程序起始地址
  JumpAddress = *(volatile uint32_t*)(ApplicationAddress + 4); 這句話的意思執行的結果是,打開bin文件偏移四個字節后的一個uint32數據,具體是為什么取這個數,對bin文件感興趣的朋友可以自己研究一下。如果你這段代碼實在不理解,不過沒關系,你只需要添加進去就行了,呵呵
  0x08000000 -----------------------------------------
  |
  | 程序1
  |
  |
  0x08008000 -----------------------------------------
  |
  |
  | 程序2
  |
  |
  -----------------------------------------
  程序1和我們普通的代碼一樣不需要設置中斷偏移量,工程選項也不需要設置,程序2需要設置,設置流程如下:

  將里面原來的數據0x8000000改為0x8008000,不一定非要是這個,我只是害怕小了重疊,官網給的是 0x8004000,
  同時在你的代碼里加上中斷偏移設置為0x8000
  #ifdef VECT_TAB_RAM
  // Set the Vector Table base location at 0x20000000
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
  #else /* VECT_TAB_FLASH */
  // Set the Vector Table base location at 0x08000000
  //NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x8000);
  #endif
  二、bin文件的生成
  


  填入的內容和你工程路徑有關系,我的是:
  fromelf --bin --output E:\STM32_IAP\2\Project\output\Proj1.bin E:\STM32_IAP\2\Project\output\Proj1.axf
  當然了,兩個代碼,肯定路徑也是不一樣,調試的時候發現 這個axf文件名和bin文件名必須和下面圖片中的名字一直,否則生成bin文件錯誤

  如果編譯完畢顯示如下信息,說明你的bin文件生成正確了,
  


  三、bin文件的下載過程
  


  點擊下一步 next,直到出現下面界面
  


  先擦出一下整個芯片,然后載入代碼1對應的bin文件,
  


  注意看地址,第一個代碼設置的為 8000000,第二個為你代碼中的地址,我的為8008000,第二個代碼下載截圖如下,
  


  代碼可以到我csdn帳號中下載,免費的,連接為http://download.csdn.net/detail/likang123321/5318910
  通過上面的介紹,相信離遠程更新已經不遠了,大家根據具體情況可以具體應用,
  當你下載連個代碼到單片機內后,上電運行的是第一個,此時你發送0xaa到串口,代碼會跳轉到代碼2,繼續發送0xaa單片機會回到代碼1執行,我感覺很有趣,希望本文能夠讓更多i的電子愛好者了解IAP,謝謝閱讀,有什么不足之處,請廣大大神提出寶貴的意見,共同學習中……
本文地址:http://m.qingdxww.cn/thread-176532-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 利用SAM E54 Xplained Pro評估工具包演示CAN轉USB橋接器以及基于CAN的主機和自舉程序應用程序
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产性大片免费播放网站 | 日韩欧美一区二区久久 | 国产精品亚洲欧美一级久久精品 | 香蕉久久久久 | 四虎影视永久地址www成人污 | 两个人在线观看免费下载 | 正在播放国产无套露脸 | 日韩黄色免费 | 亚洲国产欧美在线不卡中文 | 狠狠色丁香九九婷婷综合五月 | 男女视频在线播放 | 亚洲手机在线手机观看高清hd | 国产大片线上免费看 | 久久婷婷色香五月综合激情 | 久久国产精品免费一区二区三区 | 插菊花网站 | 成在线人免费视频一区二区三区 | 日韩一级伦理片 | 四虎免费永久网站入口 | 又色又爽又黄的视频网站 | 一区二区视频在线观看 | 欧美女人天堂 | 在线观看麻豆国产精品 | 国产精品日韩欧美在线第3页 | 欧美特黄一区二区三区 | 花季传媒v3.086下载 | 色综合久久久久久 | 爱爱永久免费视频网站 | 一区二区三区国产 | 日韩成人性视频 | 一二三四社区在线视频社区3 | 杰罗德游戏在线观看完整版免费 | 香蕉精品视频在线观看入口 | 亚洲一区二区高清 | 国产成人亚洲毛片 | 日本免费一区二区三区中文 | 国产三级在线观看免费 | 精品国产香蕉伊思人在线 | 亚洲免费视频网 | 亚洲欧美一区二区三区图片 | 国产精品免费观看视频播放 |