木头子 发表于 2014-3-6 10:42:36

关于映射的一个小问题

程序如下:
 if ((FLASH_ReadOptionByte(0x4803) >> 8) != 0x42 )
 {
  FLASH_Unlock(FLASH_MEMTYPE_DATA);
 
  FLASH_EraseOptionByte(0x4803);
 
  FLASH_ProgramOptionByte(0x4803, 0x42);
 
  FLASH_Lock(FLASH_MEMTYPE_DATA);
 }
 
我是这样想的,将0x4803的内容进行右移再判断是否等于0x42,但是0x4803里面存的是一个字节吧,这样的话右移8位不就是0 了,那就永远不等于0x42,这条if就一直为真。
不知道本人哪里理解错了,希望大家帮忙解答。谢谢大家。

木头子 发表于 2014-3-7 13:35:45

回复:关于映射的一个小问题

:funk:这么个问题都木有人帮忙回答

aaa999kk 发表于 2014-3-7 14:08:48

RE:关于映射的一个小问题

你这个数值应该不是固定的,否则无法确定啊

灰小子-1888763 发表于 2014-3-7 20:50:05

RE:关于映射的一个小问题

ASCII中0x42是字符“B”

aaa1350 发表于 2014-3-7 23:49:11

RE:关于映射的一个小问题

如果确定了是0或1或者是上面说的什么B, 固定的也好, 不固定也好,程序一般开发出来总是可以修改和调试的

abner88 发表于 2014-3-9 14:53:34

RE:关于映射的一个小问题

这个函数返回选项字节 OptionByte 双字节的 你可以看看这个函数原型 返回的是u16
所以是在判断高字节,如果不等于0x42,那么写入0x42,注意后面编程函数数据是u8

木头子 发表于 2014-3-10 19:56:36

回复:关于映射的一个小问题

回复第 6 楼 于2014-03-09 14:53:34发表:
这个函数返回选项字节 OptionByte 双字节的 你可以看看这个函数原型 返回的是u16
所以是在判断高字节,如果不等于0x42,那么写入0x42,注意后面编程函数数据是u8
 

谢谢

发表于 2014-3-11 10:30:50

RE:关于映射的一个小问题

FLASH_ReadOptionByte(0x4803) ,FLASH读取出来的都是双字的,没有单字节的。
页: [1]
查看完整版本: 关于映射的一个小问题