chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

基于STM32F0芯片的代碼實現(xiàn)及幾點提醒

茶話MCU ? 來源:ST MCU 信息交流 ? 2020-06-15 09:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

?STM32系列的芯片里都有個特別的存儲區(qū)---FLASH選項字區(qū)域,這里簡單聊下該話題并順便給出基于STM32F0芯片的代碼實現(xiàn)及幾點提醒。

這塊特定的FLASH存儲區(qū)域,通常用來存放有關(guān)芯片內(nèi)部FLASH讀保護、寫保護、看門狗使能方式、芯片啟動、RAM校驗、電源監(jiān)控等配置信息。具體內(nèi)容以及格式因不同的STM32系列可能有差異。

一般來講,各個選項字由選項字節(jié)組成,各選項字節(jié)由原始字節(jié)項和互補字節(jié)項組成。如下圖存儲方式,?綠色欄為原始選項字節(jié),黃色欄代碼互補選項字節(jié)。不同系列可能有差異?!鞠挛闹薪貓D如無特別說明,均是來自STM32F0芯片的參考手冊?!?/p>

FLASH選項字一般安排在某固定地址起始的一塊連續(xù)的地址空間。下圖就是STM32FO芯片內(nèi)部FLASH選項字的地址及內(nèi)容結(jié)構(gòu)安排。這里包括讀保護選項字節(jié)、用戶選項字節(jié)、扇區(qū)寫保護選項字節(jié)。

對于出廠的芯片,F(xiàn)LASH選項字往往具有初始出廠值。下圖就是STM32F0芯片出廠時FLASH選項字的初始值。

但在我們的實際應(yīng)用中往往需要結(jié)合實際應(yīng)用情況,對FLASH選項字進行重新配置。而對FLASH選項字進行重新配置一般有兩種方式:

第一種,通過編程燒錄工具進行選項字的配置并寫入。

比方使用STLinkUtiliy或STM32CubeProgrammer或其它類似編程工具來實現(xiàn)。這種方式相對較為簡單,一般對操作人員往往有些要求。尤其在有意或無意弄錯配置選項的情況下,沒法快速發(fā)現(xiàn)并及時糾正。

另外一種方式就是用戶在應(yīng)用代碼里根據(jù)應(yīng)用需求做FLASH選項字的配置編程。

這種方式,對開發(fā)人員來講會增加了一些工作量。但燒錄時只管燒錄FLASH執(zhí)行代碼即可,關(guān)于芯片配置方面的信息在代碼里自行完成。即使燒錄時出現(xiàn)選項字的誤操作,用戶程序代碼也可以將其自動糾正過來。

不論使用哪種方式修改FLASH選項字的配置,要想新的選項字信息真正起作用,還有個對FLASH選項字信息進行加載的環(huán)節(jié),即將FLASH選項字的配置信息加載到選項字寄存器,從而作用于芯片的相關(guān)功能,也就是上面提到過的讀保護、寫保護、看門狗使能、電源控制、啟動選擇等功能信息。一般來說,將FLASH選項字信息加載到選擇字寄存器需要借助系統(tǒng)復(fù)位或上電復(fù)位來完成?!井?dāng)在調(diào)試狀態(tài)下修改FLASH選項字時,它的加載需借助上電復(fù)位】

在進行FLASH選項字加載之前,芯片硬件會先對選項字信息進行基本地判斷與確認,即將各個原始選項字節(jié)與互補選項字節(jié)的進行匹配比對。如果比對失敗將產(chǎn)生出錯事件,并將比對失敗的選項字節(jié)【原始字節(jié)和互補字節(jié)】強制修改為0xFF或其它指定值,視不同的STM32系列而定。

比方,下面就是STM32L4系列做選項字加載前發(fā)生原始項與互補項信息比對不匹配時的處理原則:

關(guān)于FLASH選項字信息地編程修改,這里特別提醒幾點:

第1點,當(dāng)準備好要修改的選項字信息,在對FLASH選項字進行編程修改之前,需先對FLASH選項字區(qū)域進行擦除。發(fā)出擦除指令即可。擦除完畢之后再將新的選項字信息寫入選項字區(qū)域。

那么為了保障選項字正確有序的編程寫人,在做FLASH選項字的編程時,一定要保持電源的穩(wěn)定。【比方說,代碼里稍作延時等上電穩(wěn)定后再操作】如果正在做FLASH選項字編程時發(fā)生電源電壓劇烈波動或重啟,很可能發(fā)生FLASH選項字區(qū)域被擦除了但又沒有正確寫入新的選項字信息的情況。而且,前面也提到了,如果選項字因為沒有被完整地正確寫入,在做FLASH選項字加載前,還會由于原始項與互補項做信息比對失敗而被強行修改為OxFF或其它指定值。

下面兩幅截圖就是使用燒錄工具軟件【STM32CubeProgrammer】,在做flash選項字編程時通過模擬芯片被強行斷電所發(fā)生的情形。

本來,開始做FLASH選項字編程時,RDP保護配置都是選擇的LEVEL_0。在選項字編程時芯片被中途斷電重新后連接所看到結(jié)果卻是芯片被讀保護了,其它配置字也被擦除了。從截圖中可以看到,此時RDP=0xFF,既不是0xAA也不是0xCC,那么芯片的讀保護等級就相應(yīng)地變成了LEVEL_1讀保護狀態(tài)了。有人碰到此情形時往往感到納悶不解,明明自己沒有修改RDP的配置怎么RDP的保護等級變了呢?就是因為中途斷電,選項字區(qū)域剛被擦除又還沒來得及完整、正常寫入。

當(dāng)然,做FLASH選項字編程時除了要求電源穩(wěn)定外,編程時序也需遵照手冊介紹的來操作,以保證選項字編程的正確性。

第2點?,對于某些雙BANK的STM32芯片,比如STM32L4,STM32F42X等系列,在做選項字編程調(diào)整時,也是先將兩個BANK的用戶選項頁的內(nèi)容進行擦除,然后依據(jù)用戶準備好的選項寄存器的內(nèi)容對所有選項字內(nèi)容重新編程更新。

這里要注意的是,我們不能只是單獨地針對雙BANK其中的某一個BANK進行用戶選項字調(diào)整,而是需要將BANK1和BANK2的配置信息都準備好并寫入相應(yīng)的選項字寄存器,從而實現(xiàn)對兩個BANK的選項字信息的編程修改。

第3點?,在做選項字編程過程中,如果修改讀保護選項時,一定要清楚-----如果是從LEVEL_1調(diào)整為LEVEL_0將會發(fā)生整個芯片內(nèi)部的FLASH內(nèi)容被全部擦除的情況。另外,很多STM32系列支持LEVEL_2讀保護,該保護等級具有不可逆性。如果選擇該等級,除非你自己在芯片內(nèi)部準備好了升級引導(dǎo)代碼,否則你是不能再對片內(nèi)代碼內(nèi)容做任何更新,更不可能基于該芯片再做調(diào)試了。

好,關(guān)于STM32芯片的選項字的編程提醒就聊到這里。感覺上內(nèi)容應(yīng)該不多,但由于STM32家族擁有眾多系列,同時各個系列間在選項字這部分內(nèi)容又或多或少存在著差異,讓內(nèi)容突然龐雜了很多。這里只能拋磚引玉似地給些提醒,具體應(yīng)用時請參考各個STM32系列的參考手冊及編程手冊。

下面就以STM32F072芯片為核心的Nucleo板,給出一個實現(xiàn)用戶選項字編程的示例。

先看看STM32F072片內(nèi)選項字區(qū)域的基本內(nèi)容框架,如下圖:

一、選項字內(nèi)容的規(guī)劃與準備:

這里我將RDP選項字節(jié)配置為0xbb,即LEVEL_1,則其互補選項字節(jié)內(nèi)容就是0x44;將USER選項字節(jié)下面紅色方框內(nèi)的三個選項置1,另外兩個保留位置1,那么USER選項字節(jié)的內(nèi)容就是OxEA,它的互補字節(jié)就是0x15.

選項域中的Data0字節(jié)配置為0x99,則其互補字節(jié)nData0則為0x66;

選項域中的Data1字節(jié)配置為0x88,則其互補字節(jié)nData0則為0x77;

按照上面規(guī)劃準備好數(shù)據(jù),如下圖所示。各選項數(shù)據(jù)按原項和互補項組成半字寫入。

【順便說下,這里沒有對扇區(qū)寫保護做配置。當(dāng)然要做也是完全可以的】

二、編寫相應(yīng)程序代碼,編譯后下載到芯片:

相關(guān)代碼不長,較為簡單。按照手冊描述的來編寫。我將上述代碼分成6部分。

第1部分,做有關(guān)選項字節(jié)內(nèi)容的判斷,是否均為預(yù)期的選項配置內(nèi)容。

第2部分,對FLASH、OPTION編程做開鎖操作。

第3部分,對選項域進行擦除,然后退出擦除狀態(tài)。

第4部分,對欲修改的選項字節(jié)進行編程修改。

第5部分,完成選項字的修改與編程后,上鎖并退出。

第6部分,觸發(fā)系統(tǒng)復(fù)位,將新的選擇域內(nèi)容加載到選項控制寄存器。

三、運行程序,驗證結(jié)果

運行用戶程序?qū)崿F(xiàn)選項域的編程修改操作。可連接到STLINK Utlity之類的工具查看選項配置結(jié)果,看看是否跟預(yù)期規(guī)劃的一致。

上圖是通過STLINK Utility工具查看到的STM32F072芯片運行用戶程序后的選項域的結(jié)果。不難看出,跟我們預(yù)期的結(jié)果一樣【打勾的選項表示置1的選項】。我們還可以基于STLINK_Utility工具隨意修改RDP選項字以外的其它選項內(nèi)容,通過它做選項字的修改編程。然后再次運行用戶程序,可以發(fā)現(xiàn)各個選項字內(nèi)容又會回歸到用戶預(yù)設(shè)的配置內(nèi)容。

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

    關(guān)注

    459

    文章

    52464

    瀏覽量

    440206
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11031

    瀏覽量

    364437

原文標(biāo)題:STM32選項字編程示例及幾點提醒

文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    零知開源——STM32F4實現(xiàn)ILI9486顯示屏UI界面系列教程(二):日歷功能實現(xiàn)

    本教程詳細介紹了基于STM32F4和ILI9486觸摸屏的日歷應(yīng)用開發(fā),涵蓋硬件連接、軟件實現(xiàn)與零知IDE配置。核心功能包括月份視圖展示、滑動切換和日期標(biāo)記,通過LVGL庫實現(xiàn)UI組件及觸摸事件處理
    的頭像 發(fā)表于 06-25 17:34 ?161次閱讀
    零知開源——<b class='flag-5'>STM32F</b>4<b class='flag-5'>實現(xiàn)</b>ILI9486顯示屏UI界面系列教程(二):日歷功能<b class='flag-5'>實現(xiàn)</b>

    STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊

    電子發(fā)燒友網(wǎng)站提供《STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊.pdf》資料免費下載
    發(fā)表于 06-06 17:06 ?5次下載

    STM32F40xxx和STM32f41xx flash編程手冊

    PM0081_STM32F40xxx and STM32F41xxx單片機編程手冊
    發(fā)表于 06-06 17:02 ?3次下載

    零知開源——STM32F4驅(qū)動MAX31865實現(xiàn)PT100高精度測溫

    STM32F
    PCB56242069
    發(fā)布于 :2025年05月26日 18:25:17

    STM32與機智云連接實現(xiàn)步驟與技巧(下篇):機智云代碼移植與優(yōu)化

    在《STM32與機智云連接實現(xiàn)步驟與技巧(上篇)》中,我們介紹了硬件連接和通信協(xié)議配置。本篇將重點講解如何將機智云相關(guān)代碼移植到STM32,完成數(shù)據(jù)上傳和設(shè)備控制。我們將介紹如何在
    的頭像 發(fā)表于 05-23 18:10 ?237次閱讀
    <b class='flag-5'>STM32</b>與機智云連接<b class='flag-5'>實現(xiàn)</b>步驟與技巧(下篇):機智云<b class='flag-5'>代碼</b>移植與優(yōu)化

    stm32f103c8t6主控芯片無人機原理圖

    stm32f103c8t6主控芯片無人機原理圖
    發(fā)表于 04-29 17:02 ?1次下載

    STM32F103x8 STM32F103xB單片機數(shù)據(jù)手冊

    STM32F103x8STM32F103xB單片機數(shù)據(jù)手冊
    發(fā)表于 04-14 14:55 ?2次下載

    STM32F103×8/STM32F103×B MCU手冊

    本文提供了STM32F103x8和STM32F103xB中密度高性能系列微控制器的訂購信息和機械器件特性。有關(guān)整個STMicroelectronics STM32F103xx系列的更多信息,請
    發(fā)表于 03-18 16:37 ?0次下載

    STM32F0 SMBus中斷怎么開啟?

    STM32F0 用cubemx生成的SMBus-Alert-mode,cubemx中中斷使能開啟了,現(xiàn)在問題接收不到數(shù)據(jù),初始化中增加了一下代碼 __HAL_SMBUS_GET_IT_SOURCE
    發(fā)表于 03-12 07:23

    STM32F407嵌入式SRAM映射為0x20020000,為什么?

    就正常運行,可以實現(xiàn)跳轉(zhuǎn)了。關(guān)于這個問題,后來我查詢了數(shù)據(jù)手冊,確實有一定的記載,如下所示: 但是我用的芯片STM32F407VET6,并不是F42和
    發(fā)表于 03-10 08:24

    STM32F405xx和STM32F407xx微控制器數(shù)據(jù)手冊

    電子發(fā)燒友網(wǎng)站提供《STM32F405xx和STM32F407xx微控制器數(shù)據(jù)手冊.pdf》資料免費下載
    發(fā)表于 01-03 14:49 ?2次下載

    STM32F101x8/STM32F101xB手冊

    電子發(fā)燒友網(wǎng)站提供《STM32F101x8/STM32F101xB手冊.pdf》資料免費下載
    發(fā)表于 12-06 15:45 ?9次下載

    STM32F103x8/STM32F103xB規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《STM32F103x8/STM32F103xB規(guī)格書.pdf》資料免費下載
    發(fā)表于 12-06 15:43 ?1次下載

    意法半導(dǎo)體STM32支持RT-Thread開源4+服務(wù),助力企業(yè)用戶加速嵌入式開發(fā)

    的創(chuàng)新應(yīng)用。多款STM32硬件平臺支持RT-ThreadRT-Thread與STM32緊密合作,STM32多款硬件平臺從STM32F0F1
    的頭像 發(fā)表于 11-26 01:04 ?890次閱讀
    意法半導(dǎo)體<b class='flag-5'>STM32</b>支持RT-Thread開源4+服務(wù),助力企業(yè)用戶加速嵌入式開發(fā)

    STM32F40xxx、STM32F41xxx、STM32F42xxx、STM32F43xxx中文手冊

    STM32F4系列單片機中文手冊
    發(fā)表于 08-08 14:32 ?2次下載