硬汉嵌入式论坛

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

[FreeRTOS] FreeRTOS v10与v9之间的差异

[复制链接]

10

主题

140

回帖

170

积分

初级会员

积分
170
发表于 2018-7-27 15:45:30 | 显示全部楼层 |阅读模式
本帖最后由 lvehe 于 2018-7-27 15:47 编辑

我的单片机是STM32F407,当采用操作系统时,ds18b20或类似的1-wire通讯都要关中断来保证时序的正确。
之前使用的v9.0.0的FreeRTOS,每次都可以正确获取温度数据。
但今天采用v10.0.1版本之后,不是每次都能正确获取温度数据,大概3次才能正确获取一次。
然后我将taskEXIT_CRITICAL()和taskENTER_CRITICAL()分别替换成__enable_irq()和__disable_irq(),这样每次都可以正确获取数据了。
#if (USE_FreeRTOS == 1)
        #include "FreeRTOS.h"
        #include "task.h"
        #define  ENABLE_IRQ()   taskEXIT_CRITICAL()
        #define  DISABLE_IRQ()  taskENTER_CRITICAL()
#else
        #define  ENABLE_IRQ()   __enable_irq()
        #define  DISABLE_IRQ()  __disable_irq()
#endif

FreeRTOSConfig.h中
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY        1

硬汉能分析一下什么原因吗?应该是2个版本之间的实现细节有所不同照成的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107122
QQ
发表于 2018-7-27 16:54:14 | 显示全部楼层
好的,今天晚些时候我升级个新版本例子测试下,明天上午回复你。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107122
QQ
发表于 2018-7-28 00:06:09 | 显示全部楼层
我将我们配套的FreeRTOS  18B20的例子升级了下,测试没问题。

例子: V5-341-FreeRTOS实验_原创微妙延迟方案,实现更简洁(DS18B20).rar (7.3 MB, 下载次数: 102)

效果:
QQ截图20180728000604.png

回复

使用道具 举报

10

主题

140

回帖

170

积分

初级会员

积分
170
 楼主| 发表于 2018-7-28 01:57:06 | 显示全部楼层
本帖最后由 lvehe 于 2018-7-28 02:18 编辑

dht11之类的测试了吗?真的什么都没有改,就是升级了版本就不行了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107122
QQ
发表于 2018-7-28 10:23:01 | 显示全部楼层
lvehe 发表于 2018-7-28 01:57
dht11之类的测试了吗?真的什么都没有改,就是升级了版本就不行了。

是的,直接替换这个帖子里面
http://www.armbbs.cn/forum.ph ... 7658&extra=page%3D1

18B20例子文件夹里面的FreeRTOS文件内容即可使用
QQ截图20180728102254.png



回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 20:38 , Processed in 0.322638 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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