PHY6252采用的是OSAL开发的,没有找到怎么在一个任务中实现延时的函数,于是自己写了一个:
void delay_ms(uint16 ms)
{
uint32_t tick=hal_systick();
uint32_t tick_ms=0;//记录与上面tick时刻的时间差,单位是ms
while(ms>tick_ms)
{
tick_ms=hal_ms_intv(tick);
}
}
随着深入的学习,发现原来SDK中提供了延时函数:
延时:WaitMs WaitUs。
/**************************************************************************************
@fn WaitMs
@brief This function process for wait program msecond,use RTC
input parameters
@param uint32_t msecond: the msecond value
output parameters
@param None.
@return None.
**************************************************************************************/
void WaitMs(uint32_t msecond)
{
WaitRTCCount((msecond<<15)/1000);
}
void WaitUs(uint32_t wtTime)
{
uint32_t T0,currTick,deltTick;
//T0 = read_current_time();
T0 =(TIME_BASE - ((AP_TIM3->CurrentCount) >> 2));
while(1)
{
currTick = (TIME_BASE - ((AP_TIM3->CurrentCount) >> 2));
deltTick = TIME_DELTA(currTick,T0);
if(deltTick>wtTime)
break;
}
}