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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32 Flash读写;Flash地址对应的存储内容及方式;

發(fā)布時(shí)間:2023/12/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32 Flash读写;Flash地址对应的存储内容及方式; 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

概念:計(jì)算機(jī)中最小的信息單位是bit,也就是一個(gè)二進(jìn)制位,8個(gè)bit組成一個(gè)Byte,也就是1個(gè)字節(jié),

1個(gè)存儲(chǔ)單元存放1個(gè)字節(jié),每個(gè)存儲(chǔ)單元對應(yīng)一個(gè)32位(bit)地址,所以重要的話說三遍:對于32bit的ARM CPU

一個(gè)32位地址指向1個(gè)字節(jié)!!! ?一個(gè)32位地址指向1個(gè)字節(jié)!!! ??一個(gè)32位地址指向1個(gè)字節(jié)!!!

我們常說的flash空間,多少多少K,指的是多少多少K byte

?

假如我們執(zhí)行下面的函數(shù)操作:

?

FlashWriteWord_P(0x1082,&WordVar); /* 向0x1082、0x1083中寫入0xABCD */

經(jīng)過編譯,從map文件查看flash內(nèi)容如下:

?

注意,前面的1080是十六進(jìn)制,所以從0x1080到0x1090,共16個(gè)地址跨越,因?yàn)檫€有0x108A....0x108F

從這個(gè)map中,我們能發(fā)現(xiàn)一些問題

(1)驗(yàn)證了一個(gè)32位地址存放的是1個(gè)字節(jié)。

(2)將一個(gè)16位數(shù),也就是2個(gè)字節(jié),存放的順序是低字節(jié)在前,高字節(jié)在后,這個(gè)跟感官上不一樣。

(3)未存放數(shù)據(jù)的閃存單元是0xFF,這個(gè)不是巧合,因?yàn)閒lash說到底,內(nèi)部也是只有1和0兩種狀態(tài),CPU默認(rèn)都是1.

另外,一個(gè)潛規(guī)定,向Flash中寫數(shù)據(jù),起始地址最好是偶數(shù),否則容易出現(xiàn)錯(cuò)誤,所以:

?

  • 可以在0x1080、0x1081中存放一個(gè)uint16_t類型的數(shù)據(jù);
  • 可以在0x1082、0x1083中存放一個(gè)uint16_t類型的數(shù)據(jù);
  • 但是不能在0x1081、0x1082中存放一個(gè)uint16_t類型的數(shù)據(jù)。
  • 從上可以看出,數(shù)據(jù)在flash中存放順序是低在前,高在后,那么讀flash時(shí)呢,答案是,會(huì)再反轉(zhuǎn),高在前,低在后,因?yàn)樽xflash必須一次至少讀16位,不太允許讀8位,所以正好又反過來了。

    在編程時(shí),要注意給要分配要存儲(chǔ)的內(nèi)容地址,每個(gè)數(shù)據(jù)對應(yīng)地址,都是偶數(shù),因?yàn)?個(gè)數(shù)據(jù)要占用2個(gè)地址。

    ?

    轉(zhuǎn)載自https://blog.csdn.net/u012351051/article/details/77097559

    ?

    ?

    總結(jié)

    以上是生活随笔為你收集整理的STM32 Flash读写;Flash地址对应的存储内容及方式;的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。