temp_contoller_firmware/src/plib/sys_tim.c
2025-04-07 03:34:21 +03:00

73 lines
1.4 KiB
C

#include "sys_tim.h"
#include "platform.h"
#include "modbus_regs_file.h"
#include "modbus_config.h"
static uint32_t time_ms_cnt = 0;
static uint32_t time_sec_cnt = 0;
/**
@brief тут счётчики инкрементируем
*/
void SysTick_Handler(void)
{
static uint16_t sec_update_cnt=0;
time_ms_cnt++;
sec_update_cnt++;
if(sec_update_cnt==1000u) //если 1000 милисек отсчитали
{
sec_update_cnt=0u;
time_sec_cnt++;
}
return;
}
/**
@brief инициализируем системный таймер на 1ms
*/
void SysTick_Init(void)
{
SysTick_Config((P_SYSCLK/1000UL));
return;
}
/**
@brief блокирущая задержка
*/
void delay(uint32_t ms)
{
uint32_t tickstart = time_get_ms();
uint32_t wait = ms;
while ((time_get_ms() - tickstart) < wait)
{
}
}
/**
@brief получить время в ms
*/
uint32_t time_get_ms(void)
{
return time_ms_cnt;
}
/**
@brief получить время в сеундах
*/
uint32_t time_get_sec(void)
{
return time_sec_cnt;
}
/**
@brief передаём указатель на счётчи времени в модбас
*/
uint8_t MBRF_time_init(void)
{
uint8_t MB_init_eror = 0u;
MB_init_eror+=MBRF_create_reg(MBADDR_TIME_SEC0, ((uint16_t*)&time_sec_cnt)+1u, MBTYPE_TIME_SEC); //0x006E
MB_init_eror+=MBRF_create_reg(MBADDR_TIME_SEC1, &time_sec_cnt, MBTYPE_TIME_SEC); //0x006F
return MB_init_eror;
}