打印
[STM8]

STM8S的TIMER4不能进中断的解决办法

[复制链接]
2085|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本人在调试STM8S103的程序时,timer4的中断一直进不去,其他都是好的,捉摸了大半天终于搞定,现总结如下,希望对大家能有帮助。我的程序时基于ST的固件库写的,库版本为4.0。定时器中断的配置分以下几步:
1、时基的设定,即分频系数和计数值。2、清timer4的事件更新标志。3、使能timer4中断4、使能全局中断。5、使能TIM4。具体代码如下:
void TIM4_Config(void)
{
         /* Time base configuration */
  TIM4_TimeBaseInit(TIM4_PRESCALER_128, 0xFF);
  /* Clear TIM4 update flag */
  TIM4_ClearFlag(TIM4_FLAG_UPDATE);
  /* Enable update interrupt */
  TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
  
  /* enable interrupts */
  enableInterrupts();

  /* Enable TIM4 */
  TIM4_Cmd(ENABLE);
}
然后是在stm8_interrupt_vector.c中设置中断向量表,在开头声明中断函数extern @far @interrupt void TIM4_UPD_OVF_IRQHandler(void);中断向量表的irq23换成中断函数名        {0x82, (interrupt_handler_t)TIM4_UPD_OVF_IRQHandler}, /* irq23 */这就可以了
中断函数写在主函数的文件中,void main()
{
        TIM4_Config();
       
        while (1)
        {
                while_count++;
        }
}

@far @interrupt void TIM4_UPD_OVF_IRQHandler (void)
{
        int_count++;
        TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
        //return;
}
沙发
309030| | 2015-10-8 20:33 | 只看该作者
楼主是在哪里出问题了,怎么解决的

使用特权

评论回复
板凳
aaa1125456| | 2015-10-12 16:30 | 只看该作者
CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER4, ENABLE);
TIM4_DeInit();
TIM4_TimeBaseInit(TIM4_PRESCALER_128, 0xff);
TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
TIM4_Cmd(ENABLE);
enableInterrupts();

顺便看下晶振有没有设置好

使用特权

评论回复
地板
拉克丝| | 2015-10-12 19:24 | 只看该作者
清timer4的事件更新标志经常忘

使用特权

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

本版积分规则

1

主题

12

帖子

0

粉丝