在我們應(yīng)用開發(fā)時,經(jīng)常會有一些程序運行參數(shù)需要保存,如一些修正系數(shù)。這些數(shù)據(jù)的特點是:數(shù)量少而且不需要經(jīng)常修改,但又不能定義為常量,因為每臺設(shè)備可能不一樣而且在以后還有修改的可能。將這類數(shù)據(jù)存在指定的位置,需要修改時直接修改存儲位置的數(shù)值,需要使用時則直接讀取,會是一種方便的做法。考慮到這些數(shù)據(jù)量比較少,使用專門的存儲單元既不經(jīng)濟,也沒有必要,而STM32F103內(nèi)部的Flash容量較大,而且ST的庫函數(shù)中還提供了基本的Flash操作函數(shù),實現(xiàn)起來也比較方便。
以大容量產(chǎn)品STM32F103VE為例,其Flash容量達到512K,可以將其中一部分用作數(shù)據(jù)存儲。如下是大容量的Flash組織模式:
根據(jù)上面的Flash組織模式,我們可以根據(jù)自己的使用方便來作相應(yīng)的定義。因為大容量每個扇區(qū)定義為2K,而小容量和中容量都定義為1K,所以我們做如下宏定義:
#define FLASH_SIZE 512 //所選MCU的FLASH容量大小(單位為K)
#if FLASH_SIZE<256
#defineSECTOR_SIZE 1024 //字節(jié)
#else
#defineSECTOR_SIZE 2048 //字節(jié)
#endif
雖然ST的庫函數(shù)比較全面,但都是基本操作,為了使用方面,根據(jù)我們自己的需要對其進行再次封裝。
對于讀操作相對比較簡單,內(nèi)置閃存模塊可以在通用地址空間直接尋址,就像讀取變量一樣。
//從指定地址開始讀取多個數(shù)據(jù)
void FLASH_ReadMoreData(uint32_tstartAddress,uint16_t *readData,uint16_t countToRead)
{
uint16_tdataIndex;
for(dataIndex=0;dataIndex readData[dataIndex]=FLASH_ReadHalfWord(startAddress+dataIndex*2); } } //讀取指定地址的半字(16位數(shù)據(jù)) uint16_t FLASH_ReadHalfWord(uint32_t address) { return*(__IO uint16_t*)address; } //讀取指定地址的全字(32位數(shù)據(jù)) uint32_t FLASH_ReadWord(uint32_t address) { uint32_ttemp1,temp2; temp1=(__IO uint16_t)address; temp2=(__IO uint16_t)(address+2); return(temp2<<16)+temp1; } 對于寫操作相對來說要復(fù)雜得多,寫操作包括對用戶數(shù)據(jù)的寫入和擦除。為了防止誤操作還有寫保護鎖。但這些基本的操作ST的庫函數(shù)已經(jīng)為我們寫好了,我們只需要調(diào)用即可。 STM32復(fù)位后,F(xiàn)PEC模塊是被保護的,只有在寫保護被解除后,我們才能操作相關(guān)寄存器。STM32閃存的編程每次必須寫入16位,任何不是半字的操作都會造成錯誤。如下圖是Flash寫的過程: STM32的FLASH在編程的時候,也必須要求其寫入地址的FLASH是被擦除了的(也就是其值必須是0XFFFF),否則無法寫入。Flash的擦除要求必須整頁擦除,所以也必須整頁寫入,否則可能會丟失數(shù)據(jù)。如下圖是Flash頁擦除過程: 如下為Flash全擦除過程, 根據(jù)以上圖示我們便寫數(shù)據(jù)寫入函數(shù)如下: //從指定地址開始寫入多個數(shù)據(jù) void FLASH_WriteMoreData(uint32_tstartAddress,uint16_t *writeData,uint16_t countToWrite) { if(startAddress { return;//非法地址 } FLASH_Unlock(); //解鎖寫保護 uint32_toffsetAddress=startAddress-FLASH_BASE; //計算去掉0X08000000后的實際偏移地址 uint32_tsectorPosition=offsetAddress/SECTOR_SIZE; //計算扇區(qū)地址,對于STM32F103VET6為0~255 uint32_tsectorStartAddress=sectorPosition*SECTOR_SIZE+FLASH_BASE; //對應(yīng)扇區(qū)的首地址 FLASH_ErasePage(sectorStartAddress);//擦除這個扇區(qū) uint16_tdataIndex; for(dataIndex=0;dataIndex FLASH_ProgramHalfWord(startAddress+dataIndex*2,writeData[dataIndex]); } FLASH_Lock();//上鎖寫保護 }在擦除之前應(yīng)該將頁面上的數(shù)據(jù)讀取出來與要寫入的數(shù)據(jù)合并,待擦除后再寫入,但這樣數(shù)據(jù)量很大(大容量是2K一個扇區(qū)),所以考慮到是少量數(shù)據(jù)存儲,所以每次都將全部數(shù)據(jù)同時寫入,簡化操作,也減少數(shù)據(jù)處理量。經(jīng)測試以上程序?qū)懭牒妥x出數(shù)據(jù)均正確,可以實現(xiàn)內(nèi)部Flash的讀寫操作。需要更深入了解可以參考《STM32F10xxx 閃存編程參考手冊》。
上一篇:STM32使用TCP透傳方式與ONENET進行連接的簡單教程
下一篇:STM32低功耗之待機模式
推薦閱讀
史海拾趣
由于我無法直接獲取Avel Lindberg公司的詳細發(fā)展資料,因此我無法直接為您撰寫5個關(guān)于該公司發(fā)展起來的具體故事。不過,我可以為您提供一個通用的故事框架,您可以根據(jù)這個框架結(jié)合公司的公開信息來撰寫相關(guān)故事。
Avel Lindberg公司發(fā)展故事框架
-
創(chuàng)業(yè)初期: 描述Avel Lindberg公司成立的背景,包括創(chuàng)始人或核心團隊的愿景、行業(yè)趨勢以及初始產(chǎn)品或服務(wù)。可以提及公司如何克服初創(chuàng)期的困難,如資金短缺、市場競爭激烈等問題,逐漸在市場上站穩(wěn)腳跟。
-
技術(shù)突破: 講述公司在某個關(guān)鍵時期實現(xiàn)的技術(shù)突破,這項突破可能是對既有技術(shù)的改進,也可能是全新技術(shù)的研發(fā)。這個突破如何幫助公司打開了新的市場領(lǐng)域,提升了競爭力,成為行業(yè)內(nèi)的領(lǐng)軍者。
-
合作與擴展: 描述公司如何通過與其他企業(yè)、研究機構(gòu)或高校建立合作關(guān)系,來擴大業(yè)務(wù)范圍或提升技術(shù)水平。這些合作可能涉及共同研發(fā)、市場拓展、品牌建設(shè)等方面,對公司的長期發(fā)展產(chǎn)生了積極影響。
-
國際化戰(zhàn)略: 講述公司如何逐步實施國際化戰(zhàn)略,進入海外市場。這包括公司如何分析國際市場的需求和競爭態(tài)勢,制定合適的市場進入策略,以及在國際市場上取得的成就和面臨的挑戰(zhàn)。
-
社會責(zé)任與可持續(xù)發(fā)展: 介紹公司在發(fā)展過程中如何關(guān)注社會責(zé)任和可持續(xù)發(fā)展。這可以包括公司在環(huán)保、員工福利、社區(qū)支持等方面的舉措,以及這些舉措如何提升了公司的社會形象和品牌價值。
在撰寫具體故事時,您可以根據(jù)Avel Lindberg公司的實際情況調(diào)整上述框架中的內(nèi)容,并結(jié)合公司的官方公告、新聞報道和行業(yè)分析報告等資料來豐富細節(jié)。同時,請確保所描述的事實準(zhǔn)確無誤,避免主觀評價和猜測。
1945年,第二次世界大戰(zhàn)結(jié)束后不久,Dow-Key Microwave Corporation在美國成立。公司創(chuàng)始人憑借對射頻和微波技術(shù)的深刻理解和市場需求的敏銳洞察,決定專注于射頻微波開關(guān)的制造。在初創(chuàng)階段,公司面臨資金短缺、技術(shù)挑戰(zhàn)和市場接受度不高等問題。然而,創(chuàng)始人及其團隊?wèi){借不懈的努力和創(chuàng)新的精神,逐漸克服了這些困難,為公司的發(fā)展奠定了堅實的基礎(chǔ)。
在1902年,Joseph C. Belden在美國芝加哥創(chuàng)立了Belden公司,標(biāo)志著這家電線電纜公司的誕生。創(chuàng)立初期,公司便專注于電線電纜的研發(fā)和生產(chǎn),憑借其卓越的產(chǎn)品質(zhì)量和可靠的性能,逐漸在市場上嶄露頭角。隨著業(yè)務(wù)的發(fā)展,Belden逐漸擴大了生產(chǎn)規(guī)模,并增設(shè)了多個生產(chǎn)基地,以滿足不斷增長的市場需求。
隨著觸控技術(shù)的興起,Azoteq在2004年增加了第二條產(chǎn)品線,以應(yīng)對新興的電容式觸摸和接近感應(yīng)產(chǎn)品市場。這一舉措使得Azoteq能夠緊跟市場趨勢,為客戶提供更多樣化的產(chǎn)品選擇。通過不斷的技術(shù)創(chuàng)新和市場拓展,Azoteq在這一領(lǐng)域逐漸取得了領(lǐng)先地位。
為了進一步擴大市場份額,Caddell-Burns Manufacturing公司開始積極尋求國際合作。他們與多個國家的電子制造商建立了穩(wěn)定的合作關(guān)系,將產(chǎn)品出口到世界各地。同時,公司還參加了多個國際電子展會,展示了公司的最新產(chǎn)品和技術(shù)成果,吸引了眾多客戶的關(guān)注。這些舉措不僅提升了公司的國際知名度,也為公司的長期發(fā)展奠定了堅實基礎(chǔ)。
經(jīng)過多年的發(fā)展,協(xié)順電子已經(jīng)成為中國電子連接器行業(yè)的領(lǐng)軍企業(yè)之一。展望未來,公司將繼續(xù)堅持“以顧客為中心”的經(jīng)營理念,不斷提升產(chǎn)品質(zhì)量和技術(shù)水平;同時,公司也將積極探索新的業(yè)務(wù)領(lǐng)域和市場機會,推動公司的持續(xù)發(fā)展。此外,協(xié)順電子還將加強與國際知名企業(yè)的合作與交流,共同推動電子行業(yè)的發(fā)展和進步。
請注意,以上故事框架僅供參考,具體的故事內(nèi)容需要根據(jù)協(xié)順電子(Finecables)公司的實際情況和發(fā)展歷程進行創(chuàng)作和補充。
電路“集成”使軍事力量倍增 自從60年代第一塊集成電路問世,30多年來,微電子技術(shù)得到了飛速發(fā)展,首先在軍事上得到廣泛的應(yīng)用,促成了精確制導(dǎo)武器、C4I系統(tǒng)等一系列高技術(shù)武器裝備的發(fā)展,使作戰(zhàn)效能 ...… 查看全部問答∨ |
|
1602的學(xué)習(xí)總結(jié)(菜鳥入門級) 先來敘述一些概念。 LCM和LCD的區(qū)別 LCM【Liquid Crystal Module】液晶顯示模塊,通常包括顯示驅(qū)動電路,接口電路等等。往往做成一個整體模塊的形式,包括LCD液晶屏,屏的框架,線路板,驅(qū)動IC,控制IC等一系列,一般還有背光電路,其中IC的 ...… 查看全部問答∨ |
|
2440 RGB565信號驅(qū)動液晶屏?xí)霈F(xiàn)亮點,并不斷閃動 2440 RGB565信號驅(qū)動液晶屏?xí)霈F(xiàn)某些亮點,并不斷閃動,請教下有什么解決的思路和方法,在顯示某些圖片的時候亮點會加劇,請教下有什么好的解決思路… 查看全部問答∨ |
電腦的預(yù)裝系統(tǒng)為VISTA系統(tǒng),更換XP后,亮度為最暗狀態(tài),而且無法調(diào)節(jié)亮度,安裝公版顯卡驅(qū)動后,在桌面點右鍵屬性----設(shè)置---顯示屬性中更改顏色質(zhì)量,然后再在桌面點擊右鍵,圖形屬性中添加一個新的圖形選項(隨便命名就可以)保存后,手動選擇添 ...… 查看全部問答∨ |
89S51的p3.0腳和p3.1腳是用來進行RS232通訊的,請問在這兩個腳能不能直接跟計算機連接,如果不能,是不是要在和計算機連接之間連上一個232接口芯片呢 89S51的p3.0腳和p3.1腳是用來進行RS232通訊的,請問在這兩個腳能不能直接跟計算機連接,如果不能,是不是要在和計算機連接之間連上一個232接口芯片呢?目前流行的232接口芯片有哪些?如果是485通訊又該用什么芯片?和計算機的連接通訊腳是否可以隨 ...… 查看全部問答∨ |
LED生產(chǎn)過程中所使用的環(huán)氧樹脂(Epoxy),是LED產(chǎn)業(yè)界制作產(chǎn)品時的重點之一。環(huán)氧樹脂是泛指分子中含有兩個或兩個以上環(huán)氧基團的有機高分子化合物,除個別外,它們的相對分子品質(zhì)都不高。環(huán)氧樹脂的分子結(jié)構(gòu)是以分子鏈中含有活潑的環(huán)氧基團為其特徵,環(huán) ...… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 意法半導(dǎo)體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- API調(diào)用小記(Touchdesigner和ESP32)
- 關(guān)于ESP32/8266使用async-mqtt-client庫的一些基本介紹
- 座椅、天窗、電動尾門應(yīng)用 國產(chǎn)車規(guī)級高壓霍爾效應(yīng)傳感器推薦
- 突發(fā)!又一車企車機“崩了”
- 寧德時代為陳立泉院士頒發(fā)“卓越貢獻獎”
- 一文速覽吉利雷神 AI 電混 2.0 發(fā)布會重點
- 2025年1-4月ADAS供應(yīng)商裝機量排行榜:頭部集中與國產(chǎn)突圍并存
- 國內(nèi)飛行汽車無線通信測試成功,通信安全新突破
- SPAD席卷車載激光雷達市場
- 大聯(lián)大品佳集團推出基于Microchip和ams OSRAM產(chǎn)品的10Base-T1S萬級像素大燈方案
- 哈曼推出采用三星Neo QLED技術(shù)的全新顯示屏
- Syntiant推出超低功耗汽車AI創(chuàng)新技術(shù) 提升車輛安全性和用戶體驗
- 示波器可以幫你解決的典型應(yīng)用
- 想要更直觀的了解5G?觀看羅德與施瓦茨主題演講,填問卷贏好禮!
- 打卡最后一周,解鎖TI汽車解決方案。解鎖的數(shù)量決定獎品的質(zhì)量!
- Littelfuse 新品賦能電子產(chǎn)品安全可靠并高效, 10+挑戰(zhàn)等你探索!
- 【XILINX 主題分享月】 低功耗資料大搜集!
- 2024 瑞薩電子MCU/MPU工業(yè)技術(shù)研討會——深圳、上海站
- 【答題有禮】了解PI推出的全新LinkSwitch-XT2離線反激式開關(guān)電源IC產(chǎn)品系列
- 報名直播贏【保溫杯】等好禮|TI MSPM0 MCU 在汽車系統(tǒng)中的應(yīng)用
- 曬方案 贏大獎