打印
[应用相关]

怎样做到微秒延时?

[复制链接]
1652|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 | 只看该作者
一个函数执行就有这么长时间了,微秒延时没有意义。

使用特权

评论回复
5
shashaa| | 2017-5-31 21:11 | 只看该作者
用_NOP()延时,应该可以达到uS

使用特权

评论回复
6
xia00| | 2017-5-31 21:19 | 只看该作者

用的什么晶振,多高频率的

使用特权

评论回复
7
hfdy01| | 2017-5-31 21:21 | 只看该作者
自己写一个呗,关键是得看系统的时钟

使用特权

评论回复
8
CallReceiver| | 2017-5-31 21:28 | 只看该作者
void delay_1us(void)       //1us延时函数  
  {     
asm("nop");   
}

使用特权

评论回复
9
boy1990| | 2017-5-31 21:31 | 只看该作者
延时是和系统时钟有关的。。

使用特权

评论回复
10
sourceInsight| | 2017-5-31 21:35 | 只看该作者
微妙的话 建议定时器中断

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

424

主题

1616

帖子

1

粉丝