OSAL中延时的问题

2019-07-24 15:10发布

如题,由于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()?这样感觉好痛苦?


请问大家有什么良策?不甚感激:'(
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
dirtwillfly
1楼-- · 2019-07-25 11:08
hm_315 发表于 2015-12-10 21:27
请问有相关的帖子吗?我没有想到具体的解决办法。。

找本蓝牙ble的书,只要有介绍OSAL的就可以
dirtwillfly
2楼-- · 2019-07-25 14:45
http://bbs.21ic.com/icview-1223216-1-1.html
只要不是要求非常严格的延时,尽量从操作系统层面来解决
罗菜鸟
3楼-- · 2019-07-25 17:39
osal里面可以delay,但是不宜超过1ms。
dirtwillfly
4楼-- · 2019-07-25 23:15
罗菜鸟 发表于 2015-12-11 17:59
osal里面可以delay,但是不宜超过1ms。

恩,是的,对时许要求严格的就需要用
Thor9
5楼-- · 2019-07-26 01:09
 精彩回答 2  元偷偷看……

一周热门 更多>