運行環境
Windows10
STM32CubeMX___Version 5.0.0
Keil5(MDK5)___Version 5.15
簡介
本例程主要講解如何對芯片內的Flash進行讀寫,用芯片內部Flash可以對一些需要斷電保存的數據進行保存,無需加外部得存儲芯片,本例程采用的是STM32F103ZET6,512K大小的Flash。
STM32CubeMx基本配置
基礎配置過程請參考 STM32CubeMx(Keil5)開發之路—配置第一個項目
printf重定向例程請參考 STM32CubeMx(Keil5)開發之路——3發送USART數據和printf重定向
代碼修改
1——選擇main.c文件
2——添加全局變量在全局變量區
3——在USER CODE中添加如下代碼,Flash寫入函數和Flash讀出函數
講解:本例程是512K大小的Flash,使用的是最后一個扇區的第一頁(每個扇區有四頁)
如果使用Flash大小為256K的芯片addr請設為0x0803E000
如果使用Flash大小為128K的芯片addr請設為0x0801F000
如果使用Flash大小為64K的芯片addr請設為0x08007000
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1, 0xFFFF);
return ch;
}
uint32_t WriteFlashData = 0x12345678;
uint32_t addr = 0x0807E000;
/*FLASH寫入程序*/
void writeFlashTest(void)
{
/* 1/4解鎖FLASH*/
HAL_FLASH_Unlock();
/* 2/4擦除FLASH*/
/*初始化FLASH_EraseInitTypeDef*/
/*擦除方式頁擦除FLASH_TYPEERASE_PAGES,塊擦除FLASH_TYPEERASE_MASSERASE*/
/*擦除頁數*/
/*擦除地址*/
FLASH_EraseInitTypeDef FlashSet;
FlashSet.TypeErase = FLASH_TYPEERASE_PAGES;
FlashSet.PageAddress = addr;
FlashSet.NbPages = 1;
/*設置PageError,調用擦除函數*/
uint32_t PageError = 0;
HAL_FLASHEx_Erase(&FlashSet, &PageError);
/* 3/4對FLASH燒寫*/
HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, addr, WriteFlashData);
/* 4/4鎖住FLASH*/
HAL_FLASH_Lock();
}
/*FLASH讀取打印程序*/
void printFlashTest(void)
{
uint32_t temp = *(__IO uint32_t*)(addr);
printf("addr is:0x%x, data is:0x%xrn", addr, temp);
}
/* USER CODE END 0 */
接著在USER CODE BEGIN WHILE中接著添加如下代碼,進行讀寫測試測試
/* Infinite loop */
/* USER CODE BEGIN WHILE */
/*Flash TEST*/
WriteFlashData = 0x12345678;
writeFlashTest();
printFlashTest();
WriteFlashData = 0x87654321;
writeFlashTest();
printFlashTest();
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
燒錄代碼后打開出口調試助手,正確的話會看到如下輸出
上一篇:STM32CubeMX FreeRTOS軟件定時器實驗
下一篇:STM32CubeMX(Keil5)開發之路——6外部中斷
推薦閱讀
史海拾趣
ABB公司是一家全球性的工程技術公司,提供電力和自動化技術解決方案。以下是該公司發展的五個相關故事:
公司成立和早期發展: ABB公司成立于1883年,最初名為“Brown, Boveri & Cie”,總部位于瑞士蘇黎世。公司的創始人是查爾斯·布朗和沃爾夫岡·鮑弗里。在早期,ABB專注于電力系統和電機的研發與制造,為當時的工業革命提供了關鍵的技術支持。
國際化戰略和全球擴張: 隨著技術的進步和市場的變化,ABB積極推動國際化戰略,加速在全球范圍內的擴張。公司通過收購和合并,逐步建立了全球化的生產和銷售網絡。截至2022年,ABB已在100多個國家設有分支機構和辦事處。
技術創新和產品多樣化: ABB一直致力于技術創新,不斷推出新產品和解決方案,以滿足不同行業和領域的需求。公司在電力輸送、工業自動化、機器人技術等方面處于行業領先地位,為客戶提供了全面的電力和自動化解決方案。
可持續發展和環保責任: ABB積極推動可持續發展和環保責任,在產品設計、生產和運營過程中注重減少能源消耗和減排,促進清潔能源的應用和利用。公司致力于推動能源效率和環境保護,為全球可持續發展做出貢獻。
未來展望和發展方向: ABB將繼續致力于技術創新和市場拓展,加強在電力和自動化領域的領先地位。公司將加大在數字化技術和人工智能領域的投入,推動工業智能化和數字化轉型,為客戶提供更智能、更高效的解決方案。
隨著智能手機市場的快速發展,C&H Technology意識到單純的芯片制造已經不能滿足市場需求。于是,公司開始加大研發投入,致力于在5G通信、人工智能等前沿技術領域取得突破。經過多次試驗和失敗,C&H Technology的研發團隊終于成功開發出了一款集成5G通信功能的手機芯片,并獲得了多項專利。這一技術突破不僅提升了公司在行業內的地位,也為公司的未來發展奠定了堅實的基礎。
作為電子行業的領軍企業之一,宇陽科技始終堅持以創新為驅動的發展戰略。公司不斷投入研發資金,加強技術團隊建設,積極引進先進技術和管理經驗。通過持續創新和技術升級,宇陽科技成功推出了多款具有自主知識產權的新型電子元器件產品,并引領了行業潮流。同時,公司還積極參與行業標準制定和技術交流合作等活動,為推動電子行業的發展做出了積極貢獻。
以上五個故事梗概概述了宇陽科技在電子行業中的發展歷程和主要成就。這些故事不僅展現了公司的技術實力和市場地位,也體現了公司不斷創新、追求卓越的發展理念。
在電子行業快速發展的浪潮中,Cotco公司于XXXX年正式成立,由幾位在電子行業有著豐富經驗的企業家和技術專家共同創立。初期,公司專注于電子元器件的分銷和貿易,憑借創始團隊成員在行業內的人脈和資源,Cotco很快與多家知名電子元器件制造商建立了合作關系,開始為客戶提供優質的元器件采購服務。隨著市場需求的不斷增長,Cotco的業務也逐漸擴展,開始涉足電子產品的設計和生產領域。
在電子行業快速發展的浪潮中,Cotco公司于XXXX年正式成立,由幾位在電子行業有著豐富經驗的企業家和技術專家共同創立。初期,公司專注于電子元器件的分銷和貿易,憑借創始團隊成員在行業內的人脈和資源,Cotco很快與多家知名電子元器件制造商建立了合作關系,開始為客戶提供優質的元器件采購服務。隨著市場需求的不斷增長,Cotco的業務也逐漸擴展,開始涉足電子產品的設計和生產領域。
LATTICE可編程電源管理POWER MANAGER II LATTICE半導體公司發布了第二代Power Manager II產品系列的兩款新增器件ispPAC-POWR1014和ispPAC-POWR1014A。Power Manager II系列是LATTICE獲獎的ispPAC Power Manager可編程混合信號器件的功能擴展系列。通過一組經過優化的可編程數字和模擬功能 ...… 查看全部問答∨ |
|
我有PDA設備是MC3000的,我用的是C#來做開發的,現在我遇到一個重大問題,數據同步不到PDA設備上,就是執行PULL時出錯, 我估計是我的環境配置有問題,我的PC上已經裝了sql server 2000 sp3的補丁,也裝了sql ce 3.0 的程序,在IE里測試我的IIS是正確的,PD ...… 查看全部問答∨ |
|
在KEIL平臺上編譯UC/OS我有這樣的一個困惑,我發現任務堆棧里保存的僅僅是CPU寄存器的狀態和一些函數嵌套時的PC值還有就是函數嵌套時的一些傳遞參數的值,但是他并沒有保存函數中的局部變量,這樣的話 ...… 查看全部問答∨ |
交流電流過負載時,加在該負載上的交流電壓與通過該負載的交流電流產生相位差,人們便從中引出功率因數這一概念。人們生產、生活用電來自電網,電網提供頻率為50Hz或60Hz的交流電。作為交流電的負載有電阻、電感、電容三種類型。 當交流 ...… 查看全部問答∨ |
本人畢設遇到了瓶頸,無奈導師太忙。故在此求助各位大蝦~ 內容是可以通過對車流量的實時監測,綠燈的倒計時間可以實時更改,涉及到一個智能控制的問題。 在車流量監測方面最好用視頻識別,不過有點困難,暫時用其他方法代替也可。 小弟現在問題 ...… 查看全部問答∨ |
tiva的lanchpad片上有otg,LMF120的板子只有device,所以只能暫且玩玩了。 ti給出了bluk的例子大家可以看看。我是用MDK+vs2005調試的。 … 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 半導體品牌知名度問卷調查
- 上演你的“ADI實驗室電路”DIY!
- 下載有禮|是德科技電子書 《通過了解測試精度的基礎知識, 提高良率并降低風險》,不做“差不多先生”
- 下載《Altera SoC深度體驗》,打分評論贏好禮
- 【已結束】 Qorvo、村田、NI直播【UWB最新技術、方案、市場、應用解析】(13:30開始入場)
- TI 最新CapTIvate™ 觸控微控制器技術直播開始報名嘍!報名參與有禮呦!
- 老T叔的藏書閣——一位老工程師多年的資料積累
- 有獎直播【Keysight World Tech Day 2023分論壇——汽車自動駕駛與新能源】
- #最能打國產芯#能打入汽車電子這片地的國產芯,有多少啦?
- 新年新挑戰:ST藍牙開發板免費申請評測+挑戰賽(littleshrimp帶隊)