日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stm32 bootloader跳转

發布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stm32 bootloader跳转 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

stm32執行完loader程序后如何跳轉到應用程序呢,一共有四件事要做:

第一,關閉外設中斷,關閉外設時鐘,失能外設功能,如果不關閉,跳轉到app區后會產生各種奇怪的問題

第二,重設中斷向量表位置,設置在app程序的起始地址

根據stm32中斷向量表的定義,表的地址就是可執行程序的起始地址,設置好后方便應用程序進入中斷后可以找到對應的中斷程序入口

第三,重設堆棧指針,設置在app程序的起始地址,application_addr + 0x00000000

stm32復位后的第一件事就是取堆棧地址,此處跳轉也是一樣,第一件事就是取得堆棧地址,想想ucos中切到新任務第一件事不也是找到堆棧地址嗎

第四,取出app程序的main函數地址,application_addr + 0x00000004

stm32復位后的第二件事就是找到復位地址,然后從里面取得main函數的地址,根據stm32中斷向量表的定義,復位地址的偏移量是0x04,緊挨著堆棧棧頂地址,因此需要取得application_addr + 0x00000004地址處的內容,然后執行
?

  • typedf void(*pfunc)(void);

  • ?
  • ((pfunc)(*(uint32_t*)(application_addr + 0x00000004)))();

  • ?

    總結

    以上是生活随笔為你收集整理的stm32 bootloader跳转的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。