Timer STM32定时器中断

Timer STM32定时器中断,timer,interrupt,stm32,Timer,Interrupt,Stm32,我试图在STM32L073中使用定时器外围设备,但我有问题。 我已经在STM32Cube中生成了安装代码,并且只使用HAL API提供的函数。问题是,计时器中断只发生一次,并且应该总是发生,然后溢出。我甚至不知道计时器是否正在运行,或者我的设置是否错误(我认为这不应该,因为我使用的是多维数据集生成的代码)。有人能帮忙吗 这在main before while循环中调用 void MX\u TIM7\u Init(void){ TIM_ClockConfigTypeDef sClockSource

我试图在STM32L073中使用定时器外围设备,但我有问题。 我已经在STM32Cube中生成了安装代码,并且只使用HAL API提供的函数。问题是,计时器中断只发生一次,并且应该总是发生,然后溢出。我甚至不知道计时器是否正在运行,或者我的设置是否错误(我认为这不应该,因为我使用的是多维数据集生成的代码)。有人能帮忙吗

这在main before while循环中调用

void MX\u TIM7\u Init(void){
TIM_ClockConfigTypeDef sClockSourceConfig;
TIM_MasterConfigTypeDef sMasterConfig;
htim7.Instance=TIM7;
htim7.Init.Prescaler=00;
htim7.Init.CounterMode=TIM\u CounterMode\u UP;
htim7.Init.Period=00;
if(HAL_TIM_Base_Init(&htim7)!=HAL_OK){
错误处理程序();
}
sMasterConfig.MasterOutputTrigger=TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode=TIM\u MasterSlaveMode\u DISABLE;
如果(HAL\u TIMEx\u主配置同步(&htim7和&sMasterConfig)!=HAL\u正常){
_错误\处理程序(\文件\行\行\行);
}
}
BaseMspInit方法

void HAL_TIM_Base_MspInit(TIM_HandleTypeDef*TIM_baseHandle){
if(tim_baseHandle->Instance==TIM7){
/*用户代码开始TIM7\u MspInit 0*/
/*用户代码结束TIM7\u MspInit 0*/
/*外围时钟使能*/
__HAL_RCC_TIM7_CLK_ENABLE();
/*TIM7中断初始化*/
HAL_NVIC_SetPriority(TIM7_IRQn,0,0);
HAL_NVIC_EnableIRQ(TIM7_IRQn);
/*用户代码开始TIM7\u MspInit 1*/
/*用户代码结束TIM7\u MspInit 1*/
}
}
那么大体上我称之为

HAL_utim_Base_Start IT(&htim7);
谁在做这个

HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef*htim){
/*检查参数*/
assert_param(是_TIM_实例(htim->INSTANCE));
/*启用TIM更新中断*/
__HAL_TIM_ENABLE_IT(htim、TIM_IT_UPDATE);
/*启用外围设备*/
__HAL_TIM_ENABLE(htim);
/*返回函数状态*/
返回HAL_OK;
}
我的中断处理程序调用PeriodElapsedCallback

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef*htim){
HAL_GPIO_开关引脚(led_GPIO_端口,led_引脚);
}
它编译没有错误没有警告,在调试器中我看到这个中断只触发一次,然后再也不会触发。期待答案


p.S.使用SEGGER Embedded Studio时,溢出会在每个时钟发生,因为您没有设置ARR

您的溢出会在每个时钟发生,因为您没有设置ARR

首先,您需要将这些参数设置为目标时段

时钟源的预分频器(检查哪条总线):

发生ISR时需要计算多少计时器:

htim7.Init.Period = 00;

首先,您需要将这些参数设置为目标时段

时钟源的预分频器(检查哪条总线):

发生ISR时需要计算多少计时器:

htim7.Init.Period = 00;

这就是为什么午夜过后你不应该做任何新的事情。。谢谢你,这就是为什么你不应该在午夜之后做任何新的事情。。谢谢是的,这也是正确的答案。我真傻。。。谢谢是的,这也是正确的答案。我真傻。。。非常感谢。