用mdk时一直停在SWI_Handler B SWI_Handler不往下走怎么解决

[复制链接]
5034|10
 楼主| holylaplace 发表于 2013-4-26 15:49 | 显示全部楼层 |阅读模式
用mdk时一直停在SWI_Handler B SWI_Handler不往下走怎么解决,刚学arm不会弄啊
杨爱林林 发表于 2013-4-26 15:59 | 显示全部楼层
中断入口地址错误。。你先把所有中断关掉试试看
杨爱林林 发表于 2013-4-26 16:00 | 显示全部楼层
 楼主| holylaplace 发表于 2013-4-26 16:25 | 显示全部楼层
杨爱林林 发表于 2013-4-26 15:59
中断入口地址错误。。你先把所有中断关掉试试看

这跟启动文件没关系是么?
杨爱林林 发表于 2013-4-26 16:39 | 显示全部楼层
应该是你程序的问题  
启动文件  就是用来确定函数入口地址的
现在跳到SWI_Handler B SWI_Handler  分明是进入swi中断里面去了  
所以你先在main里面设个断点 是先进main  还是先进swi中断

评分

参与人数 1威望 +1 收起 理由
holylaplace + 1 很给力!

查看全部评分

杨爱林林 发表于 2013-4-26 16:42 | 显示全部楼层
holylaplace 发表于 2013-4-26 16:25
这跟启动文件没关系是么?

SWI_Handler     B       SWI_Handler
代表的是  软中断  的入口
肯定是你在main里面的某个地方 触发了这个中断
要不你先把main 清空
main
{
while(1);
}  应该不会跳进去了
 楼主| holylaplace 发表于 2013-4-26 16:53 | 显示全部楼层
杨爱林林 发表于 2013-4-26 16:42
SWI_Handler     B       SWI_Handler
代表的是  软中断  的入口
肯定是你在main里面的某个地方 触发了 ...

有个定时器的初始化程序到这里这个 IRQEnable();就转到死循环那里了
void Timer_0_init(void)
{
    IRQEnable();

杨爱林林 发表于 2013-4-26 17:03 | 显示全部楼层
对的 就是那句
#define IRQEnable() SwiHandle1(1)
去掉就ok了
 楼主| holylaplace 发表于 2013-4-26 17:10 | 显示全部楼层
杨爱林林 发表于 2013-4-26 17:03
对的 就是那句
#define IRQEnable() SwiHandle1(1)
去掉就ok了

是要加上#define IRQEnable() SwiHandle1(1)这句么?
杨爱林林 发表于 2013-4-26 17:13 | 显示全部楼层
不是哦 去掉 IRQEnable(); 就ok了

ps
#define IRQEnable() SwiHandle1(1)
IRQEnable();  开了swi中断  
而你swi中断又没有实际代码 所以死在那里
 楼主| holylaplace 发表于 2013-4-26 19:28 | 显示全部楼层
杨爱林林 发表于 2013-4-26 17:13
不是哦 去掉 IRQEnable(); 就ok了

ps

解决了 搞不懂为什么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

9

帖子

0

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