J'essaie d'utiliser le périphérique de minuterie dans STM32L073 mais j'ai des problèmes. J'ai généré le code d'installation dans STM32Cube et j'utilise uniquement les fonctions fournies par l'API HAL. Le problème est que l'interruption de minuterie se produit seulement une fois et elle devrait toujours se produire alors elle déborde. Je ne sais pas si la minuterie est en cours d'exécution ou si ma configuration est incorrecte (ce qui ne devrait pas être le cas puisque j'utilise le code généré par Cube). Quelqu'un peut-il aider?STM32 Timer Interruptions
Ceci est appelé dans le principal avant while
void MX_TIM7_Init(void){
TIM_ClockConfigTypeDef sClockSourceConfig;
TIM_MasterConfigTypeDef sMasterConfig;
htim7.Instance = TIM7;
htim7.Init.Prescaler = 00;
htim7.Init.CounterMode = TIM_COUNTERMODE_UP;
htim7.Init.Period = 00;
if (HAL_TIM_Base_Init(&htim7) != HAL_OK) {
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim7, &sMasterConfig) != HAL_OK){
_Error_Handler(__FILE__, __LINE__);
}
}
BaseMspInit Méthode
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle){
if(tim_baseHandle->Instance==TIM7){
/* USER CODE BEGIN TIM7_MspInit 0 */
/* USER CODE END TIM7_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_TIM7_CLK_ENABLE();
/* TIM7 interrupt Init */
HAL_NVIC_SetPriority(TIM7_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(TIM7_IRQn);
/* USER CODE BEGIN TIM7_MspInit 1 */
/* USER CODE END TIM7_MspInit 1 */
}
}
Puis, en principal que j'appelle cette
HAL_TIM_Base_Start_IT(&htim7);
qui fait cette
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim){
/* Check the parameters */
assert_param(IS_TIM_INSTANCE(htim->Instance));
/* Enable the TIM Update interrupt */
__HAL_TIM_ENABLE_IT(htim, TIM_IT_UPDATE);
/* Enable the Peripheral */
__HAL_TIM_ENABLE(htim);
/* Return function status */
return HAL_OK;
}
et mon gestionnaire appelle PeriodElapsedCallback Interrompre
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
HAL_GPIO_TogglePin(led_GPIO_Port, led_Pin);
}
Il compile il n'y a pas d'erreurs pas d'avertissement, dans le débogueur que je vois cette interruption est déclenchée qu'une seule fois et jamais. Dans l'attente de réponses
P.S. à l'aide SEGGER intégré studio
et c'est pourquoi vous ne devriez pas faire quelque chose de nouveau après minuit .. Merci –