你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
飞翼我的心 发表于 2016-11-24 14:03 void TIM4_Init(void) { TIM4_IER=0X00;
查看全部评分
霹雳之火 发表于 2016-11-24 13:49 楼主把关键部分代码贴出来吧
霹雳之火 发表于 2016-11-24 16:06 你用的是stm8吧,case 2中TIM4_IER=0X00是禁止中断吧 不过还是没理解楼主的意思。 PS 如果是stm8的问题 ...
飞翼我的心 发表于 2016-11-24 16:28 我看这边人气高点。。。就是我打算在主程序里禁止中断,正常来说关了后就回到主程序了,但是我的会偶尔性 ...
霹雳之火 发表于 2016-11-24 20:33 帮顶 stm8不是很熟 希望高手来看看 在中断程序里关闭中断 中断执行完了 应该会回到被中断的地方继续执行 ...
飞翔的荷兰人号 发表于 2016-11-25 09:00 你的程序里的flag只有1和2两种情况吗,如果不是需要在switch里面加一个default:break的语句,不然就会出现 ...
高二毛 发表于 2016-11-25 09:18 关注。。。。感觉逻辑没有问题,应该还是代码的问题。
你用的是stm8吧,case 2中TIM4_IER=0X00是禁止中断吧 不过还是没理解楼主的意思。
PS 如果是stm8的问题 最好可以到stm8板块进行提问
评分
查看全部评分
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后关闭中断回到主程序,但是偶尔性的会出现无法启动
我看这边人气高点。。。就是我打算在主程序里禁止中断,正常来说关了后就回到主程序了,但是我的会偶尔性出现程序停掉或者复位的情况
帮顶 stm8不是很熟 希望高手来看看 在中断程序里关闭中断 中断执行完了 应该会回到被中断的地方继续执行吧
中断使能位置零意思就是不再进入中断了对吧,谢谢斑竹
评分
查看全部评分
是的,只有1,2两种情况
评分
查看全部评分
是不是不应该在中断里禁止中断啊,我感觉这样不太合理啊,本人小白
{
case 1:
count14++;
if(count14==3)
{PWMOFF2();}
if(count14==4)
{PWMON();count14=0}
break;
case 2:
TIM4_IER=0X00;count14=0;break;
default:break; //应该加上这段代码吧?
}
评分
查看全部评分