用C怎么写

[复制链接]
1272|26
 楼主| zhenykun 发表于 2017-3-5 22:52 | 显示全部楼层 |阅读模式
void (*reset)(void)=0x00000000;
假入我现在想把reset();放在从0x00000400处开始的位置,请问用C怎么写???

编译环境是GCC+studio
lizye 发表于 2017-3-5 22:53 | 显示全部楼层

汇编格式 指明一下代码的位置。
C就不用指明位置了,编译器自动处理。所以说C方便嘛
 楼主| zhenykun 发表于 2017-3-5 22:55 | 显示全部楼层
楼上没明白我的意思啊
jiahy 发表于 2017-3-5 22:57 | 显示全部楼层
难道你是想在400H的位置调用reset程序
这要绝对定位了
用汇编比较好,C的话没有标准方法,取决于编译器
 楼主| zhenykun 发表于 2017-3-5 23:03 | 显示全部楼层

我想在未用地址多插入几条reset();实现软复位

winavr+studio里面不知道怎么实现

或者烧写芯片的时候可以填充JMP  0x00000000吗???
liliang9554 发表于 2017-3-5 23:05 | 显示全部楼层
这个你得研究一下编译器的手册,不然直接用汇编操作吧
shimx 发表于 2017-3-5 23:06 | 显示全部楼层

void (*reset)(void)=0x00000400;
这样不可以吗?
 楼主| zhenykun 发表于 2017-3-5 23:08 | 显示全部楼层

我是要把reset();存放在0x00000400开始的地址

不是运行reset();就让PC指向0x00000400
shimx 发表于 2017-3-5 23:10 | 显示全部楼层
void (*reset)(void)不是空返回值的吗,不对吧!
jiaxw 发表于 2017-3-5 23:14 | 显示全部楼层
在链接的时候指定吧
jiaxw 发表于 2017-3-5 23:16 | 显示全部楼层
这个用法在C标准里面是未定义的,就是说取决于编译器与硬件。
jiaxw 发表于 2017-3-5 23:19 | 显示全部楼层
楼主这个问题这么些人都答不上来 那么说明你这个问题可能本身没啥意义 可能是走上歧途了 方法有问题 思路有问题
午夜粪车 发表于 2017-3-5 23:21 | 显示全部楼层
连我这个C语言高人(据说现在大部分人不敢说自己精通C语言,但是本人不仅仅是精通C,而是极其精通C语言) 都没看明白

建议换个方法........
zhaoxqi 发表于 2017-3-5 23:22 | 显示全部楼层
高人:有一段代码,我就是想把这段代码从指定地址开始存放
就这样
dengdc 发表于 2017-3-5 23:26 | 显示全部楼层
把reset设为全局变量,然后用链接脚本指定存放位置和运行位置就OK了啊
liliang9554 发表于 2017-3-5 23:28 | 显示全部楼层
也可以参照中断函数入口的处理方法。
huangchui 发表于 2017-3-5 23:30 | 显示全部楼层
这不是c语言的问题,这是linker的问题。
zhanghqi 发表于 2017-3-5 23:32 | 显示全部楼层
那个函数单独列一个文件,链接的时候对那个文件指定运行地址就OK了

思路明白了吧?至于怎么操作,去翻翻书或者网上搜一把
jiajs 发表于 2017-3-5 23:34 | 显示全部楼层
还有,C语言里边的pragma预编译指令不知道能否直接实现这个功能,LZ自己翻阅以下相关资料吧,呵呵,pragma的功能我记得不是太全,也懒得去翻了
spark周 发表于 2017-3-5 23:40 | 显示全部楼层
我理解楼主的意思,楼主是为了系统万一崩溃的时候可以自动复位。
但这个用看门狗也是可以的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

868

主题

11535

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部