yangjie
yangjie - 认证专家
This guy hasn't written anything yet

注册于 3 years ago

回答
378
文章
2
关注者
14

猜测可能是使用上的问题,是不是重复使用某个中断线了

以stm32举例:中断线是共用的,I/O端口以下图的方式连接到16个外部中断/事件线上,若同时打开 PA0/PB0 的中断就是不行的,要么某个中断没反应 要么自己分不清是谁的中断。

image.png

rtt未提供这样的接口,此时你可以直接使用裸机提供的接口实现

在组件中打开的是 框架层,并不是驱动本身。你说的部分应该在驱动里面实现。

image.png

第一
没有,event是置位方式,该位第一次置位和多次置位的结果是相同的,send源码:

/* set event */
event->set |= set;

第二
将当前所有的为1的位置0,recv源码:

/* received event */
if (option & RT_EVENT_FLAG_CLEAR)
    event->set &= ~set;

没问题,ready后没有运行,就是超时了。也就是高优先级在运行

用了一段时间,说明一开始是没问题的。
运行率一段时间后,mutex的类型被改变了,检查下内存越界、内存溢出

先根据提示排查,检查 heap size是否太小

1、系统确实没实现,但若不使用 也不会报错(后面可以考虑删掉)
2、mem依赖semphore,你把信号量关了自然报错
3、你看一下systick config s是否有误,以及,如果使用软件仿真会有影响

先确定是什么架构?
如果是rtt不支持的架构,那就按照下面这篇文档进行移植libcpu和bsp,bsp的文件夹结构参考其他的bsp:
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/porting/porting

如果是rtt支持的架构,那就按照这篇文档进行移植bsp,bsp的文件夹结构参考其他的bsp

回到
顶部

发布
问题

投诉
建议