我想做个定时器中断1秒LED灯
我想做个定时器中断1秒LED灯
这是我的TIM2配置
void MX_TIM2_Init(void)
{
TIM_ClockConfigTypeDef sClockSourceConfig;
TIM_SlaveConfigTypeDef sSlaveConfig;
TIM_MasterConfigTypeDef sMasterConfig;
htim2.Instance = TIM2;
htim2.Init.Prescaler = 35999;
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 2000;
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim2.Init.RepetitionCounter = 0;
HAL_TIM_Base_Init(&htim2);
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig);
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_RESET;
sSlaveConfig.InputTrigger = TIM_TS_ITR0;
HAL_TIM_SlaveConfigSynchronization(&htim2, &sSlaveConfig);
sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig);
}
这是我的回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
}
怎么都不工作
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
{
if(htim_base->Instance==TIM2)
{
/ USER CODE BEGIN TIM2_MspInit 0 /
/ USER CODE END TIM2_MspInit 0 /
/ Peripheral clock enable /
__TIM2_CLK_ENABLE();
/ System interrupt init/
HAL_NVIC_SetPriority(TIM2_IRQn, 3, 0);
HAL_NVIC_EnableIRQ(TIM2_IRQn);
/ USER CODE BEGIN TIM2_MspInit 1 /
/ USER CODE END TIM2_MspInit 1 /
}
}
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
{
if(htim_base->Instance==TIM2)
{
/ USER CODE BEGIN TIM2_MspDeInit 0 /
/ USER CODE END TIM2_MspDeInit 0 /
/ Peripheral clock disable /
__TIM2_CLK_DISABLE();
/ Peripheral interrupt DeInit/
HAL_NVIC_DisableIRQ(TIM2_IRQn);
/ USER CODE BEGIN TIM2_MspDeInit 1 /
/ USER CODE END TIM2_MspDeInit 1 /
}
}
7 个回复
admin
赞同来自: adamancy
夕阳泪
赞同来自:
тαгκёlc
赞同来自: 离弦的箭 、幻月
wuqiling - 新手
赞同来自:
sleaven
赞同来自:
nathanlnw
赞同来自:
HAL_TIM_Base_Start_IT(&htim3); 配置了也不工作
E li - 90后,IT
赞同来自:
请问我一开定时器就进了中断是怎么回事,个人感觉是中断使能位置位了,但是不知道怎么清除这个,HAL版本的不知道怎么清除。请问有做过的吗?想请教一下。