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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

STM32 进阶教程 11 - RAM中运行程序

發布時間:2025/4/5 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32 进阶教程 11 - RAM中运行程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

上一講我們講到stm32可以將代碼直接下載到RAM中時行程序調試,同時可以有效避開STM32 Flash 擦寫次數有限問題,其實除了仿真調試時將程序設置在RAM中可以解決FLASH擦寫次數問題外,如果程序實際運行時能直接在RAM中運行,其代碼的運行效率也會有一定的提高,那么怎么實現實際運行時讓程序在RAM中運行呢,本節將帶領大家來實現這一操作。

示例詳解

基于硬件平臺: STM32F10C8T6最小系統板, MCU 的型號是?STM32F103c8t6, 使用stm32cubemx 工具自動產生的配置工程,使用KEIL5編譯代碼。

?

?

本示例所用的最小系統板原理圖:

?

  • 關于CUBEMX工具及KEIL工具的操作將不再細講,如果還有不熟悉的可以查看之前的教程文檔。下面直接介紹工程配置:
  • 系統時鐘樹
  • 定時器配置
  • 引腳配置
  • 中斷配置(保持默認)
  • ?

    ?

  • 工程代碼
  • ?

  • 使用KEIL時需要將部分或者全部程序放到RAM中運行,實現方法有多種:
  • ?

    方法一:通過#pragma arm section code = “RAMCODE ”和#pragma arm section。這種方式,可以同時將多個函數放到指定的section。具體方法如下:

    ?

    1. 修改.sct文件,自定義一個叫做RAMCODE的section,放在RW_IRAM1執行區域,地址范圍0x20000000~0x20005000。

    ; *************************************************************

    ; *** Scatter-Loading Description File generated by uVision ***

    ; *************************************************************

    LR_IROM1 0x08000000 0x00010000 ?{ ? ?; load region size_region

    ? ER_IROM1 0x08000000 0x00010000 ?{ ?; load address = execution address

    ? ?*.o (RESET, +First)

    ? ?*(InRoot$$Sections)

    ? ? .ANY (+RO)

    ?? .ANY (+XO)

    ? }

    ? RW_IRAM1 0x20000000 0x00005000 ?{ ?; RW data

    ? *.o(RAMCODE)

    ? ?.ANY (+RW +ZI)

    ? }

    }

    ?

    2. 在工程中使用前面修改的.sct文件

    3.#pragma arm section code = “RAMCODE” 開頭,以#pragma arm section結尾。將所有需要放到RAMCODE section的函數包括進來。編譯時,編譯器會自動將這些函數放到RAMCODE所在0x20000000開始的區域。?

    ?

    4.從map文件里,可以看到這幾個函數都已經被放到了SRAM中。

    ?

    方法二:通過__attribute__((section(“name ”)))

    在KEIL中可以通過__attribute__((at(address)))的方式將變量放到指定的位置。通過__attribute__((section(“name ”)))的方式將變量或者函數放到指定的位置。

    ?

    1.同樣,我們需要修改.sct文件,自定義一個叫做RAMCODE的section,并在工程選項的linker頁面中,選擇定義好的.sct文件。

    ?

    2.在需要放到RAM中的函數前,用__attribute__((section("RAMCODE")))聲明該函數放在RAMCODE section中。注意,該函數中調用到的所有函數也要放到RAMCODE section中。

    3.從編譯后的map文件可以看出,ToggleLED以及它調用到的所有函數都被到了RAM中。

    方法二可以覆蓋方法一,也就是說如果你同時用方法一和方法二對同一個函數的執行區域做了說明。最終起作用的是方法二如:

    其實際結果為:

    ?

    前面我們介紹了將一個或多個程序放到指定地址執行的方法。如果需要放到指定地址的程序比較多,我們還可以將這些需要放到指定地址的程序集中放到一個或幾個C文件中,然后在.sct文件中將這些C文件生成的目標文件放到指定地址。在這里,我們將嘗試將整個程序放到SRAM中執行。復位后程序從FLASH啟動,之后將從SRAM執行所有的程序。下面是具體的步驟:

    ?

    1.將中斷向量表和中斷處理程序放到SRAM中,新建一個startup_stm32f103xb_ram.s文件并將其放在0x20000000處(在SCT文件中修改),其內容為,:

    ?

    ?

    2,在后面的.sct中將把RESET_ram這個section放到SRAM開始的位置上,并將要放到SRAM中的程序模塊也加到SRAM中,如下圖:

    2.工程的Options for Target ->C/C++選項卡中加入VECT_TAB_SRAM宏定義:

    3. 編譯完成后,從map文件可以看到程序的運行地址是在SRAM區間:

    如量沒有將對應的程序模塊加載到SRAM中(SCT文件中沒加),則是下面的情況:

    ?

  • 在main.c中加入如下圖所示代碼:
  • ?

  • 編譯工程無錯誤后,下載運行程序可以看到LED功能正常(500ms亮滅交替):
  • OK,本期實驗完成!下期見!同時如果大家有什么疑問或是有想了解的其它內容,也歡迎大家留言!!最后喜歡這個公眾號的同學們記得加關注了,會有不定期技術干貨推出!!

    文中源碼資料下載,在公眾號里給十三發消息:

    下載|STM32進階教程 11

    ?

    關注十三公眾號

    總結

    以上是生活随笔為你收集整理的STM32 进阶教程 11 - RAM中运行程序的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 一区二区在线精品 | 色片网站在线观看 | 亚洲精品第二页 | 亚洲综合视频一区 | 九久久久久 | 久久婷香| 黄色a网| 在线成人看片 | 国产aⅴ激情无码久久久无码 | av一道本| 粉嫩av在线播放 | 中文字幕免费 | 少妇高潮灌满白浆毛片免费看 | 国产视频一区二区三区在线播放 | 三级爱爱 | 人妻体内射精一区二区三区 | 日韩网站在线 | 天堂成人av | 国产不雅视频 | 久久99热这里只频精品6学生 | 成都免费高清电影 | 欧美一区二区三区粗大 | 免费草逼网站 | 午夜免费一区二区 | 人人爱人人射 | 天天干少妇 | 国产无遮挡又黄又爽又色 | 日本久久久久久久久久久 | 中文字幕亚洲视频 | 美女免费视频网站 | 天堂成人av | 国产精品久久久久久亚洲伦 | 热热热热色| 中文字幕在线观看精品 | 国产三级自拍 | 久久精品国产免费看久久精品 | 人妻换人妻a片爽麻豆 | 波多野结衣视频在线播放 | 二级毛片在线观看 | 久久中文字幕一区 | 欧美福利片在线观看 | 污污网站免费在线观看 | 久久伊人99| 欧美日韩xxxx | 久久久久久久免费 | 国内自拍2020 | 成人国产精品免费观看 | 黑人100部av解禁片 | 最新最近中文字幕 | 欧美一级性视频 | 97国产一区 | 最新国产中文字幕 | 国产不卡在线视频 | 台湾佬美性中文娱乐网 | 亚洲精品视频国产 | 欧美激情精品久久久久久蜜臀 | 成人福利一区二区 | 老司机精品视频在线 | 风流少妇 | 久久久亚洲成人 | 欧美精品久久久久久久免费 | 99性趣网| 伊人影院av| 丰满少妇高潮在线观看 | 中文字幕高清视频 | 少妇做爰k8经典 | 男人的天堂在线 | 欧洲a级片| 韩国av不卡 | 嫩草www | 一区二区啪啪 | 成人欧美一区二区三区黑人免费 | 波多野结衣中文字幕在线 | 激情欧美一区二区 | 操亚洲美女| 第一av在线| 亚洲123区 | 免费人成在线观看视频播放 | 日日噜噜噜噜久久久精品毛片 | 一本色道久久综合狠狠躁的推荐 | 在线免费福利视频 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 亚洲自拍天堂 | 大象传媒成人在线观看 | 2019狠狠干| 国产精品美女一区二区三区 | 国产精品一亚洲av日韩av欧 | 国产精品三级在线观看无码 | 华人在线视频 | 深夜网站在线观看 | 奇米狠狠去啦 | 一级黄色片在线播放 | 亚洲图片偷拍区 | 欧美成人午夜电影 | 男人操女人的软件 | 国产三级三级在线观看 | 久久久久久久久久久久久女过产乱 | 欧美30p| 亚洲五月天综合 |