ACfly工程Freertos层面上解析

2023-05-16

 

 

 

 

 

 

 

每个传感器都会创建一个任务,在每个传感器的驱动文件的最末尾(在每个传感器对应的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函数里面创建的唯一一个任务的执行函数。

 

 

 

 

 

 

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

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

 

 

 

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ACfly工程Freertos层面上解析 的相关文章

随机推荐