#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; }