Callback function for HAL_TIM_OnePulse_Start_IT?
How do I get a callback function for the HAL_TIM_OnePulse_Start_IT function?
I have a STM32G071 Nucleo board.
I whish to start a one-shot timer that calls an interrupt callback function when the time has elapsed. For this I have chosen the timer 6 and had the CubeMX, to generate the code:
static void MX_TIM6_Init(void)
{
/* USER CODE BEGIN TIM6_Init 0 */
/* USER CODE END TIM6_Init 0 */
TIM_MasterConfigTypeDef sMasterConfig = {0};
/* USER CODE BEGIN TIM6_Init 1 */
/* USER CODE END TIM6_Init 1 */
htim6.Instance = TIM6;
htim6.Init.Prescaler = 3;
htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
htim6.Init.Period = 40000;
htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
{
Error_Handler();
}
if (HAL_TIM_OnePulse_Init(&htim6, TIM_OPMODE_SINGLE) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM6_Init 2 */
/* USER CODE END TIM6_Init 2 */
}I have then tried to start the timer with:
HAL_TIM_OnePulse_Start_IT(&htim6, TIM_CHANNEL_6);and then tried to get the ISR to toggle the LED with this code:
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *TimHandle){
HAL_GPIO_TogglePin(LED4_GPIO_Port, LED4_Pin);
}And this code:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *TimHandle){
HAL_GPIO_TogglePin(LED4_GPIO_Port, LED4_Pin);
}But none of these are working.
What am I doing wrong?