打印

CC2541怎样做到微秒延时?

[复制链接]
2939|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
右岸|  楼主 | 2015-10-26 17:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 右岸 于 2015-10-27 14:58 编辑

本人新手,刚玩CC2541,想实现一个1500微秒的延时,发现OSAL下有下面的定时函数,但是毫秒级的:
/*********************************************************************
* @fn      osal_start_timerEx
*
* @brief
*
*   This function is called to start a timer to expire in n mSecs.
*   When the timer expires, the calling task will get the specified event.
*
* @param   uint8 taskID - task id to set timer for
* @param   uint16 event_id - event to be notified with
* @param   uint32 timeout_value - in milliseconds.
*
* [url=home.php?mod=space&uid=266161]@return[/url]  SUCCESS, or NO_TIMER_AVAIL.
*/
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库函数写出微秒的延时函数??

相关帖子

沙发
angerbird| | 2015-10-26 22:50 | 只看该作者
这个跟主频相关系的,主频越高,延时的越可以细化的

使用特权

评论回复
板凳
cehuafan| | 2015-10-27 22:10 | 只看该作者
计时。

使用特权

评论回复
地板
sunmeat| | 2015-10-28 17:10 | 只看该作者
微妙的话,用NOP延时吧。

使用特权

评论回复
5
旧影子| | 2015-10-29 16:34 | 只看该作者
一个函数执行就有这么长时间了,微秒延时没有意义。

使用特权

评论回复
6
米尔豪斯| | 2015-10-29 19:29 | 只看该作者
用_NOP()延时,应该可以达到uS

使用特权

评论回复
7
尤彼卡| | 2015-10-29 19:40 | 只看该作者
想实现一个1500微秒的延时

这也就达到ms了呀

使用特权

评论回复
8
Thor9| | 2015-10-29 20:04 | 只看该作者
用的什么晶振,多高频率的

使用特权

评论回复
9
可可球| | 2015-10-29 20:30 | 只看该作者
自己写一个,关键是得看系统的时钟

使用特权

评论回复
10
309030106| | 2015-10-29 20:49 | 只看该作者
void delay_1us(void)       //1us延时函数  
  {     
asm("nop");   
}

使用特权

评论回复
11
冰河w| | 2015-10-29 21:19 | 只看该作者
延时是和系统时钟有关的

使用特权

评论回复
12
STM32初学者| | 2015-10-30 22:33 | 只看该作者
309030106 发表于 2015-10-29 20:49
void delay_1us(void)       //1us延时函数  
  {     
asm("nop");   

这个nop和系统的主频率有关的,不一定是1us

使用特权

评论回复
13
mmbs| | 2015-10-31 15:02 | 只看该作者
没用过微妙级的

使用特权

评论回复
14
xiaoyaozt| | 2015-10-31 18:49 | 只看该作者
一般不是ms吗

使用特权

评论回复
15
xiaoyaozt| | 2015-10-31 18:50 | 只看该作者
微妙的话 建议定时器中断

使用特权

评论回复
16
598330983| | 2015-10-31 19:45 | 只看该作者
真心不喜欢定时器延时,太麻烦,可是这种跑空周期也是费周期。

使用特权

评论回复
17
598330983| | 2015-10-31 19:46 | 只看该作者
_NOP()延时,应该可以达到uS

使用特权

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

本版积分规则

3

主题

114

帖子

1

粉丝