完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一个标题是在是难以说明所遇问题。(其实我这个问题是在调试一个中断程序出现的,然后进行分解,研究,最后确定中断重启有可能就是此贴问题。)
我现在用汇编写代码,然后调用C语言函数,但是如果这个C语言函数没有调用其他C函数,就可以正常运行。如果一旦调用,就会重新启动,但运行到这又会重新启动,就这样,无休止循环下去,他后面的代码也不能够进行了。 ***注明: 用的是mini2440,烧写nor Flash 代码如下 : .text .global _start _start: b Reset Reset: ldr sp, =4000 ldr r1, =0x53000000 @关看门狗 ldr r2, =0 str r2, [r1] bl Init bl led1_on bl led2_on bl deep_on loop: b loop #include"2440_addr.h" //void delay(void); void Init(void) { GPBCON=0XFFFD57FD; GPBDAT=0XFFFFFFFE; } void led1_on(void) { GPBDAT=(~(1<<5))-0x00000001; //一旦执行这句话,就会只有第一个灯亮 } void led2_on(void) { // delay(); //问题就出在这里,如果把delay屏蔽,可以正常运行,蜂鸣器响。但是如果不屏蔽,现象就是:同是1,2,两个灯都亮,蜂鸣器不想。结论就是重启 GPBDAT=(~(1<<6))-0x00000001; //一旦执行这句话,就只有第二个灯亮。 } void delay(void) { int i,k; for(i=1000;i>0;i--) for(k=1000;k>0;k--); } void deep_on(void) { GPBDAT=1; } 不仅仅是调用delay函数这个样子,比如说把led2_on用led1_on调用,然后汇编里面只调用bl led1_on同样会出现这样现象。 反过来,如果把led1_on,led2_on,delay分别用汇编调用,他们之间没有任何嵌套,是可以正常运行。 还有一个问题。同一个c文件两个函数,不能够共享同一个全局变量。 代码: int i; void a(void) { if(i==2) {xxxxxx} //在汇编里面先调用b,再调用a,是不能够进入if里面的。 } void b(void ) { i=2; } 这一系列奇葩问题,都是调中断遇到的。(http://www.100ask.org/bbs/forum.php?mod=viewthread&tid=12147&extra=page%3D1 今天上午提问的) 已经使用了浑身解数了,问题没有解决,越来越多了,还恳请大神指点迷津啊。 |
|
相关推荐
5个回答
|
|
问题原理在高人指点下,已解决。正在调试,等成功后在跟帖介绍。
|
|
|
|
求经验。。。
|
|
|
|
首先向大家说一声:对不起。
由于解决问题之后,还没有调试就放假回家了,家里没网,所以一直没有来回复。 言归正传: 这两个帖子一切问题起源于NOR FLASH不能很随意的写入,如果想写入,是需要命令的。当调用C语言时,就存在入栈问题,及想nor Flash 写入数据,如果不用命令,就会出错。 解决的办法是将栈地址设置为0x40000000以上,因为当从nor启动时,片内SRAM地址设置为0x40000000,。SRAM是可以写入的。 多说一句,SRAM从NAND启动时,就是启动石了,stepstone;他的起始地址为0. sram分布图可看datasheet 第五章memory |
|
|
|
试验里的代码都是在nandflash中,会自动拷贝到起步石中,所以以上代码在nand中是可以执行。。主要还是nor启动时你的sdram没有初始化,没有堆栈,C语言无法运行。。。
|
|
|
|
帅哥,我这个代码不需要SDRAM的参与。程序小的可怜,用不到SDRAM
|
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2181 浏览 6 评论
1983 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4541 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 06:21 , Processed in 0.734585 second(s), Total 86, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号