硬汉嵌入式论坛

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

[有问必答] 请教UCOSIII 3.08下有没有can hall驱动?

[复制链接]

12

主题

178

回帖

214

积分

高级会员

积分
214
发表于 2020-7-21 17:35:49 | 显示全部楼层 |阅读模式
这两天想写一个ucosIII 3.08下的can的驱动,初步的想法有两种:
1. 基于os semp,但是涉及到添加系统托管中断,
2. 借鉴bsp_uart_fifo中的方法,实现生产者消费者模型,就怕出错就尴尬了
请硬汉指点:
1. 该怎么添加系统托管中断呢?如何改写  os_cpu_isr.asm
2. 这个生产者消费者模型按照bsp_uart_fifo写就不会有逻辑上的错误了是吧?
谢谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107294
QQ
发表于 2020-7-21 17:54:13 | 显示全部楼层
回复

使用道具 举报

12

主题

178

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2020-7-21 18:25:35 | 显示全部楼层
eric2013 发表于 2020-7-21 17:54
参考早期给FreeRTOS配的吧

http://www.armbbs.cn/forum.php?mod=viewthread&tid=17658&extra=page%3D1

嗯,谢谢。
我还想请教一下其余的中断怎么让系统托管呢?现在给的例程里面只有systick是系统管的,
是不是先在外面定义,然后在os_cpu_isr.asm里面import  export?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107294
QQ
发表于 2020-7-21 18:35:31 | 显示全部楼层
gallop020142 发表于 2020-7-21 18:25
嗯,谢谢。
我还想请教一下其余的中断怎么让系统托管呢?现在给的例程里面只有systick是系统管的,
是 ...

系统托管是一种古老的管理方式了。

现在M内核的中断控制器NVIC已经非常强劲,各种抢占优先级,子优先级配置。
回复

使用道具 举报

12

主题

178

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2020-7-22 11:26:21 | 显示全部楼层
eric2013 发表于 2020-7-21 18:35
系统托管是一种古老的管理方式了。

现在M内核的中断控制器NVIC已经非常强劲,各种抢占优先级,子优先 ...

中断系统不托管的话,不能用os的消息队列,是吧?
回复

使用道具 举报

6

主题

642

回帖

660

积分

金牌会员

积分
660
QQ
发表于 2020-7-22 11:26:22 | 显示全部楼层
还以为楼主在研究uC-CANOPEN呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107294
QQ
发表于 2020-7-22 14:18:36 | 显示全部楼层
gallop020142 发表于 2020-7-22 11:26
中断系统不托管的话,不能用os的消息队列,是吧?

不影响,采用uCOS标准的中断出入写法即可。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107294
QQ
发表于 2020-7-22 14:19:07 | 显示全部楼层
yklstudent 发表于 2020-7-22 11:26
还以为楼主在研究uC-CANOPEN呢

刚看这个题目的时候,我也以为是uC-CanOpen
回复

使用道具 举报

12

主题

178

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2020-7-22 14:29:42 | 显示全部楼层
eric2013 发表于 2020-7-22 14:18
不影响,采用uCOS标准的中断出入写法即可。

您的意思是说:中断不用系统托管,也可以在中断里面用OSSemPost函数是吧?
前几天确实在看canfestival呢。uc-canopen我也看看哈
回复

使用道具 举报

12

主题

178

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2020-7-23 12:34:24 | 显示全部楼层
eric2013 发表于 2020-7-22 14:18
不影响,采用uCOS标准的中断出入写法即可。

关于kernel aware中断我找了一下相关的帖子,我理解如下:
1.不用修改os_cpu_isr.asm里面添加任何内容;
2.跟裸机一样设置中断,但是hal_NVIC_SetPriority(, ≥4, 0)  //(CPU_CFG_KA_IPL_BOUNDARY  4u)
3.这样中断函数里面可以用OSSemPost()
请您指点一下,看看以上是否有误,十分感谢!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107294
QQ
发表于 2020-7-23 17:47:02 | 显示全部楼层
gallop020142 发表于 2020-7-23 12:34
关于kernel aware中断我找了一下相关的帖子,我理解如下:
1.不用修改os_cpu_isr.asm里面添加任何内容; ...

1. os_cpu_isr.asm这个文件是我制作的,不是官方写的,目的是不再需要用户修改启动代码了。
2. 设置NVIC优先级分组为4,根据CPU_CFG_KA_IPL_BOUNDARY的配置,高于CPU_CFG_KA_IPL_BOUNDARY的,表示不受uCOS管理,低于这个的表示受uCOS管理。
3、 你的uCOS api要在受uCOS管理的中断里面调用,不受管理的不要调用,跟裸机一样。
回复

使用道具 举报

12

主题

178

回帖

214

积分

高级会员

积分
214
 楼主| 发表于 2020-7-23 19:13:34 | 显示全部楼层
eric2013 发表于 2020-7-23 17:47
1. os_cpu_isr.asm这个文件是我制作的,不是官方写的,目的是不再需要用户修改启动代码了。
2. 设置NVIC ...

明白了,十分感谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-25 00:43 , Processed in 0.189545 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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