打印

STM32的FLASH能否半字读?

[复制链接]
3424|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 | 只看该作者
???

使用特权

评论回复
5
yzzly|  楼主 | 2011-8-24 12:31 | 只看该作者
为什么?

使用特权

评论回复
6
yzzly|  楼主 | 2011-8-25 12:39 | 只看该作者
怎么不见令我信服的答案?

使用特权

评论回复
7
hdshgch| | 2013-1-21 01:07 | 只看该作者
unsigned int 是32位的

使用特权

评论回复
8
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位的有/无符号整形。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

427

主题

1178

帖子

3

粉丝