Gast
#5039325
Hallo,
ich möchte per Tastdruck den Timer2 starten und beim loslassen Tasters
den Timer2 wieder stoppen. Dies hat nur den Hintergrund die HAL bzw. den
Prozessor besser kennzulernen.
Die Interrupt Routine habe ich mir über CubeMX generien lassen und diese
funktioniert.
Der Timer wird bei mir wie folgt Inititalisiert:
/* TIM2 Init function */
static void MX_TIM2_Init(void)
{
TIM_ClockConfigTypeDef sClockSourceConfig;
TIM_MasterConfigTypeDef sMasterConfig;
__HAL_RCC_TIM2_CLK_ENABLE();
htim2.Instance = TIM2;
htim2.Init.Prescaler = 0; //
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
htim2.Init.Period = 0;
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; //
TIM_CLOCKDIVISION_DIV4;
if (HAL_TIM_Base_Init(&htim2) != HAL_OK){
_Error_Handler(_FILE_, _LINE_);
}
__HAL_TIM_SET_COUNTER(&htim2, 32); // Nur zum Test
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK){
_Error_Handler(_FILE_, _LINE_);
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) !=
HAL_OK){
_Error_Handler(_FILE_, _LINE_);
}
__HAL_TIM_ENABLE(&htim2);
};
Und die Interrupt Routine sieht wie folgt aus:
void EXTI0_1_IRQHandler(void){
uint32_t tvalue;
/* USER CODE BEGIN EXTI0_1_IRQn 0 */
/* USER CODE END EXTI0_1_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
/* USER CODE BEGIN EXTI0_1_IRQn 1 */
if(PinState == 0){
/*
* Erster Aufruf
*/
HAL_TIM_Base_Start(&htim2); // Starte Timer
ExtPinState = HAL_GPIO_ReadPin(BUTTON_GPIO_Port, BUTTON_Pin);
PinValue = ExtPinState;
PinState = 1;
}
else{
HAL_TIM_Base_Stop(&htim2); // Stop Timer
nExtPinState = HAL_GPIO_ReadPin(BUTTON_GPIO_Port, BUTTON_Pin);
tvalue = __HAL_TIM_GET_COUNTER(&htim2); // Read Value
PinState = 0;
}
/* USER CODE END EXTI0_1_IRQn 1 */
}
Im Debugger sehe ich das der Counter überhaupt nicht startet. Was fehlt
da noch?
Ich möchte hier keine Diskussion über HAL oder nicht HAL starten.
Konkret möchte ich das Problem mit HAL lösen.
Vielleicht kan mir jemnad weiterhelfen.
Danke
Jürgen