Created 1ms timebase, created 10ms and 1sec tick

- 1ms via SysTick IRQ handler
master
gnssuser 3 weeks ago
parent 320688d525
commit 3ec1750053

@ -37,6 +37,7 @@ extern "C" {
/* Exported constants --------------------------------------------------------*/ /* Exported constants --------------------------------------------------------*/
/* USER CODE BEGIN EC */ /* USER CODE BEGIN EC */
extern volatile uint32_t SysTickCnt;
/* USER CODE END EC */ /* USER CODE END EC */
@ -57,6 +58,9 @@ void PendSV_Handler(void);
void SysTick_Handler(void); void SysTick_Handler(void);
/* USER CODE BEGIN EFP */ /* USER CODE BEGIN EFP */
uint32_t SysTimeGetAbs(void);
int32_t SysTimeGetRel(uint32_t tref);
/* USER CODE END EFP */ /* USER CODE END EFP */
#ifdef __cplusplus #ifdef __cplusplus

@ -74,6 +74,20 @@ void printf_putc(void *p, char c) {
Usart1_PutByte(c); Usart1_PutByte(c);
} }
/***************************************************************************//**
* @brief Check if specified time interval has elapsed
* @param tref Pointer to time reference variable
* @param tcycle Time interval in milliseconds
*//****************************************************************************/
static inline uint32_t TickChk(uint32_t *tref, int_fast16_t tcycle) {
int32_t tdif = SysTickCnt - *tref;
if (tdif >= tcycle) {
*tref += tcycle;
return 1;
}
return 0;
}
/* USER CODE END 0 */ /* USER CODE END 0 */
/** /**
@ -120,6 +134,14 @@ int main(void) {
/* Infinite loop */ /* Infinite loop */
/* USER CODE BEGIN WHILE */ /* USER CODE BEGIN WHILE */
while (1) { while (1) {
static uint32_t Tick10msRef = 0;
if (TickChk(&Tick10msRef, 10)) {
}
static uint32_t Tick1secRef = 0;
if (TickChk(&Tick1secRef, 1000)) {
}
int c; int c;
c = Usart2_GetByte(); c = Usart2_GetByte();

@ -41,6 +41,7 @@
/* Private variables ---------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */ /* USER CODE BEGIN PV */
volatile uint32_t SysTickCnt = 0;
/* USER CODE END PV */ /* USER CODE END PV */
@ -52,6 +53,22 @@
/* Private user code ---------------------------------------------------------*/ /* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */ /* USER CODE BEGIN 0 */
/***************************************************************************//**
* @brief Get absolute system time
*//****************************************************************************/
uint32_t SysTimeGetAbs (void) {
return SysTickCnt;
}
/***************************************************************************//**
* @brief Get relative time
*//****************************************************************************/
int32_t SysTimeGetRel (uint32_t tref) {
int32_t tdif = SysTickCnt - tref;
return tdif;
}
/* USER CODE END 0 */ /* USER CODE END 0 */
/* External variables --------------------------------------------------------*/ /* External variables --------------------------------------------------------*/
@ -187,7 +204,7 @@ void SysTick_Handler(void)
/* USER CODE END SysTick_IRQn 0 */ /* USER CODE END SysTick_IRQn 0 */
HAL_IncTick(); HAL_IncTick();
/* USER CODE BEGIN SysTick_IRQn 1 */ /* USER CODE BEGIN SysTick_IRQn 1 */
SysTickCnt++;
/* USER CODE END SysTick_IRQn 1 */ /* USER CODE END SysTick_IRQn 1 */
} }

Loading…
Cancel
Save