stm32 flash问题

2019-03-23 18:18发布

本帖最后由 纷纷扰扰 于 2016-3-24 16:36 编辑

  下图是stm32中对flash写入一个字的库函数,其中再给用u32表示的地址address赋值时,用(_IO uint16_t*)将address强制转换成了一个16位数的地址,这里很不理解为什么要转成16位的。  实验改成32位后不可写入flash。
  例如:一个0xabcd1234的地址用(_IO uint16_t*)强转下就变成了0x1234……很不理解为什么要丢弃地址的4个高位才能操作。库后面的地址加2数据右移16位都很好理解,但是为什么要把一个u32表示的地址强转成u16表示后,才能对地址的内容进行操作.........很不理解,望知道的大神指点一二,纠结很久了T_T。


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
huaiqiao
1楼-- · 2019-03-23 22:13
/ “=”号左边的这个*(__IO uint16_t*)Address是个“去指针”的操作,为了跟你右边的数据一致。按照f4的库文件中这个地方应该是32位的。
但是,您这个地方的注释已经写了是“half word”哦。
纷纷扰扰
2楼-- · 2019-03-24 00:45
 精彩回答 2  元偷偷看……
纷纷扰扰
3楼-- · 2019-03-24 03:15


嗯嗯,明白了,3q呐~我这板子是f1的
sin980X
4楼-- · 2019-03-24 06:24
half word 是下面没有下滑线吗?

一周热门 更多>