jan*_*anm 12
不要使用线程,使用事件循环.
PIC18是一个小型处理器,基于事件循环的风格意味着您不必保留许多深层堆栈.您需要根据事件循环编写代码,但这可能是合理的.
如果确实有一些长时间运行的任务,请使用不同的中断优先级,以允许更高优先级的事件循环抢占低优先级事件循环,并将适当类型的工作放入适当的事件队列中.
如果根本没有操作系统,你(显然)必须自己重新创建必要的功能.
最简单的方法可能是安装以某个合适频率运行的定时器中断(可能取决于您的实际时钟速度,但可能在100-1000 Hz范围内).在中断处理程序中,您需要检查当前线程的状态,并确定是否应该进行切换.
然后诀窍是在必要时进行切换,并从中断处理程序返回到另一个线程.
当然,当线程本身可能使用中断时,让它工作并不一定容易.
您还可以考虑安装一些内核,也许是Contiki.
以下是PIC18的"protothreads"示例,看起来像是一个合理数量的代码.但是不确定语义.
更新:这可能需要你在汇编程序中执行一些最低级别的代码(我不确定,在PIC上没有使用C,所以我不确切知道你得到了多少控制权).您将需要控制程序计数器的寄存器,而这些不是C概念.
| 归档时间: |
|
| 查看次数: |
7898 次 |
| 最近记录: |