[讨论] 关于中断与其他任务通信的问题

ywlzh   2015-10-20 22:33 楼主
      这两天看ucosii的书,也直接移植到stm32单片机上运行了,感觉很好,今天下午突然一个想法:如果要单片机把接收到的数据通过消息队列传给其他任务,那该怎么做?
     于是乎开始编程,验证,可是发现一个问题,我的中断函数和那些任务函数不在一个文件里,在中断函数的文件里添加了ucosii的头文件,有一个调用出了错误:
      OSQPostFront(Str_Q,s);
   编译器没有说OSQPostFront函数出错,而是说事件控制块Str_Q, 而这个事件控制块是在主文件里做了定义,只是没有到头文件里声明,于是我傻乎的在头文件里按以前裸机编程的办法去声明Str_Q
        extern   OS_EVENT     *Str_Q;
一大堆的错误出现了,全是针对OS_EVENT的,
    扯了太多,问题就是怎么在中断函数里去发送消息队列而且编译器不报错
天地庄周马;江湖范蠡船。 个性签名还是放QQ号吧,2060347305,添加说明EEworld好友

回复评论 (12)

好难。。。
点赞  2015-10-20 23:02
确定直接用不可以的吗?
点赞  2015-10-21 13:15
引用: academic 发表于 2015-10-21 13:15
确定直接用不可以的吗?

其实问题就是在这个文件里定义的事件控制块,到其他文件里要发送消息队列,编译器不报错
天地庄周马;江湖范蠡船。 个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
点赞  2015-10-21 14:17
不懂...
点赞  2015-10-21 14:55

慢慢来就会懂的
天地庄周马;江湖范蠡船。 个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
点赞  2015-10-21 14:59
raw-os的queue_buffer模块以及fifo+信号量都能通过中断向任务传递数据,建议使用raw-os.
点赞  2015-10-26 13:28
引用: jorya_txj 发表于 2015-10-26 13:28
raw-os的queue_buffer模块以及fifo+信号量都能通过中断向任务传递数据,建议使用raw-os.

我想先学好一门,就是有点迷茫,不知道RAW_OS相对UCOSii在MCU里哪一个更好
天地庄周马;江湖范蠡船。 个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
点赞  2015-10-27 10:38
建议使用RTX Cortex M版本的RTX源码就在你的C:\Keil\ARM\RL\RTX\SRC\CM目录下 海量例程就在你的C:\Keil\ARM\Boards\目录下的 RTX_Blinky文件下 楼主使用STM32,那么就参考C:\Keil\ARM\Boards\ST\STM32-Discovery\RTX_Blinky下的例子 帮助与参考文档在:C:\Keil\ARM\Hlp\rlarm.chm 你分分钟就可以学会使用 RTX是专为Cortex-M写的,没有之一!其他的全是垃圾! 本帖最后由 samos2011 于 2015-10-27 11:25 编辑
点赞  2015-10-27 11:23
引用: samos2011 发表于 2015-10-27 11:23
建议使用RTX
Cortex M版本的RTX源码就在你的C:\Keil\ARM\RL\RTX\SRC\CM目录下
海量例程就在你的C:\Keil\A ...

先谢谢了,我去琢磨
天地庄周马;江湖范蠡船。 个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
点赞  2015-10-27 12:38
kankan !!!!!
点赞  2015-12-19 17:38
help中有不少的解释!!!!
点赞  2015-12-19 17:39
报什么错,方便贴出来不?
点赞  2015-12-21 14:59
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复