目录
文章目录
摘要
本节主要记录自己学习ardupilot的bootloader代码过程,欢迎批评指正。
1.bootloader()函数整体实现流程
主控FMU或IO协处理器的main函数调用jump_to_app函数失败(返回)后,就会调用bootloader()函数来与上位机进行通信,bootloader定义在文件bl.c中,它的主要功能如下:
- 1.(重新)启动systick定时器和中断,周期为1ms
- 2.若timeout不为0,启动0号时钟(TIMER_BL_WAIT),周期为timeout,单位ms
- 3.设置闪烁B/E LED灯
这里我们采用FMU+IO两种芯片(STM32F765IIK6+STM32F103C8T6)
其中FMU(V5)的PC6
其中IO的PB15
- 4.进入命令处理循环
4.1 关闭ACT LED灯(主控FMU没有,IO协处理器)
4.2 死循环读取串口数据(1字节&