STM32
直播中

凤毛麟角

8年用户 918经验值
私信 关注
[问答]

为什么STM8S003F3进不了TIM1中断?

第一次中STM8S003F3的中断,用的是固件库,其他还好,当想用中断,弄了半天也进不了定时中断,

定时器初始
void tiMER1_Init(void)  
{  
  CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1, ENABLE);//开时钟  
  TIM1_DeInit();
  TIM1_Cmd(DISABLE);  
  TIM1_TimeBaseInit(16,TIM1_COUNTERMODE_UP,1000,0);     //16分频,向上计数,每1ms定时中断一次, 重复计数器值为0     
  TIM1_ARRPreloadConfig(ENABLE);
  TIM1_ITConfig(TIM1_IT_UPDATE , ENABLE);  
  
  TIM1_Cmd(ENABLE);  
}  


stm8s_it.c 的中断入口:

INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11)
{
  /* In order to detect unexpected events during development,
     it is recommended to set a breakpoint on the following instruction.
  */
  
//  TIMER1_Decrement();  
  TIM1_ClearITPendingBit(TIM1_IT_UPDATE);  
}




主函数:

void main(void)
{

#include "stm8s.h"


     TIMER1_Init();
     enableInterrupts();   

  while(1)
  {}

}


用IAR for stm8 ,编译,软件仿真,怎么搞也进不了定时1的中断。
到底漏了什么呢??

回帖(1)

久醉不醒

2024-4-12 16:14:35
出现这种情况可能有多个原因。以下是一些可能导致无法进入TIM1中断的常见问题:

1. 中断优先级设置不正确:确保已正确配置中断优先级,如果多个中断同时发生,确保TIM1中断优先级高于其他中断。

2. 中断使能未开启:在初始化函数中确保已使用TIM1_ITConfig函数将TIM1中断使能。

3. 时钟配置错误:确保已正确配置时钟频率,使得TIM1能够工作。检查是否正确调用了CLK_PeripheralClockConfig函数来开启TIM1的时钟。

4. 初始化函数的调用顺序不正确:确保在调用TIM1初始化函数之前已正确配置了时钟和GPIO引脚。

5. 中断标志未清除:在进入中断处理程序之前,确保已清除TIM1中断标志位。可以使用TIM1_ClearITPendingBit函数来清除中断标志。

如果上述问题都已解决,但仍无法进入TIM1中断,可以进一步检查其他可能的问题,如GPIO引脚的配置,或者检查是否有其他与TIM1相关的中断或功能会导致冲突。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分