137****com
芯片:GR5515IGND
SDK:GR551x_SDK_V1.7.0
问题:如何读取系统运行的滴答计数值?比如程序自从上电运行开始,有没有一个定时器或者滴答计数器,以1ms的周期进行计数?
Ping
1. 如果是FreeRTOS系统,可以参考FreeROS.h文件定义的接口;
#define portTICK_RATE_MS portTICK_PERIOD_MS
2. 获取系统Tick,可以使用以下函数获取,并自行转换为ms,示例如下
#define APP_TIMER_TICKS_TO_US(x) ((x) * 1000000.0f / sys_lpclk_get())
#define APP_TIMER_GET_CURRENT_TICKS(x) hal_pwr_get_timer_current_value(PWR_TIMER_TYPE_SLP_TIMER, (x))
/**
****************************************************************************************
* @brief Get the current value of specified timer.
* @note Only available on GR5515_C and later versions.
* @param[in] timer_type: This parameter can be one of the following values:
* @arg @ref PWR_TIMER_TYPE_CAL_TIMER
* @arg @ref PWR_TIMER_TYPE_AON_WDT
* @arg @ref PWR_TIMER_TYPE_SLP_TIMER
* @arg @ref PWR_TIMER_TYPE_CAL_ALARM
* @param[out] p_value: Pointer to an integer storing current value
* @retval ::HAL_OK: Operation is OK.
* @retval ::HAL_ERROR: Parameter error or operation not supported.
* @retval ::HAL_BUSY: Driver is busy.
* @retval ::HAL_TIMEOUT: Timeout occurred.
****************************************************************************************
*/
hal_status_t hal_pwr_get_timer_current_value(uint32_t timer_type, uint32_t *p_value);
Darren
你好;
请问你的工程使用的是FreeRTOS系统还是裸机系统?
如果使用的是FreeRTOS系统,那么FreeRTOS有标准的API接口获取当前的tick数值:
TickType_t xTaskGetTickCount( void );TickType_t xTaskGetTickCountFromISR( void )
另外也可以基于RTC实现上述功能,但需要外部焊接32768晶振,并且需要初始化相应的模块,相关初始化可参考projects\peripheral_app\rtc,初始化完成后,可调用接口hal_pwr_get_timer_current_value(PWR_TIMER_TYPE_CAL_TIMER, (x)) 获取原始的RTC数据,然后换算成转换为ms
159***663
#define HR_TIMER_GET_CURRENT_TICKS(x) hal_pwr_get_timer_current_value(PWR_TIMER_TYPE_SLP_TIMER, (x))
uint32_t RTC_GetCounter(void)
{
uint32_t ui32ALMLow = 0, ui32ALMUp = 0;
hal_status_t result = 0;
result = HR_TIMER_GET_CURRENT_TICKS(&ui32ALMLow);
APP_LOG_INFO("RTC_GetCounter:result=0xx,ui32ALMLow=%d",result,ui32ALMLow);
return ui32ALMLow;
}
RTC_GetCounter:result=0x00,ui32ALMLow=779
运行结果返回是 0 ,获取的值一直是 779 ,这个值一直没有变化!
这种调用方法是否对?
是否还需要调用别的接口?
打开微信,使用“扫一扫”即可关注