运行流程
- 主循环的Duty_Loop()是一个时间切换的简单状态机,包含5个时间状态
- Duty_1ms()主要用于控制起飞状态。
- Tim_Count,计数到15s后解锁起飞,youcanfly标志位打开,否则标志位置零
- youcanfly标志位打开后,LED灯切换到启动显示状态
- LED_Display( LED_Brightness ); 等待起飞的信号指示
- 调用数传通信,向上位机传输数据
- Duty_2ms() 用于计算姿态内环以及遥控器数据处理
- MPU6050_Data_Prepare()
- MPU6050_Data_Offset()校准函数
- 加速度计、角速度计均值滤波,放到文件操作系统里当无人机未解锁时,根据动作判断是否要进行矫正。
- 读取加速度、角速度数据,温漂补偿,并采用滑动窗口进行均值滤波。
- 坐标转指针传入结构体。
- MPU6050_Data_Offset()校准函数
- CTRL_1( inner_loop_time );内环角速度PID
- RC_Duty()遥控器数据处理
- 滤波。
- 是否有信号。
- 一段时间内没接收到信号,则连接断开。
- MPU6050_Data_Prepare()
- Duty_5ms() 姿态外环控制
- IMU进行姿态解算
- 加速度PID控制
- Duty_10ms() 气压计 电子罗盘数据更新
- Duty_20ms() 参数保存到FLash
- Duty_50ms()
- Mode() 模式控制,只在特定条件下,遥控器生效
- Duty_1ms()主要用于控制起飞状态。
Comments