打印

OSAL中延时的问题

[复制链接]
3447|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hm_315|  楼主 | 2015-12-10 19:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
os, I2c, AD, TE, TI
如题,由于CC2540 BLE中有一个小的OS,那么在使用DELAY时会造成大量不必要的问题。
但是我在外接一个器件,比如I2C时,每个操作之间必须要使用延时,比如

I2C_Read();
Delay(3ms);
I2C_WRITE();


在这里存在一个问题,那就是如果我使用API函数osal_start_timerEx()的话,怎么样才能回到I2C_Read()的位置呢?

1.可以自己将这部分压栈?
2.还是不得不写大量事件,比如把这个函数拆分,先做I2C_Read(),osal_start_timerEx()之后做I2C_WRITE()?这样感觉好痛苦?


请问大家有什么良策?不甚感激:'(

相关帖子

沙发
hm_315|  楼主 | 2015-12-10 19:12 | 只看该作者
@xyz549040622 @dirtwillfly @豆腐块,大大们求解~

使用特权

评论回复
板凳
msblast| | 2015-12-10 20:51 | 只看该作者
有task_sleep类似的API函数吧?

使用特权

评论回复
地板
dirtwillfly| | 2015-12-10 21:21 | 只看该作者
延时要求很严格吗?不严格的话用信号量或者事件标志之类的来解决延时吧
既然用操作系统,要多从操作系统的层面来思考问题

使用特权

评论回复
5
hm_315|  楼主 | 2015-12-10 21:26 | 只看该作者
msblast 发表于 2015-12-10 20:51
有task_sleep类似的API函数吧?

没有,主要是一个事件驱动的OS而不是可剥夺的OS,如果使用延时,死循环一会,那么OS什么事都做不了,好头疼

使用特权

评论回复
6
hm_315|  楼主 | 2015-12-10 21:27 | 只看该作者
dirtwillfly 发表于 2015-12-10 21:21
延时要求很严格吗?不严格的话用信号量或者事件标志之类的来解决延时吧
既然用操作系统,要多从操作系统的 ...

请问有相关的帖子吗?我没有想到具体的解决办法。。

使用特权

评论回复
7
shenmu2012| | 2015-12-11 13:01 | 只看该作者
延时是需要重视的。

使用特权

评论回复
8
dirtwillfly| | 2015-12-11 13:38 | 只看该作者
hm_315 发表于 2015-12-10 21:27
请问有相关的帖子吗?我没有想到具体的解决办法。。

找本蓝牙ble的书,只要有介绍OSAL的就可以

使用特权

评论回复
9
dirtwillfly| | 2015-12-11 13:39 | 只看该作者
https://bbs.21ic.com/icview-1223216-1-1.html
只要不是要求非常严格的延时,尽量从操作系统层面来解决

使用特权

评论回复
10
罗菜鸟| | 2015-12-11 17:59 | 只看该作者
osal里面可以delay,但是不宜超过1ms。

使用特权

评论回复
11
dirtwillfly| | 2015-12-11 20:48 | 只看该作者
罗菜鸟 发表于 2015-12-11 17:59
osal里面可以delay,但是不宜超过1ms。

恩,是的,对时许要求严格的就需要用

使用特权

评论回复
12
Thor9| | 2015-12-11 21:57 | 只看该作者
OSAL中有延时函数吧

使用特权

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

本版积分规则

10

主题

35

帖子

0

粉丝