打印
[STM8]

stm8s中断问题

[复制链接]
1382|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sang523|  楼主 | 2016-11-24 08:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
开启tim4定时器中断定时后,在主程序里我在某处中断使能位置零(TIM4_IER=0X00),正常来说应该返回到主程序中,但是出现单片机无法启动或者复位的情况,求解额
沙发
紫阳真人| | 2016-11-24 08:13 | 只看该作者
按理说不应该更新中断了

使用特权

评论回复
板凳
sang523|  楼主 | 2016-11-24 10:39 | 只看该作者
紫阳真人 发表于 2016-11-24 08:13
按理说不应该更新中断了

这种情况是偶尔性的出现

使用特权

评论回复
地板
500days| | 2016-11-24 19:03 | 只看该作者
电源稳定吗?

使用特权

评论回复
5
sang523|  楼主 | 2016-11-24 20:31 | 只看该作者

你意思输入电压不稳定就会出现这种情况?

使用特权

评论回复
6
仙景| | 2016-11-25 08:42 | 只看该作者
不会的,中断保护,中断嵌套都做的很好,只是有时,多中断触发,会有数据异常,但是处理的时序不会变的。至于你这种情况,可能是程序有问题,也很可能是电压不稳,干扰环境。

使用特权

评论回复
7
yichunshan| | 2016-11-25 09:01 | 只看该作者
不知道你程序的逻辑是什么样的。
我的做法一般是主程序里面开启中断,关闭中断则在该中断函数里面。

使用特权

评论回复
8
sang523|  楼主 | 2016-11-25 12:02 | 只看该作者
yichunshan 发表于 2016-11-25 09:01
不知道你程序的逻辑是什么样的。
我的做法一般是主程序里面开启中断,关闭中断则在该中断函数里面。 ...

void TIM4_Init(void)
{
   TIM4_IER=0X00;
   TIM4_PSCR=0X04;
   TIM4_CNTR=0X00;
   TIM4_ARR=0X09;
   TIM4_IER=0X01;
   TIM4_CR1=0X01;
}
#define TIM4_OVR_UIF_vector 0x19
#pragma vector=TIM4_OVR_UIF_vector
__interrupt void TIM4_OVR_UIF_IRQHandler(void)
{
  TIM4_SR=0X00;
  switch(flag)
{
  case 1:
count14++;
if(count14==3)
{PWMOFF2();}
if(count14==4)
{PWMON();count14=0}
break;
case 2:
TIM4_IER=0X00;count14=0;break;
}
}
正常应该在case 2后关闭中断回到主程序,但是偶尔性的会出现无法启动或者复位

使用特权

评论回复
9
yichunshan| | 2016-11-25 12:28 | 只看该作者
几个问题希望楼主想想哈:
1,通常,进入中断后都会先关闭中断,执行中断代码,执行完毕开启中断,返回堆栈位置继续执行。请问你的中断函数执行时间如何?尤其 是你在中断函数里面还调用了其他函数如PWMON()。如何确保在中断函数内容执行的是时候不会有新的中断产生?
2,switch里面最好加个default,也不碍事不是?
3,主程序里关断中断是做什么?如果不用定时器 了干脆连计时器都关断: TIM4_CR1  &=0xfe;

其实我觉得还是中断的时序方面有问题,尤其是关闭中断是时间要正确。


以上基于我自己的理解,请楼主斟酌

使用特权

评论回复
10
randy521| | 2016-11-25 19:53 | 只看该作者
yichunshan 发表于 2016-11-25 12:28
几个问题希望楼主想想哈:
1,通常,进入中断后都会先关闭中断,执行中断代码,执行完毕开启中断,返回堆栈 ...

进入中断后 开闭中断是51的习惯吧?进入中断后执行RIM SIM等指令不是会影响中断优先级吗?

使用特权

评论回复
11
sang523|  楼主 | 2016-11-26 09:14 | 只看该作者
yichunshan 发表于 2016-11-25 12:28
几个问题希望楼主想想哈:
1,通常,进入中断后都会先关闭中断,执行中断代码,执行完毕开启中断,返回堆栈 ...

先谢谢了,我这用的是定时中断,定时多久就执行中断函数,执行时间应该很小,微秒级的,我如果在主程序里中断使能位和计数器位置零不就意味着不再进入中断了吗

使用特权

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

本版积分规则

17

主题

133

帖子

2

粉丝