[应用相关] 怎样做到微秒延时?

[复制链接]
1911|9
 楼主| feiqi1 发表于 2017-5-31 20:52 | 显示全部楼层 |阅读模式
TI, timer, TE, os, ST
本人新手,刚玩CC2541,想实现一个1500微秒的延时,发现OSAL下有下面的定时函数,但是毫秒级的
uint8 osal_start_timerEx( uint8 taskID, uint16 event_id, uint32 timeout_value )
{
  halIntState_t intState;
  osalTimerRec_t *newTimer;

  HAL_ENTER_CRITICAL_SECTION( intState );  // Hold off interrupts.

  // Add timer
  newTimer = osalAddTimer( taskID, event_id, timeout_value );

  HAL_EXIT_CRITICAL_SECTION( intState );   // Re-enable interrupts.

  return ( (newTimer != NULL) ? SUCCESS : NO_TIMER_AVAIL );
}
是不是我没有找到微秒的延时函数??该怎样使用OSAL库函数写出微秒的延时函数??
androidbus 发表于 2017-5-31 20:56 | 显示全部楼层
这个跟主频相关系的,主频越高,延时的越可以细化的。
litengg 发表于 2017-5-31 21:02 | 显示全部楼层
微妙的话,用NOP延时吧。
qiangweii 发表于 2017-5-31 21:09 | 显示全部楼层
一个函数执行就有这么长时间了,微秒延时没有意义。
shashaa 发表于 2017-5-31 21:11 | 显示全部楼层
用_NOP()延时,应该可以达到uS
xia00 发表于 2017-5-31 21:19 | 显示全部楼层

用的什么晶振,多高频率的
hfdy01 发表于 2017-5-31 21:21 | 显示全部楼层
自己写一个呗,关键是得看系统的时钟
CallReceiver 发表于 2017-5-31 21:28 | 显示全部楼层
void delay_1us(void)       //1us延时函数  
  {     
asm("nop");   
}
boy1990 发表于 2017-5-31 21:31 | 显示全部楼层
延时是和系统时钟有关的。。
sourceInsight 发表于 2017-5-31 21:35 | 显示全部楼层
微妙的话 建议定时器中断
您需要登录后才可以回帖 登录 | 注册

本版积分规则

424

主题

1631

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部
0