/* Function returns number of ticks per second for system timer */ uint32_t SystemTimer1_GetTicsPerSecond(LDD_TDeviceData *DeviceDataPtr) { uint32_t period_ticks; SystemTimer1_GetPeriodTicks(DeviceDataPtr, &period_ticks); return SystemTimer1_GetInputFrequency(DeviceDataPtr) / period_ticks; }
static uint8_t get_systick_period_in_ms(void) { uint32_t num_clock_period = 0; //HW tick. uint32_t input_freq_in_hz = SystemTimer1_GetInputFrequency(NULL); SystemTimer1_GetPeriodTicks(NULL, &num_clock_period); return 1000 * num_clock_period / input_freq_in_hz; }
/* Function returns number of ticks per second for system timer */ uint32_t SystemTimer1_GetTicsPerSecond(LDD_TDeviceData *DeviceDataPtr) { uint32_t input_frequency; uint32_t period_ticks; /* Parameter DeviceDataPtr is not used, suppress unused argument warning */ (void)DeviceDataPtr; input_frequency = SystemTimer1_GetInputFrequency(NULL); SystemTimer1_GetPeriodTicks(NULL, &period_ticks); return input_frequency / (period_ticks); }
uint32_t system_timer_init(const void * timer_data_ptr) { uint32_t hw_ticks_per_tick; KERNEL_DATA_STRUCT_PTR kernel_data = _mqx_kernel_data; /* Parameter is not used, suppress unused argument warning */ (void)timer_data_ptr; SystemTimerDeviceDataPtr = SystemTimer1_Init(NULL); /* Set number of system ticks per second */ kernel_data->TICKS_PER_SECOND = SystemTimer1_GetTicsPerSecond(SystemTimerDeviceDataPtr); _time_set_hwtick_function((MQX_GET_HWTICKS_FPTR)&SystemTimer1_GetCounterValue, (pointer)SystemTimerDeviceDataPtr); /* Set number of hardware ticks per system tick */ SystemTimer1_GetPeriodTicks(SystemTimerDeviceDataPtr, &hw_ticks_per_tick); _time_set_hwticks_per_tick(hw_ticks_per_tick); return MQX_OK; }