色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

實(shí)戰(zhàn)經(jīng)驗(yàn) | Keil、IAR、CubeIDE 中變量不被初始化方法

STM32單片機(jī) ? 來(lái)源:未知 ? 2023-11-24 18:05 ? 次閱讀


關(guān)鍵詞:不被初始化,編譯環(huán)境


目錄預(yù)覽

1、前言

2、IAR 實(shí)現(xiàn)變量不初始化方法

3、Keil 實(shí)現(xiàn)變量不被初始化方法

4、CubeIDE 實(shí)現(xiàn)變量不初始化方法


01

前言


有些時(shí)候在我們的應(yīng)用過(guò)程中要求變量有連續(xù)性,或者現(xiàn)場(chǎng)保留,例如 Bootloader 跳轉(zhuǎn),某種原因的復(fù)位過(guò)程中我們有些關(guān)鍵變量不能被初始化,在不同的編譯環(huán)境下有不同的設(shè)置,本文就這個(gè)操作做總結(jié),分別介紹使用 Keil,IAR 和 CubeIDE 的操作方法,本文中所用芯片為STM32G431RBT6。


02

IAR 實(shí)現(xiàn)變量不初始化方法


IAR 實(shí)現(xiàn)相對(duì)簡(jiǎn)單,直接使用“__no_init”這個(gè)關(guān)鍵字即可,也就是在變量前面進(jìn)行修飾:



為了驗(yàn)證是否執(zhí)行成功,可以考慮周期性讓系統(tǒng)復(fù)位,看變量的變化,比如下面的示例程序讓系統(tǒng)周期復(fù)位,會(huì)發(fā)現(xiàn)每次 Test_NoInit 數(shù)據(jù)都是在上次數(shù)據(jù)基礎(chǔ)上增加 10,而不是被初始化后的數(shù)據(jù)增加 10。



03

Keil 實(shí)現(xiàn)變量不被初始化方法


Keil 中沒(méi)有像 IAR 里面的這個(gè)關(guān)鍵字,而且會(huì)有版本的區(qū)別,下面分別介紹:


圖1.Keil 不同編譯版本


為了防止未初始化的變量被初始化為 0,要將未初始化的變量放在一個(gè)特殊段內(nèi),這個(gè)段滿足是 ZI 數(shù)據(jù)段(.bss),它的執(zhí)行域(region)具有 UNINIT 屬性。


3.1. Arm Compiler 5 的操作


修改工程的 linker file 文件,*.sct 文件


圖2.修改默認(rèn) linker file


這邊將 RAM 劃分兩個(gè)區(qū)間,其中 RW_IRAM2 就是我們要的變量不初始化區(qū)域,屬性為UNINIT,定義一個(gè) region 名字 NO_INIT.



變量定義到這個(gè) section,這邊 AC5 要用到 zero_init 這個(gè)修飾。



3.2. Arm Compiler 6 的操作


在 AC6 上面需要加入.bss 這個(gè) ZI 定義,如下的 sct 文件修改:



變量定義到 section 部分,AC5 和 AC6 也是有區(qū)別的,不再支持 zero_init 這個(gè)修飾,如下定義:



對(duì)于版本 AC5 和 AC6 具體區(qū)別可以參考 Keil 幫助文件中的描述:


圖3.Keil 幫助文件關(guān)于 zero initialized


04

CubeIDE 實(shí)現(xiàn)變量不初始化方法


CubeIDE 的實(shí)現(xiàn)和 Keil 有類(lèi)似的操作,需要修改 linker file 文件*.ld。首先對(duì) RAM 進(jìn)行劃分,劃分出不初始化的 RAM 區(qū)域:


圖4.劃分 RAM 區(qū)域


增加區(qū)域描述,并且加入?yún)^(qū)域名字:


圖5.區(qū)域描述,名字定義



定義變量到這個(gè)不初始化區(qū)域中:



另外,還提醒一點(diǎn),有些 STM32 系列有專(zhuān)門(mén)針對(duì)特定 RAM 區(qū)復(fù)位后是否會(huì)被初始化的 Option 配置位。比方 STM32L4 系列,想讓 SRAM2 變量不被初始化,得配置選項(xiàng)字節(jié)中的 SRAM2_RST位。如下圖所示:



完整內(nèi)容請(qǐng)點(diǎn)擊“閱讀原文”下載原文檔。


原文標(biāo)題:實(shí)戰(zhàn)經(jīng)驗(yàn) | Keil、IAR、CubeIDE 中變量不被初始化方法

文章出處:【微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6050

    文章

    44705

    瀏覽量

    641310
  • STM32
    +關(guān)注

    關(guān)注

    2277

    文章

    10952

    瀏覽量

    359247

原文標(biāo)題:實(shí)戰(zhàn)經(jīng)驗(yàn) | Keil、IAR、CubeIDE 中變量不被初始化方法

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用jlink連接mcu查看日志,偶發(fā)重新初始化,部分線程未退出,變量錯(cuò)位怎么解決?

    使用jlink連接mcu查看日志,偶發(fā)重新初始化,部分線程未退出,變量錯(cuò)位。 串口1的線程是在main最后面。 未見(jiàn)初始化打印,就已經(jīng)發(fā)送數(shù)據(jù)了。并且發(fā)送的數(shù)據(jù)不對(duì)。感覺(jué)是重新初始化
    發(fā)表于 03-07 07:19

    EE-88:使用21xx編譯器在C初始化變量

    電子發(fā)燒友網(wǎng)站提供《EE-88:使用21xx編譯器在C初始化變量.pdf》資料免費(fèi)下載
    發(fā)表于 01-13 15:54 ?0次下載
    EE-88:使用21xx編譯器在C<b class='flag-5'>中</b><b class='flag-5'>初始化</b><b class='flag-5'>變量</b>

    提升開(kāi)關(guān)電源效率的理論分析與實(shí)戰(zhàn)經(jīng)驗(yàn)

    在這里有電源技術(shù)干貨、電源行業(yè)發(fā)展趨勢(shì)分析、最新電源產(chǎn)品介紹、眾多電源達(dá)人與您分享電源技術(shù)經(jīng)驗(yàn),關(guān)注我們,與中國(guó)電源行業(yè)共成長(zhǎng)! 提升開(kāi)關(guān)電源效率的理論分析與實(shí)戰(zhàn)經(jīng)驗(yàn) 引言 開(kāi)關(guān)電源設(shè)計(jì),為獲得
    的頭像 發(fā)表于 01-09 10:04 ?485次閱讀
    提升開(kāi)關(guān)電源效率的理論分析與<b class='flag-5'>實(shí)戰(zhàn)經(jīng)驗(yàn)</b>

    STM32F407 MCU使用SD NAND?不斷電初始化失效解決方案

    STM32F407微控制器單元(MCU)與SD NAND的結(jié)合提供了強(qiáng)大的存儲(chǔ)解決方案。然而,不斷電初始化失效問(wèn)題可能會(huì)導(dǎo)致系統(tǒng)穩(wěn)定性和數(shù)據(jù)完整性受損。我們將STM32F407與SD NAND集成時(shí)可能遇到的初始化問(wèn)題,并提供專(zhuān)業(yè)的解決方案。
    的頭像 發(fā)表于 12-11 10:51 ?560次閱讀
    STM32F407 MCU使用SD NAND?不斷電<b class='flag-5'>初始化</b>失效解決方案

    segger編譯器初始化問(wèn)題

    的圖; 2.第二張圖是該變量在文件的所有操作,第一行是初始化,該行代碼在初始化部分最后一個(gè),執(zhí)行完就是主循環(huán)了; 3.第2,3行也是對(duì)變量
    發(fā)表于 12-09 18:06

    基于旋轉(zhuǎn)平移解耦框架的視覺(jué)慣性初始化方法

    精確和魯棒的初始化對(duì)于視覺(jué)慣性里程計(jì)(VIO)至關(guān)重要,因?yàn)椴涣嫉?b class='flag-5'>初始化會(huì)嚴(yán)重降低姿態(tài)精度。
    的頭像 發(fā)表于 11-01 10:16 ?567次閱讀
    基于旋轉(zhuǎn)平移解耦框架的視覺(jué)慣性<b class='flag-5'>初始化</b><b class='flag-5'>方法</b>

    TMS320C6000 McBSP初始化

    電子發(fā)燒友網(wǎng)站提供《TMS320C6000 McBSP初始化.pdf》資料免費(fèi)下載
    發(fā)表于 10-26 10:10 ?0次下載
    TMS320C6000 McBSP<b class='flag-5'>初始化</b>

    視頻引擎初始化失敗怎么回事

    視頻引擎初始化失敗是一個(gè)常見(jiàn)的技術(shù)問(wèn)題,它可能由多種原因引起,包括軟件沖突、硬件問(wèn)題、驅(qū)動(dòng)程序問(wèn)題、系統(tǒng)設(shè)置錯(cuò)誤等。要解決這個(gè)問(wèn)題,需要對(duì)可能的原因進(jìn)行詳細(xì)的分析和診斷。 1. 軟件沖突 1.1
    的頭像 發(fā)表于 09-18 18:18 ?1919次閱讀

    Keil變量不被初始化方法

    有些時(shí)候在我們的應(yīng)用過(guò)程要求變量有連續(xù)性,或者現(xiàn)場(chǎng)保留,例如Bootloader跳轉(zhuǎn),某種原因的復(fù)位過(guò)程我們有些關(guān)鍵變量不能被初始化,在
    的頭像 發(fā)表于 08-30 11:47 ?963次閱讀
    <b class='flag-5'>Keil</b><b class='flag-5'>中</b><b class='flag-5'>變量</b><b class='flag-5'>不被</b><b class='flag-5'>初始化</b><b class='flag-5'>方法</b>

    瀚海微SD NAND應(yīng)用之SD協(xié)議存儲(chǔ)功能描述2 初始化命令

    初始化和識(shí)別過(guò)程: 總線激活后,主機(jī)啟動(dòng)卡初始化和識(shí)別過(guò)程。 初始化過(guò)程從SD SEND OP COND (ACMD41)開(kāi)始,通過(guò)設(shè)置其操作條件和OCR的HCS位。HCS (Ho
    的頭像 發(fā)表于 07-22 10:54 ?487次閱讀
    瀚海微SD NAND應(yīng)用之SD協(xié)議存儲(chǔ)功能描述2 <b class='flag-5'>初始化</b>命令

    初始化IO口為外部中斷線的時(shí)候,最先初始化的會(huì)被后初始化的覆蓋掉為什么?

    初始化IO口為外部中斷線的時(shí)候,比如GPIOA6與GPIOB6先后初始化為外部中斷,最先初始化的會(huì)被后初始化的覆蓋掉,不知道是為什么?
    發(fā)表于 05-14 08:26

    STM32CubeIDE+FreeRtos+LWIP初始化不通過(guò)怎么解決?

    MX_LAIP_Init就過(guò)不去。調(diào)試代碼,發(fā)現(xiàn)HAL_Delay();函數(shù)出現(xiàn)錯(cuò)誤。上網(wǎng)查了下,也有人碰到過(guò),重構(gòu)解決。然后還是過(guò)不去,調(diào)試發(fā)現(xiàn)創(chuàng)建任務(wù)時(shí)又出現(xiàn)了問(wèn)題,卡在添加新鏈表上,不知道原因。大家這么用的時(shí)候,有沒(méi)有碰到過(guò)類(lèi)似的問(wèn)題,或者初始化的應(yīng)該注意什么。
    發(fā)表于 04-15 07:42

    STM32F103RC變量初始化問(wèn)題求解

    Test0變量的值一直是0x03,并且無(wú)法被初始化其他值。 例如:ArryTest[7]的地址為0x20000200,Test0 的地址為0x2000020e,則Test0 的值無(wú)法被修改,一直為0x03. 有哪位朋友遇到過(guò)這樣的問(wèn)題沒(méi)有?
    發(fā)表于 04-10 07:35

    使用STM32CubeIDE初始化STM32407的SPI1(PB3)初始化失敗的原因?怎么解決?

    使用STM32CubeIDE初始化STM32407的SPI1(PB3)初始化失敗,有人知道原因嗎?
    發(fā)表于 03-25 07:50

    字符型、指針型等變量等該如何初始化

     對(duì)于數(shù)值類(lèi)型的變量往往初始化為0,但對(duì)于其他類(lèi)型的變量,如字符型、指針型等變量等該如何初始化呢?
    的頭像 發(fā)表于 03-18 11:02 ?1775次閱讀
    主站蜘蛛池模板: 亚洲日本欧美国产在线视 | 欧美尤物射精集锦 | 久久深夜视频 | 国产在线一区二区AV视频 | 国产AV天堂亚洲AV麻豆 | 美艳人妻在厨房翘着屁股 | 日本熟妇乱人伦A片精品软件 | 亚洲1卡二卡3卡4卡新区在线 | 出租屋自拍贵在真实15P | 又紧又大又爽精品一区二区 | 成年人视频在线免费看 | 琪琪热热色原日韩在线 | 视频成人app永久在线观看 | 99久久久无码国产精品不卡按摩 | 伦理片免费秋霞e | jiz在线播放jizijzz | 男人J桶女人P视频无遮挡网站 | 性色香蕉AV久久久天天网 | 91综合久久久久婷婷 | 成 人 片 免费播放 成 人 免费 黄 色 网站无毒下载 | 伊人久久青草 | 中文有码中文字幕免费视频 | 国产乱妇乱子在线播视频播放网站 | 在线播放国产视频 | 在线播放一区二区精品产 | 欧美人与动牲交ZOOZ特 | 91精品福利一区二区 | 国自产拍 高清精品 | 精品久久久久中文字幕 | 久久精品亚洲AV中文2区金莲 | 乱子伦在线观看中文字幕 | 国产成+人欧美+综合在线观看 | yellow日本动漫高清 | 精品国产品国语在线不卡丶 | 国产精品视频成人 | 亚洲无线码一区在线观看 | 亚洲电影不卡 | 亚洲午夜性春猛交XXXX | 老色哥网站| 我与恶魔的h生活ova | 成人无码国产AV免费看直播 |