硬汉嵌入式论坛

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

[μCOS-III] 中断使用任务信号量进HardFaultHandler

[复制链接]

1

主题

8

回帖

11

积分

新手上路

积分
11
发表于 2023-1-3 10:24:26 | 显示全部楼层 |阅读模式
本帖最后由 Jerry1981 于 2023-1-3 10:26 编辑

使用的是V5-600_uCOS-III实验_程序移植模板(3.08.00)
我在IO口中断的回调函数使用任务信号量
QQ图片20230103101554.png
在任务里接受并执行读取任务
QQ图片20230103101905.png


但是执行数百次读取就进入了 HardFaultHandler


QQ图片20230103101985.png

我这样使用任务信号量有问题吗?
我尝试过自己使用变量判断,在中断里置1,任务里判断是否为1,为1清零并执行代码,不为1待用系统延时,这样就没有问题。





回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2023-1-3 10:31:26 | 显示全部楼层
大概率跟这个坛友的问题一样

V5-600_uCOS-III实验_程序移植模板(3.08.00) 增加一个IO口中断后进入HardFaultHandler
https://www.armbbs.cn/forum.php? ... 7068&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2023-1-3 10:39:26 | 显示全部楼层
哈哈,那个帖子就是我发的。不使用信号量一切正常一用信号量就出问题了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2023-1-3 11:25:07 | 显示全部楼层
Jerry1981 发表于 2023-1-3 10:39
哈哈,那个帖子就是我发的。不使用信号量一切正常一用信号量就出问题了。

你这个貌似还没有掌握uCOS新版的使用精髓,我直接分享个例子得了。

下午了我分享个。
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2023-1-3 11:32:34 来自手机 | 显示全部楼层
十分感谢,第一次用ucosiii,一些思维还停留在ucosii 上。坐等例子,好好学习一下。
回复

使用道具 举报

19

主题

373

回帖

430

积分

高级会员

积分
430
发表于 2023-1-3 12:06:21 | 显示全部楼层
注意一下中断设置:
1. 硬件设置为16个抢占优先级,没有子优先级
2. sysTick为4(uCOS III默认)
3. pendSV为15(uCOS III默认)
4. 用户中断优先级就是5~14之间任意,进出中断ISR加OSIntEnter()和OSIntExit()
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2023-1-3 12:38:34 | 显示全部楼层
分享个uCOS-III 3.08使用中断发送消息队列处理的例子
https://www.armbbs.cn/forum.php? ... 7394&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2023-1-3 13:27:10 | 显示全部楼层
看了一下您分享的程序,和我的没看出来有什么区别只不过我用的是任务信号量,自己定义信号量依然会出问题。

回复6楼:新版本的UCOSiii不用“进出中断ISR加OSIntEnter()和OSIntExit()”,参见https://www.armbbs.cn/forum.php? ... 7068&fromuid=58
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2023-1-3 15:16:04 | 显示全部楼层
Jerry1981 发表于 2023-1-3 13:27
看了一下您分享的程序,和我的没看出来有什么区别只不过我用的是任务信号量,自己定义信号量依然会出问题。 ...

又补充了个任务信号量的例子,方便你对比。

分享个uCOS-III 3.08使用中断发送消息队列处理的例子
https://www.armbbs.cn/forum.php? ... 7394&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

1

主题

8

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2023-1-4 09:46:19 | 显示全部楼层
问题找到了,IO口给的中断优先级不对,给5-14就可以了。感谢h_007和eric2013给出的宝贵意见,以前用UCOSii没这问题。同时参考了https://blog.csdn.net/weixin_39952502/article/details/111804331
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2023-1-4 10:06:01 | 显示全部楼层
Jerry1981 发表于 2023-1-4 09:46
问题找到了,IO口给的中断优先级不对,给5-14就可以了。感谢h_007和eric2013给出的宝贵意见,以前用UCOSii ...

那是老版的uCOS-II,新版的也一样。

基于V5,V6和V7的最新版uCOS-II V2.93.00程序模板,含MDK和IAR两个版本,支持uC/Probe(2020-03-20)
https://www.armbbs.cn/forum.php? ... 6928&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

19

主题

373

回帖

430

积分

高级会员

积分
430
发表于 2023-1-4 14:48:53 | 显示全部楼层
Jerry1981 发表于 2023-1-3 13:27
看了一下您分享的程序,和我的没看出来有什么区别只不过我用的是任务信号量,自己定义信号量依然会出问题。 ...

NKA的中断可以不用加OSIntEnter()和OSIntExit(),就像裸机一样,但中断优先级要设置为0~3,同时不能使用信号量等OS服务
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 20:28 , Processed in 0.193360 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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