STM32的FLASH能否半字读?

[复制链接]
4379|7
 楼主| yzzly 发表于 2011-8-22 22:33 | 显示全部楼层 |阅读模式
本帖最后由 yzzly 于 2011-8-23 21:09 编辑

typedef unsigned char      Uint08;
typedef unsigned int      Uint16;
typedef unsigned long     Uint32;

Uint32 TestVar;

Uint08 FlashByteRead(Uint08 *SourceAdr)
{
      return(*SourceAdr);
}

Uint16 FlashHarfWordRead(Uint16 *SourceAdr)
{
      return(*SourceAdr);
}

Uint32 FlashWordRead(Uint32 *SourceAdr)
{
      return(*SourceAdr);// + *(SourceAdr+2));
}

FLASH_ProgramWord(FlashStartAdr+SavePageNum*2048,0x01234567);
TestVar=FlashByteRead((Uint08 *)(FlashStartAdr+SavePageNum*2048));         //TestVar=0x00000067
TestVar=FlashHarfWordRead((Uint16 *)(FlashStartAdr+SavePageNum*2048));  //TestVar=0x01234567,为什么会这样?
TestVar=FlashWordRead((Uint32 *)(FlashStartAdr+SavePageNum*2048));        //TestVar=0x01234567
mcuisp 发表于 2011-8-22 23:24 | 显示全部楼层
读写都可以,擦除不行。
swx2010 发表于 2011-8-23 10:09 | 显示全部楼层
你们检查过unsigned int是多少位吗?
 楼主| yzzly 发表于 2011-8-23 21:10 | 显示全部楼层
 楼主| yzzly 发表于 2011-8-24 12:31 | 显示全部楼层
为什么?
 楼主| yzzly 发表于 2011-8-25 12:39 | 显示全部楼层
怎么不见令我信服的答案?
hdshgch 发表于 2013-1-21 01:07 | 显示全部楼层
unsigned int 是32位的
john_lee 发表于 2013-1-21 10:37 | 显示全部楼层
不要自己定义带宽度的整形,标准系统头文件(stdint.h)已经提供了如下类型:
int8_t,uint8_t:8位有/无符号整形。
int16_t,uint16_t:16位有/无符号整形。
int32_t,uint32_t:32位有/无符号整形。
int64_t,uint64_t:64位有/无符号整形。
int_fast8_t, int_least8_t:能够直接参与运算且不低于8位的有/无符号整形。
int_fast16_t, int_least16_t:能够直接参与运算且不低于16位的有/无符号整形。
int_fast32_t, int_least32_t:能够直接参与运算且不低于32位的有/无符号整形。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

428

主题

1194

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部