打印

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

[复制链接]
4656|10
手机看帖
扫描二维码
随时随地手机跟帖
沙发
杨爱林林| | 2013-4-26 15:59 | 只看该作者
中断入口地址错误。。你先把所有中断关掉试试看

使用特权

评论回复
板凳
杨爱林林| | 2013-4-26 16:00 | 只看该作者

使用特权

评论回复
地板
holylaplace|  楼主 | 2013-4-26 16:25 | 只看该作者
杨爱林林 发表于 2013-4-26 15:59
中断入口地址错误。。你先把所有中断关掉试试看

这跟启动文件没关系是么?

使用特权

评论回复
5
杨爱林林| | 2013-4-26 16:39 | 只看该作者
应该是你程序的问题  
启动文件  就是用来确定函数入口地址的
现在跳到SWI_Handler B SWI_Handler  分明是进入swi中断里面去了  
所以你先在main里面设个断点 是先进main  还是先进swi中断

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
holylaplace + 1 很给力!
6
杨爱林林| | 2013-4-26 16:42 | 只看该作者
holylaplace 发表于 2013-4-26 16:25
这跟启动文件没关系是么?

SWI_Handler     B       SWI_Handler
代表的是  软中断  的入口
肯定是你在main里面的某个地方 触发了这个中断
要不你先把main 清空
main
{
while(1);
}  应该不会跳进去了

使用特权

评论回复
7
holylaplace|  楼主 | 2013-4-26 16:53 | 只看该作者
杨爱林林 发表于 2013-4-26 16:42
SWI_Handler     B       SWI_Handler
代表的是  软中断  的入口
肯定是你在main里面的某个地方 触发了 ...

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

使用特权

评论回复
8
杨爱林林| | 2013-4-26 17:03 | 只看该作者
对的 就是那句
#define IRQEnable() SwiHandle1(1)
去掉就ok了

使用特权

评论回复
9
holylaplace|  楼主 | 2013-4-26 17:10 | 只看该作者
杨爱林林 发表于 2013-4-26 17:03
对的 就是那句
#define IRQEnable() SwiHandle1(1)
去掉就ok了

是要加上#define IRQEnable() SwiHandle1(1)这句么?

使用特权

评论回复
10
杨爱林林| | 2013-4-26 17:13 | 只看该作者
不是哦 去掉 IRQEnable(); 就ok了

ps
#define IRQEnable() SwiHandle1(1)
IRQEnable();  开了swi中断  
而你swi中断又没有实际代码 所以死在那里

使用特权

评论回复
11
holylaplace|  楼主 | 2013-4-26 19:28 | 只看该作者
杨爱林林 发表于 2013-4-26 17:13
不是哦 去掉 IRQEnable(); 就ok了

ps

解决了 搞不懂为什么

使用特权

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

本版积分规则

2

主题

9

帖子

0

粉丝