该app的位置:
Fimrware/src/drivers/stm32/adc.cpp
adc类天实例化时,先注册一个设备:/dev/adc0
然后会向NUTTX内核注册一个周期性运行函数:
-
int
-
ADC::open_first(struct file *filp)
-
{
-
/* get fresh data */
-
_tick();
-
-
/* and schedule regular updates */
-
hrt_call_every(&_call, _tickrate, _tickrate, _tick_trampoline, this);
-
-
return 0;
-
}
-
hrt_call_every(&_call, _tickrate, _tickrate, _tick_trampoline, this);
函数"
_tick_trampoline"就是被系统周期执行的函数.
这个函数的功能就是:
1.读取ADC通道的数据到adc_msg_s结构中
2.uorb发布数据到system_power中.
当然system_power中并没有包含所有ADC的数据,具体哪些数据可以看system_power结构的定义.
open_first
(struct file
*filp
)函数是父类:device::CDev的虚拟函数,它会被CDdev::open函数调用 .
阅读(2971) | 评论(0) | 转发(1) |