OSAL中延时的问题

[复制链接]
3965|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 | 显示全部楼层
延时要求很严格吗?不严格的话用信号量或者事件标志之类的来解决延时吧
既然用操作系统,要多从操作系统的层面来思考问题
 楼主| hm_315 发表于 2015-12-10 21:26 | 显示全部楼层
msblast 发表于 2015-12-10 20:51
有task_sleep类似的API函数吧?

没有,主要是一个事件驱动的OS而不是可剥夺的OS,如果使用延时,死循环一会,那么OS什么事都做不了,好头疼
 楼主| hm_315 发表于 2015-12-10 21:27 | 显示全部楼层
dirtwillfly 发表于 2015-12-10 21:21
延时要求很严格吗?不严格的话用信号量或者事件标志之类的来解决延时吧
既然用操作系统,要多从操作系统的 ...

请问有相关的帖子吗?我没有想到具体的解决办法。。
shenmu2012 发表于 2015-12-11 13:01 | 显示全部楼层
延时是需要重视的。
dirtwillfly 发表于 2015-12-11 13:38 | 显示全部楼层
hm_315 发表于 2015-12-10 21:27
请问有相关的帖子吗?我没有想到具体的解决办法。。

找本蓝牙ble的书,只要有介绍OSAL的就可以
dirtwillfly 发表于 2015-12-11 13:39 | 显示全部楼层
https://bbs.21ic.com/icview-1223216-1-1.html
只要不是要求非常严格的延时,尽量从操作系统层面来解决
罗菜鸟 发表于 2015-12-11 17:59 | 显示全部楼层
osal里面可以delay,但是不宜超过1ms。
dirtwillfly 发表于 2015-12-11 20:48 | 显示全部楼层
罗菜鸟 发表于 2015-12-11 17:59
osal里面可以delay,但是不宜超过1ms。

恩,是的,对时许要求严格的就需要用
Thor9 发表于 2015-12-11 21:57 | 显示全部楼层
OSAL中有延时函数吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

35

帖子

0

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