Coding Error
This is a portion of my product code, but i got some problem. When an external interrupt occurs i want to start a timer and increment one variable and when timer reaches 30 seconds i want to display the variable via UART. I will provide my code.
when i give the external interrupt my timer is working for 30 seconds but the variable is not getting incremented and displaying variable = 1 after 30 seconds via uart.
/* USER CODE BEGIN PV */
uint8_t ex_interrupt = 0;
uint32_t variable = 0;
uint32_t seconds = 0;
uint8_t uartBuffer[50];
/* USER CODE END PV */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
MX_TIM3_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
if(ex_interrupt == 1)
{
ex_interrupt = 0;
if (HAL_TIM_Base_Start_IT(&htim3) != HAL_OK)
{
/* Starting Error */
Error_Handler();
}
variable = variable + 1;
}
if(seconds == 30)
{
HAL_TIM_Base_Stop_IT(&htim3);
sprintf((char *)uartBuffer, "VARIABLE: %lu\r\n", variable);
HAL_UART_Transmit(&huart2, uartBuffer, strlen((char *)uartBuffer), 100);
seconds = 0;
variable = 0;
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE BEGIN PV */
extern seconds;
/* USER CODE END PV */
void TIM3_IRQHandler(void)
{
/* USER CODE BEGIN TIM3_IRQn 0 */
/* USER CODE END TIM3_IRQn 0 */
HAL_TIM_IRQHandler(&htim3);
/* USER CODE BEGIN TIM3_IRQn 1 */
seconds = seconds + 1;
/* USER CODE END TIM3_IRQn 1 */
}
