关于映射的一个小问题
程序如下: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就一直为真。
不知道本人哪里理解错了,希望大家帮忙解答。谢谢大家。
回复:关于映射的一个小问题
:funk:这么个问题都木有人帮忙回答RE:关于映射的一个小问题
你这个数值应该不是固定的,否则无法确定啊RE:关于映射的一个小问题
ASCII中0x42是字符“B”RE:关于映射的一个小问题
如果确定了是0或1或者是上面说的什么B, 固定的也好, 不固定也好,程序一般开发出来总是可以修改和调试的RE:关于映射的一个小问题
这个函数返回选项字节 OptionByte 双字节的 你可以看看这个函数原型 返回的是u16所以是在判断高字节,如果不等于0x42,那么写入0x42,注意后面编程函数数据是u8
回复:关于映射的一个小问题
回复第 6 楼 于2014-03-09 14:53:34发表:这个函数返回选项字节 OptionByte 双字节的 你可以看看这个函数原型 返回的是u16
所以是在判断高字节,如果不等于0x42,那么写入0x42,注意后面编程函数数据是u8
谢谢
RE:关于映射的一个小问题
FLASH_ReadOptionByte(0x4803) ,FLASH读取出来的都是双字的,没有单字节的。
页:
[1]