Estou utilizando LPTIM no STM32L0 (KEIL C), consigo receber pulsos, contar...porem nao consegui fazer gerar uma interrupt quando tenho overflow.
Alguem com experiencia ?
STM CUBE nao ajudou
Se sim...eu passo o projeto do KEIL...
PS: STM32L071
Moderadores: andre_luis, 51
#include <stddef.h>
#include <string.h>
#include "stm32l0xx_hal.h"
#include <math.h>
#include "board.h"
#include "Utilities.h"
#include "misc.h"
#include "process.h"
#include "timer.h"
#include "init.h"
#include "timer.h"
#include "main.h"
#include "stm32l0xx_hal_lptim.h"
LPTIM_HandleTypeDef hlptim1;
/**
* @brief LPTIM1 Initialization Function
* @param None
* @retval None
*/
static void MX_LPTIM1_Init(void)
{
/* USER CODE BEGIN LPTIM1_Init 0 */
/* USER CODE END LPTIM1_Init 0 */
/* USER CODE BEGIN LPTIM1_Init 1 */
/* USER CODE END LPTIM1_Init 1 */
hlptim1.Instance = LPTIM1;
hlptim1.Init.Clock.Source = LPTIM_CLOCKSOURCE_ULPTIM;
hlptim1.Init.Clock.Prescaler = LPTIM_PRESCALER_DIV1;
hlptim1.Init.UltraLowPowerClock.Polarity = LPTIM_CLOCKPOLARITY_FALLING;
hlptim1.Init.UltraLowPowerClock.SampleTime = LPTIM_CLOCKSAMPLETIME_DIRECTTRANSITION;
hlptim1.Init.Trigger.Source = LPTIM_TRIGSOURCE_SOFTWARE;
hlptim1.Init.OutputPolarity = LPTIM_OUTPUTPOLARITY_HIGH;
hlptim1.Init.UpdateMode = LPTIM_UPDATE_IMMEDIATE;
hlptim1.Init.CounterSource = LPTIM_COUNTERSOURCE_EXTERNAL;
if (HAL_LPTIM_Init(&hlptim1) != HAL_OK)
{
//Error_Handler();
}
HAL_NVIC_SetPriority(LPTIM1_IRQn, 1, 0);
HAL_NVIC_EnableIRQ(LPTIM1_IRQn);
/* USER CODE BEGIN LPTIM1_Init 2 */
/* USER CODE END LPTIM1_Init 2 */
}
void LPTIM1_IRQHandler(void)
{
if((LPTIM1->ISR & LPTIM_FLAG_CMPM) != RESET)
{
/* Clear compare match interrupt */
LPTIM1->ICR = LPTIM_FLAG_CMPM;
/* Turn off overflow interrupt */
HAL_LPTIM_TimeOut_Stop_IT(&hlptim1);
}
}
uint16_t Counter;
unsigned char Msg[64];
int main(void)
{
Start_Init();
MX_LPTIM1_Init();
/* 65535 is the value loaded into LPTIM1's ARR register */
HAL_LPTIM_Counter_Start_IT(&hlptim1, 65535);
while(1)
{
Counter = HAL_LPTIM_ReadCounter(&hlptim1); // hlptim1 is a global variable
sprintf(Msg,"%d",Counter);
PRINTF("\r\n+++++++++++%s+++++++++++\r\n", Msg);
///AQUI JÁ ENTRO EM DEEP SLEEP...AGUARDANDO DAR OVERFLOW NO LPTIM PARA SAIR DE DEEP...
}
}
#endif
Voltar para STMicroelectronics
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante