打印
[技术问答]

用M051如果想定义一个指针,初始化一个值,在哪个范围呢

[复制链接]
818|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mintspring|  楼主 | 2015-1-4 18:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mintspring 于 2015-1-4 18:30 编辑

用M051如果想定义一个指针,初始化一个值,在哪个范围呢
沙发
598330983| | 2015-1-4 18:38 | 只看该作者
指针就是地址,所以受地址长度限制。M051是32位地址,所以指针的值也是32位的。具体到某个芯片,指针的赋值要在FLASH或RAM空间内,超出范围,指向不存在物理空间,执行时会产生 HardFault 中断。

使用特权

评论回复
板凳
gaoyang9992006| | 2015-1-4 18:53 | 只看该作者
598330983 发表于 2015-1-4 18:38
指针就是地址,所以受地址长度限制。M051是32位地址,所以指针的值也是32位的。具体到某个芯片,指针的赋值 ...

谢谢及时回复,您辛苦了。

使用特权

评论回复
地板
598330983| | 2015-1-5 18:36 | 只看该作者
可以选择系统默认的位置,不用专门指定指针所在的地址位置。

使用特权

评论回复
5
niuyaliang| | 2015-1-6 17:42 | 只看该作者
这个问题还真没想过,如果用默认的话,都交给编译器了,你也可以指定地址到哪个空间

使用特权

评论回复
6
gaoyang9992006| | 2015-1-8 21:47 | 只看该作者
这个问题还是交给编译器的好,编译器根据芯片类型自动分配,保证不会错的。

使用特权

评论回复
7
gaoyang9992006| | 2015-1-8 21:48 | 只看该作者
有时候不要自作聪明修改默认,那样多了就会出错,总是没有计算机自动分配的更可靠。

使用特权

评论回复
8
gaoyang9992006| | 2015-1-8 21:48 | 只看该作者
话又说回来,如果你有十分的把握,可以自定义。

使用特权

评论回复
9
gaoyang9992006| | 2015-1-8 21:49 | 只看该作者
指针的赋值要在FLASH或RAM空间内,超出范围,指向不存在物理空间,执行时会产生 HardFault 中断。

使用特权

评论回复
10
gaoyang9992006| | 2015-1-8 21:49 | 只看该作者
指针如果越界了,就会一个错误的中断,你就要花费时间来编写代码处理这个错误,得不偿失。

使用特权

评论回复
11
mintspring|  楼主 | 2015-1-9 10:50 | 只看该作者
gaoyang9992006 发表于 2015-1-8 21:49
指针如果越界了,就会一个错误的中断,你就要花费时间来编写代码处理这个错误,得不偿失。 ...

所以现在都流行让系统自动分配,另外使用官方库函数。

使用特权

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

本版积分规则

288

主题

4837

帖子

24

粉丝