硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3511|回复: 2
收起左侧

[有问必答] M3的FLASH只能以半字为单位进行program吗?

[复制链接]

65

主题

432

回帖

632

积分

金牌会员

积分
632
发表于 2017-4-24 22:31:37 | 显示全部楼层 |阅读模式
在ST官方手册PM0042(STM32F10xxx Flash programming)的2.3.3中有文字

The main Flash memory can be programmed 16 bits at a time.
Any attempt to write data that are not half-word long will result in a bus error response from the FPEC.
按上面的说法,FLASH只能以16位进行编程,任何不以16位长度编程都将引起总线错误
但是在M3的库文件stm32f10x_flash.c里,却提供了2个写FLASH的函数:

FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data);
FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data);

这二者到底矛盾不?M3的FLASH到底能不能以32位宽度进行编程?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2017-4-25 09:34:44 | 显示全部楼层
不矛盾,你看下这个字写入函数FLASH_ProgramWord的源码,是不是通过两次半字写入的。
回复

使用道具 举报

65

主题

432

回帖

632

积分

金牌会员

积分
632
 楼主| 发表于 2017-4-25 12:08:09 | 显示全部楼层
SORRY,没往里看,原来是调用半字编程,惭愧了,魔鬼都在细节里呀,看来手册里说的很对,有时候研究英文手册的时候,老外极简单的一句话,蕴藏很深的知识点,而且英文描述都很简单直接
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-28 15:40 , Processed in 0.284935 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表