我有一个
STM32f030k6t6,我希望设置一个定时器(在本例中为
tiM16),每次定时器中断时,GPIO 引脚都会切换。我附上时钟配置。
这是我的 tim16 配置
- htim16.Instance = TIM16;
- htim16.Init.Prescaler = 10;
- htim16.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim16.Init.Period = 44236;
- htim16.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim16.Init.RepetitionCounter = 0;
- htim16.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
- if (HAL_TIM_Base_Init(&htim16) != HAL_OK)
- {
- Error_Handler();
- }
这是定时器的开始
- if(HAL_TIM_Base_Start_IT(&htim16)!=HAL_OK)//
- {
- Error_Handler();
- }
最后是定时器中断和 GPIO 切换
- void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
- {
- if (htim->Instance == TIM16)
- {
- HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_3);
- }
- }
现在有趣的是,因为我已经将定时器设置为每 10 毫秒中断一次,但是当我使用示波器时,每个定时器中断显示为 4 毫秒。
那是为什么呢?