[uCOS/RTOS]

如何把一个前后台 大循环的程序转为FREERTOS 任务 系统?

[复制链接]
388|9
手机看帖
扫描二维码
随时随地手机跟帖
cchyyy|  楼主 | 2023-3-15 19:34 | 显示全部楼层 |阅读模式
如何把一个前后台 大循环的程序转为FREERTOS 任务 系统?

目前有一个前后台的程序, 后台有串口中断出来程序、定时器中断程序,前台是状态机大循环。

要变为 任务的操作系统,已经添加上了FREERTOS 系统。目前的困难的不知如何把目前程序拆分为多任务的模块。  有经验的大家指点一下。


是一个在状态一个任务,串口中断一个任务,定时器中断一个任务呢。还是如何设计任务??

使用特权

评论回复
木瓜子| | 2023-3-15 20:27 | 显示全部楼层
一点浅见:
(1)串口如果采用的队列方式的,应该是做成一个任务,专门处理发送接收
(2)定时器不需要做成任务,如果你是需要在状态机处理里面触发定时器,且时间要求不高,可以在状态机任务里面调用os提供的延时调度函数
(3)状态机部分,做成一个任务

看你描述的内容好像不复杂,这样的话不需要使用OS吧

使用特权

评论回复
cchyyy|  楼主 | 2023-3-15 23:53 | 显示全部楼层
木瓜子 发表于 2023-3-15 20:27
一点浅见:
(1)串口如果采用的队列方式的,应该是做成一个任务,专门处理发送接收
(2)定时器不需要做成 ...

比较复杂的。里面有串口通讯协议与上位机通讯,串口中断,定时器中断串口查询,DMA发送,
前台是 典型的状态机程序。有按键扫描,也有显示菜单的。    我想改为RTOS的程序。目前不知如何拆分

使用特权

评论回复
cchyyy|  楼主 | 2023-3-15 23:54 | 显示全部楼层
没有一般教科书  如何 把   状态机的程序  转变为  操作系统的 程序。 真是很希望有这样的一般书可以看看或者参考一下

使用特权

评论回复
forgot| | 2023-3-16 08:42 | 显示全部楼层
中断又不需要建立任务,把你的大循环中功能按照模块建立任务就好了,任务之间数据采用信号量或者邮箱的形式关联起来

使用特权

评论回复
adlu| | 2023-3-16 08:46 | 显示全部楼层
最好把代码贴出来,只有文字描述很难帮你。如果代码太长,可以用伪代码的方式,只需要把原来的程序整体结构描述出来

使用特权

评论回复
ningling_21| | 2023-3-16 13:26 | 显示全部楼层
cchyyy 发表于 2023-3-15 23:53
比较复杂的。里面有串口通讯协议与上位机通讯,串口中断,定时器中断串口查询,DMA发送,
前台是 典型的 ...

先把前台拆分成多个独立的子程序,例如:按键一个,显示一个等等

使用特权

评论回复
ayb_ice| | 2023-3-16 16:42 | 显示全部楼层
第一步,建立一个任务,直接将整个主循环加进去,这样系统应该很快运行起来,然后拆分成多个任务,比如将按键扫描独立成任务...

使用特权

评论回复
地瓜patch| | 2023-3-16 22:39 | 显示全部楼层
forgot 发表于 2023-3-16 08:42
中断又不需要建立任务,把你的大循环中功能按照模块建立任务就好了,任务之间数据采用信号量或者邮箱的形式 ...

信号量是指全局变量或函数的形参么

使用特权

评论回复
coody| | 2023-3-17 15:29 | 显示全部楼层
中断是独立函数,跟任务无关。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则