硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3839|回复: 6
收起左侧

[FreeRTOS] 请教版主在freertos中怎么处理时序

[复制链接]

5

主题

14

回帖

75

积分

初级会员

积分
75
发表于 2018-1-10 09:52:10 | 显示全部楼层 |阅读模式
我现在要初始化一个外设,有时序要求,想不被其他任务打断,使用调度锁,但是在调度锁里面不能使用任何会把任务挂起的系统函数,所以放弃了。因为在外设初始化的时候使用的vTaskDelay作为延时时序,就不能使用调度锁了,后面换成临界段保护,发现还是不能正常工作,临界段保护中还是不能使用vTaskDelay函数。那么请问版主,我想在freertos上的一个任务里面初始化一个有特殊时序外设,想要不被打断,该怎么办呢?现在我是使用的定时器作为延时,倒是可以达到效果,但是我想问问版主,在freertos上有没有什么操作,是可以在系统层面解决这个问题的?
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2018-1-10 10:12:57 | 显示全部楼层
临界段保护,延时用不引起调度的delay
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2018-1-10 11:23:20 | 显示全部楼层
有,学习我们FreeRTOS教程里面配套的DS18B20例子,或者任何其它例子都可以的。只是这个例子更有代表性,你仅需复制粘贴bsp_dwt.c和bsp_dwt.h文件即可,里面实现了微妙和毫秒延迟,你在你的main函数里面优先调用其初始化函数即可,这个DWT是Cortex-M内核的一个时钟周期计数器。地址:链接


///18B20例子里面做的注释////
1. 学习FreeRTOS的微妙延迟实现,采用DS18B20为例子。因为这个器件有很多地方要用到微妙延迟。
2. 微妙延迟的实现在bsp_dwt.c文件中,早前是采用的滴答定时器来实现微妙延迟,有不少局限性。很多时候,我们希望先初始化了外设功能后再开始滴答定时器,此时滴答定时器是用于系统时钟节拍,在使用RTX和FreeRTOS操作系统时,这个问题表现的尤为突出。
回复

使用道具 举报

5

主题

14

回帖

75

积分

初级会员

积分
75
 楼主| 发表于 2018-1-10 12:06:49 | 显示全部楼层
eric2013 发表于 2018-1-10 11:23
有,学习我们FreeRTOS教程里面配套的DS18B20例子,或者任何其它例子都可以的。只是这个例子更有代表性,你 ...

感谢版主解答,看了代码的一瞬间感觉是ucos中的测量操作,看到你备注的果然有ucos的影子,这个方法一般人想不到,可我之前也看到了相关技术,不过还是忘了用在项目上,谢谢安富莱的贡献。
回复

使用道具 举报

65

主题

432

回帖

632

积分

金牌会员

积分
632
发表于 2018-1-10 12:34:42 | 显示全部楼层
在系统跑起来之前裸奔初始化不可以吗?
回复

使用道具 举报

5

主题

14

回帖

75

积分

初级会员

积分
75
 楼主| 发表于 2018-1-10 13:31:58 | 显示全部楼层
taobaofarmer 发表于 2018-1-10 12:34
在系统跑起来之前裸奔初始化不可以吗?

可以的,我现在项目上就是使用的这个方式,只是想完全使用操作系统的方式,找一个解决办法。
回复

使用道具 举报

65

主题

432

回帖

632

积分

金牌会员

积分
632
发表于 2018-1-10 13:47:36 | 显示全部楼层
本帖最后由 taobaofarmer 于 2018-1-10 13:48 编辑

没有什么意义,RTOS的核心是任务管理和调度,这才是它的本职工作
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-17 13:39 , Processed in 0.167899 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表