R8C1B为什么不能进系统中断是什么进程

查看: 4498|回复: 3
STM8L103FP的外部中断 EXTIB 为什么会不停的执行中断程序?求高人指点
主题帖子精华
新手上路, 积分 34, 距离下一级还需 16 积分
在线时间0 小时
EXTIB中断B0-7任意一个端口接地,然后断开地,程序进入中断,但为什么还是会不停的执行中断函数EXTIB_IRQHandler()?第一次接触STM8L,求高人指点
//-----下降沿中断------
&EXTI_CR1=0xFF; // Port 3-0 0x00: Falling edge and low level 0x55: Rising edge only 0xAA: Falling edge only 0xFF: Rising and falling edge
&EXTI_CR2=0xFF; // Port 7-4 0x00: Falling edge and low level 0x55: Rising edge only 0xAA: Falling edge only 0xFF: Rising and falling edge
&EXTI_CR3=0x0F; // port B D 0x00: Falling edge and low level 0x05: Rising edge only 0x0A: Falling edge only 0x0F: Rising and falling edge
&EXTI_SR1=0x00; // 清Portx 中断
&EXTI_SR2=0x00; // 清PortB D 中断
&EXTI_CONF=0x07; //PD0 PB0-7 选择 EXTID EXTIB 中断
//------------Port def-------------------
 A_DDR = 0x0D; // PA023输出,PA1输入
 A_CR1 = 0x0F; // 上拉输入
 A_CR2 = 0x00; // External interrupt disabled
 A_ODR = 0x0C; // PA2-3 H& PA0 L
PB_DDR = 0x00; // PB0-7输入
 B_CR1 = 0xFF; // 0xFF 上拉输入
 B_CR2 = 0xFF; // PB0-7 开中断External interrupt enabled
//------------中断函数--------------------------------
@far @interrupt void EXTIB_IRQHandler(void){ //
&&&&//EXTI_SR1=0x00; // 清Portx 中断& 好像不起作用
&&&&EXTI_SR2=0x00; // 清PortB D 中断& 好像不起作用
&&& A_ODR = PA_ODR ^ 0x01; // 示波器接PA0 可以查看中断状态& 发现不停的执行
楼主应该是没有正确地在中断程序里清除对应口线的中断状态
参考手册里说明需要写入“1”来清除中断状态
主题帖子精华
高级会员, 积分 597, 距离下一级还需 403 积分
在线时间53 小时
楼主应该是没有正确地在中断程序里清除对应口线的中断状态
7a1b6f.gif (0 Bytes, 下载次数: 0)
22:54 上传
参考手册里说明需要写入“1”来清除中断状态
主题帖子精华
新手上路, 积分 34, 距离下一级还需 16 积分
在线时间0 小时
回复【2楼】2012lc:
---------------------------------
非常感谢,确实应该写1才对!
主题帖子精华
初级会员, 积分 116, 距离下一级还需 84 积分
在线时间10 小时
Powered by查看: 5832|回复: 3
STM8L的TIM1无法进入中断
主题帖子精华
新手上路, 积分 25, 距离下一级还需 25 积分
在线时间0 小时
&&& CLK_PeripheralClockConfig(CLK_Peripheral_TIM1, ENABLE);
&& &TIM1_TimeBaseInit(8, TIM1_CounterMode_Up, 1000, 0);
&& &TIM1_UpdateDisableConfig(ENABLE);
&& &TIM1_UpdateRequestConfig(TIM1_UpdateSource_Regular);
&& &enableInterrupts();//使能全局中断
&& &TIM1_ITConfig(TIM1_IT_Update, ENABLE);
&& &TIM1_Cmd(ENABLE);
不知道为何进不了中断。。。是哪里配置错还是什么。。。请大侠帮忙看看
主题帖子精华
金钱115123
在线时间865 小时
可以仿真一下看看么?
这是我的STM8S的代码:
//定时器2中断服务函数
INTERRUPT_HANDLER(TIM2_UPD_OVF_IRQHandler,TIM2_UPD_OVF_VECTOR)
{
static&u8&t=0;
TIM2-&SR1&=~(1&&0); //清零更新中断标志&
EXBEEP_SET(t);
}&
//定时器2.中断初始化代码
//定时时间:&(arr+1)*(2^psc)/Fmaster
//psc:分配系数,0~15;分频系数为:2^psc,最大为2^15=32768分频
//arr:自动重装载值
void&TIM2_INT_Init(u8&psc,u16&arr)
{
& CLK->CKENR1|=1&&5; //开启TIM2时钟
TIM2->SCR=
//2^psc次方分频
TIM2-&ARRH=arr&&8; //必须先设置ARR的高字节
TIM2-&ARRL=arr&0XFF;//再设置低字节
TIM2-&CR1=1&&7;
//预装载使能
TIM2-&IER=1&&0;
//使能更新中断
TIM2-&CR1=1&&0;
//使能TIM2&
ITC_Set(TIM2_UPD_OVF_VECTOR,2); //优先级2
}
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
新手上路, 积分 33, 距离下一级还需 17 积分
在线时间1 小时
你如何判断出不进中断的?
中断函数里记得清中断标志&TIM1_SR1&=&0x00;
stm8_interrupt_vector.c定时器中断向量配置了?{0x82,&TIM1_OVER_Int},&/*&irq11&*/
主题帖子精华
新手上路, 积分 45, 距离下一级还需 5 积分
在线时间0 小时
楼主问题解决了吗?也遇到这个问题了,TIM中断老进不去,用查询的方式能发现时钟更新了,但是中断就是进不去!
Powered by

参考资料

 

随机推荐