发新帖我要提问
12
返回列表
打印
[STM8]

STM8的Flash访问求助

[复制链接]
楼主: kill3393913
手机看帖
扫描二维码
随时随地手机跟帖
21
明月小厨| | 2012-12-12 11:59 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 明月小厨 于 2012-12-12 12:03 编辑

POINTERS AND MEMORY TYPES
Pointers are used for referring to the location of data. In general, a pointer has a type.
For example, a pointer that has the type int * points to an integer.
In the compiler, a pointer also points to some type of memory. The memory type is
specified using a keyword before the asterisk. For example, a pointer that points to an
integer stored in huge memory is declared by:
int __huge * MyPtr;
Note that the location of the pointer variable MyPtr is not affected by the keyword. In
the following example, however, the pointer variable MyPtr2 is placed in tiny memory.
Like MyPtr, MyPtr2 points to a character in far memory.
char __far * __tiny MyPtr2;//
char 是指针针向的对象是什么数据类型;
__far 是指针针向的对象在哪个区域;
__tiny 指针自己放在什么区域;
和KEIL是不是有些相似啊~~~~~~~
For example, the functions in the standard library are all declared without explicit
memory types.
相关函数的指针也有特别之处,和KEIL差别比较大的;

使用特权

评论回复
22
明月小厨| | 2012-12-12 12:05 | 只看该作者
明月小厨 发表于 2012-12-12 11:59
POINTERS AND MEMORY TYPES
Pointers are used for referring to the location of data. In general, a poi ...

顺便提一下;char的默认类型就是unsigned char;但int不是这样.

使用特权

评论回复
23
小农wz| | 2012-12-12 14:44 | 只看该作者

使用特权

评论回复
24
小农wz| | 2012-12-12 14:44 | 只看该作者

使用特权

评论回复
25
xingjunhui0| | 2015-5-6 14:25 | 只看该作者
我也遇到这个问题,0x10000后写入失败,现将原因总结一下:
1:不要用FLASH_DeInit();来初始化FLASH,那样还是写不进去,注释掉就好了,原因还没有细看。
2:库函数FLASH_ProgramByte(uint32_t Address, uint8_t Data) 坑爹,在里面强制将32位的地址转变为16位,导致高地址丢失,重新修改为32位即可。
交流QQ:2627919898

使用特权

评论回复
26
wlgazxm| | 2015-12-26 11:02 | 只看该作者
xingjunhui0 发表于 2015-5-6 14:25
我也遇到这个问题,0x10000后写入失败,现将原因总结一下:
1:不要用FLASH_DeInit();来初始化FLASH,那样还 ...

xingiunhui0的总结是正确的,本人按其总结修改后写入成功。看来不能迷信例程,浪费了我近一周时间。

使用特权

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

本版积分规则