硬汉嵌入式论坛

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

[FreeRTOS] 移植中遇到的问题,求懂的朋友指导下

[复制链接]

2

主题

4

回帖

2

积分

新手上路

积分
2
发表于 2016-10-3 18:06:38 | 显示全部楼层 |阅读模式
新手上路,刚开始学FreeRTOS。


按照安富莱的STM32F103 移植FreeRTOS教程(第35页)操作,移植中遇到如下问题
QQ图片20161003175648.png


在FreeRTOSConfig.h文件最后添加如上叙述的几行宏定义后,编译会告错

22.png


将其注释掉的话,程序又没法正常运行(LED全都不亮)。
回复

使用道具 举报

91

主题

289

回帖

562

积分

金牌会员

积分
562
发表于 2016-10-3 22:13:07 | 显示全部楼层
应该没有问题吧,我这几天也在学习freertos,已经按照教程移植好了
回复

使用道具 举报

2

主题

4

回帖

2

积分

新手上路

积分
2
 楼主| 发表于 2016-10-4 11:56:40 | 显示全部楼层

回 feiante 的帖子

feiante:应该没有问题吧,我这几天也在学习freertos,已经按照教程移植好了 (2016-10-03 22:13) 
你是什么板子?
回复

使用道具 举报

2

主题

4

回帖

2

积分

新手上路

积分
2
 楼主| 发表于 2016-10-4 13:46:50 | 显示全部楼层
搜索了网上众多的指导后,问题已经解决。
按照安富莱的移植教程完成前面3步(到32页)后,第4步在 startup_stm32f10x_hd.s 文件(我使用的是STM32F103VET6,开发板是别家的)修改相关的启动代码,修改如下:
11.jpg


修改完成后 在main.c文件下在包含相关的头文件,移植就完成了。

led.jpg

后面创建任务的过程,继续参照安富莱的教程就可以了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2016-10-4 14:29:34 | 显示全部楼层

回 默里奇 的帖子

默里奇:搜索了网上众多的指导后,问题已经解决。
按照安富莱的移植教程完成前面3步(到32页)后,第4步在 startup_stm32f10x_hd.s 文件(我使用的是STM32F103VET6,开发板是别家的)修改相关的启动代码,修改如下:



....... (2016-10-04 13:46) 
这种修改启动代码的方式太麻烦了,仅添加教程中的三个宏定义即可。
回复

使用道具 举报

0

主题

5

回帖

0

积分

新手上路

积分
0
发表于 2016-10-17 10:11:03 | 显示全部楼层
新手,我也是报同样的错误。按你的方法编译通过后,创建任务时,只能到一个任务,其他任务都不会去执行。请问有遇到这个问题吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2016-10-17 10:24:31 | 显示全部楼层

回 benni 的帖子

benni:新手,我也是报同样的错误。按你的方法编译通过后,创建任务时,只能到一个任务,其他任务都不会去执行。请问有遇到这个问题吗?
(2016-10-17 10:11)
把你遇到同样错误的原始工程发出来看看,我看看你们是那一步弄错了。

初步估计是你的stm32f10x_it.c文件里面重复和port.C文件里面重复定义SVC,PendSV和Systick中断了,楼主的问题也是这个问题,
把你在其它文件里面定义这三个中断函数全部删掉。
再次我特别强调下,我在教程的这里已经强调过
7.png

回复

使用道具 举报

0

主题

5

回帖

0

积分

新手上路

积分
0
发表于 2016-10-17 15:17:22 | 显示全部楼层

回 eric2013 的帖子

eric2013:把你遇到同样错误的原始工程发出来看看,我看看你们是那一步弄错了。

初步估计是你的stm32f10x_it.c文件里面重复和port.C文件里面重复定义SVC,PendSV和Systick中断了,楼主的问题也是这个问题,
把你在其它文件里面定义这三个中断函数全部删掉。
....... (2016-10-17 10:24) 
好的 我看了这三个系统中断我已屏蔽掉了。但还是不能在任务间调度。麻烦帮忙看看。非常感谢!
链接:http://pan.baidu.com/s/1nvLI5nj 密码:dlui
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2016-10-18 10:28:52 | 显示全部楼层

回 benni 的帖子

benni:

好的 我看了这三个系统中断我已屏蔽掉了。但还是不能在任务间调度。麻烦帮忙看看。非常感谢!
链接:http://pan.baidu.com/s/1nvLI5nj 密码:dlui

我看了下你的工程,你的任务编写有问题,你所创建的所有任务里面都没有释放CPU权限的API函数
也是说高优先级任务会一直占用着,比如这两个任务,
1.png
回复

使用道具 举报

0

主题

5

回帖

0

积分

新手上路

积分
0
发表于 2016-10-18 10:44:05 | 显示全部楼层

回 eric2013 的帖子

eric2013:我看了下你的工程,你的任务编写有问题,你所创建的所有任务里面都没有释放CPU权限的API函数
也是说高优先级任务会一直占用着,比如这两个任务,

....... (2016-10-18 10:28) 
那应该怎么释放CPU权限?加延时吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2016-10-18 12:29:08 | 显示全部楼层

回 benni 的帖子

benni:那应该怎么释放CPU权限?加延时吗? (2016-10-18 10:44) 
对,加延迟就行。
回复

使用道具 举报

0

主题

5

回帖

0

积分

新手上路

积分
0
发表于 2016-10-18 14:16:56 | 显示全部楼层

回 eric2013 的帖子

eric2013:对,加延迟就行。 (2016-10-18 12:29) 
我尝试各个任务都加延时后,是可以在任务间切换了。但每个任务只能调用一次。看调试,一直停留在prvCheckTasksWaitingTermination()这里,这是怎么回事?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2016-10-19 01:14:21 | 显示全部楼层

回 benni 的帖子

benni:我尝试各个任务都加延时后,是可以在任务间切换了。但每个任务只能调用一次。看调试,一直停留在prvCheckTasksWaitingTermination()这里,这是怎么回事? (2016-10-18 14:16) 
先仅创建一个任务,里面简单的加一个LED闪烁,看看是否有问题。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 04:51 , Processed in 0.388546 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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