[ZLG-ARM] 中断问题!

[复制链接]
 楼主| graby 发表于 2007-12-1 22:05 | 显示全部楼层 |阅读模式
TI, vi, ic, ADDR, DDR
void&nbsp;__irq&nbsp;&nbsp;IRQ_Time0(void)<br />{&nbsp;uint32&nbsp;time;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;if(T0IR&0x00000001&nbsp;==&nbsp;1){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;清除中断标志&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;T0IR&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;time++;}<br />&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;通知VIC中断处理结束&nbsp;&nbsp;&nbsp;<br />}<br />我早调试的时候走单步,为什么time的值不变
王紫豪 发表于 2007-12-2 06:27 | 显示全部楼层

楼主,你的time是什么变量?

  
 楼主| graby 发表于 2007-12-2 09:07 | 显示全部楼层

中断问题

局部变量,我调的时候是在中断里调的。
LittleKen 发表于 2007-12-2 10:27 | 显示全部楼层

如果中断确实执行了

如果中断确实执行了,在对time的定义加上static&nbsp;,如果还不行,就加上volatile防止编译器优化的时候把time优化掉。
wzj4392234 发表于 2007-12-2 14:32 | 显示全部楼层

没有清除中断标志

改:<br />void&nbsp;__irq&nbsp;&nbsp;IRQ_Time0(void)<br />{&nbsp;uint32&nbsp;time;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;if(T0IR&0x00000001&nbsp;==&nbsp;1){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;清除中断标志&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;T0IR&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;time++;}<br />&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;通知VIC中断处理结束&nbsp;&nbsp;&nbsp;<br />}<br />&nbsp;<br />
zlgarm 发表于 2007-12-3 09:22 | 显示全部楼层

回复

这样再试一下:<br />void&nbsp;__irq&nbsp;&nbsp;IRQ_Time0(void)<br />{&nbsp;uint32&nbsp;time;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;if((T0IR&nbsp;&&nbsp;0x00000001)&nbsp;==&nbsp;1){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;清除中断标志&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;T0IR&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;time++;}<br />&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;通知VIC中断处理结束&nbsp;&nbsp;&nbsp;<br />}<br />原因:&&nbsp;&nbsp;运算符的优先级为:8<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;==&nbsp;运算符的优先级为:7<br />&nbsp;&nbsp;&nbsp;&nbsp;从你表达的意思上看,应该是按位与运算之后,再去判断是否等于1,&nbsp;&nbsp;所以加括号,括号的优先级最高。<br />
qihao 发表于 2007-12-3 15:01 | 显示全部楼层

呵呵 强烈反对不加括号的写作习惯

  
xwj 发表于 2007-12-3 15:37 | 显示全部楼层

看,不用括号吃亏了吧?

  
lucidmask 发表于 2007-12-3 16:20 | 显示全部楼层

括号又不要钱,就别省了

  
kernel99 发表于 2007-12-4 09:42 | 显示全部楼层

T0IR

T0IR&nbsp;=&nbsp;0;<br />是没意义的,应该改成T0IR&nbsp;=&nbsp;0X01;<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

59

帖子

0

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