ACfly工程Freertos层面上解析

 

 

 

 

 

 

 

每个传感器都会创建一个任务,在每个传感器的驱动文件的最末尾(在每个传感器对应的Init函数中),传感器的驱动文件的大部分就是这个任务的执行函数。

 

我随便拿一个传感器驱动文件出来,比如这是光流的驱动文件。

 

然后所有传感器的Init函数在drv_Main.cpp的init_drv_Main()函数中被调用,也就是调用init_drv_Main()这个函数就可以把所有的传感器任务都创建起来。

 

init_drv_Main()函数又是在DriverInit_task()中被调用,在main.cpp里面

而DriverInit_task()又是一个任务的执行函数,而且这个任务是main函数里面唯一一个被创建的任务。!!!!!!!

 

 

控制的任务在这里 ctrl_Main.cpp的init_ControlSystem()函数里创建,而且这个任务的执行函数也在 ctrl_Main.cpp里面,感觉布局和传感器的驱动文件类似。

 

 

init_ControlSystem()函数又是在main.cpp里面的DriverInit_task()函数被调用,这个函数也即是main函数里面创建的唯一一个任务的执行函数。

 

 

 

 

 

 

我想起来了,传感器的值是通过传感器更新函数传给那个不开源的部分(叫姿态解算?)了,所以你找不到他通过什么在任务间传递传感器数据的。包括我再控制任务里面似乎也没有找到这方面获取数据的函数。

我怀疑那个传感器更新函数就是封装的一个消息发送函数,发送给对应的任务去处理的,我怀疑是这样的。

 

 

 

我还有一点不明白的地方就是串口驱动那里为什么会有那么多信号量的操作,难道操作系统下的串口程序也得改么。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值