2019-10-15 04:13发布
ycc1169 发表于 2016-8-8 11:45 用POS机改造,不错哦,估计是很串口的某种协议和isp的环境有关
正点原子 发表于 2013-11-8 10:24 只能说你理解不够透彻。 51这样是一锅煮,什么都连接在一起,你串口输出的时候,AD也连上了,中断也连上了 ...
最多设置5个标签!
嗯。
可是自己也没本事去修改固件,只有期待以后能有更好的固件共享吧。
再,昨天稍稍研究了一下怎样让程序下载运行于RAM,也成功了!这样,也不必担心之前重新用串口烧录的问题了。挺好的!
不过啊,在RAM中进行仿真,我发现不能按Debug窗口中“Reset”进行复位,如果这样了,程序就重新进ROM运行了,只有退出Debug,再次Download后进Debug才能正常。(也许小白的话让大虾们感觉不知所云……)
我所用的Debug初始化信息文件内容是这样的:
FUNC void Setup (void){SP =_RDWORD(0x20000000); //Setup Stack Pointer
PC =_RDWORD(0x20000004); //Setup Program Counter
_WDWORD(0xE000ED08,0x20000000); // Setup VectorTable Offset Register
}LOAD .RAMOUTLED.axfINCREMENTAL //Download axf文件
Setup(); //调用Setup()
g,main //跳转到main
不知兄台可否帮我讲讲这“SP”、“PC”堆栈指针、程序计数器必须设置成这样的初始值么?是什么道理呢?
我做好设置后,只要按“Debug”按钮即可进入RAM的运行调试,可这样根本不行,程序无法运行;而只有在之前按了“Download”按钮,再进Debug,一切就正常了!
按理说来,这初始化信息文件中已经有一条“LOAD”命令了啊?意思不就是装载了目标文件了么?怎么不行呢?是不是上边的这些“SP”、“PC”初始值不对引起的么?
如果不是,那是不是说明这个“LOAD”与MDK中的“Download”按钮的作用有区别?
……看来,这个帖子快成我的帖子了……
再次感谢兄台!
纠结了好久的复用功能,被你们这么一干起来明白透彻了,原子哥解释完美!
原子哥,你用什么51内核的,串口和AD连到一起了?
还有,51的串口使能的时候和STM32一样,也是切开的。
STM32就是51和AVR机制后期衍生出来的
原子哥单片机还得学呀,嘿嘿
一周热门 更多>