微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2640 , 关于使用Task_sleep()使用方法

CC2640 , 关于使用Task_sleep()使用方法

时间:10-02 整理:3721RD 点击:

最近有一个项目要用到驱动步进电机(马达),需要小于ms级别的精准定时,我在另一帖子已发问,但没有答复。

后来我采用了Task_sleep()功能来进行延时(定时),例如 Task_sleep(5300 / Clock_tickPeriod);// 延时5.3ms  , 

这样基本可以使用,但发现有时马达会走不到位,估计是 Task_sleep() 功能被打断造成的。

问1:   Task_sleep(5300 / Clock_tickPeriod);// 延时5.3ms  ,  这样写法是不是延时5.3毫秒?

问2:   怎样才能使 Task_sleep()功能不被打断?

 1  Task_sleep( ((i) * 1000) / Clock_tickPeriod )

i 表示ms数。Clock_tickPeriod 在CC2640里面是10us.

 2     Task_sleep() 功能被打断?是不是有更高优先级的中断?

Susan Yang , 你好,很感谢你的回复。 

1 .  Task_sleep( 5300 / Clock_tickPeriod ) = 5.3 毫秒,是对的吗?  其实我也看到原函数了, Task_sleep( ((i) * 1000) / Clock_tickPeriod ) ,但我需要的是 5.3,所以直接输入 5300  了。 总不能写 成 5.3*1000  /  Clock_tickPeriod    吧。

2. 不知道为什么被打断了,怎么样查是否有更高优先级的中断? 我想有的话,应该是蓝牙方面(也就是说内核), 我不知道该怎样设置。 

问题1的理解是对的,注意Task_sleep(x),x要大于10;

第二, Task_sleep只是在当前任务Task(调用 Task_sleep者)进行睡眠,其他Task任务仍然在实现,包括硬件中断和软件

Eggsy Pang , 感谢回复!

关于 第二点,我想再问清楚,请原谅我的无知。

第二, Task_sleep只是在当前任务Task(调用 Task_sleep者)进行睡眠,其他Task任务仍然在实现,包括硬件中断和软件。

问 :其他Task任务仍然在实现,包括硬件中断和软件 , 这样的情况下会不会打断    我当前任务Task(调用 Task_sleep者)进行的睡眠  , 从而造成延时不够?问题应该怎样解决? 

请问您担心的是,如果你设置Task_sleep 700ms,可能由于中断导致延时,使得Task_sleep变成 800ms吗?

我最近用到了Task_sleep()函数,同样有这个疑问。在Task_sleep执行的这段时间,如果来了中断,然后中断里面Semaphore_post了一下,这时是否会导致Task_sleep立即执行完?还是说Task_sleep函数仍然会执行完才继续?或者ti有介绍Task_sleep的文档吗?感谢!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top