博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我发现《四轴飞行器DIY-基于STM32微控制器》,还有crazypony,还有无名,匿名这类没有用操作系统的都是靠定时器中断来弄的。
阅读量:4084 次
发布时间:2019-05-25

本文共 1957 字,大约阅读时间需要 6 分钟。

 

我发现《四轴飞行器DIY-基于STM32微控制器》,还有crazypony,还有无名,这类没有用操作系统的都是靠定时器来弄的。

飞控的程序大体可以分类两类,有操作系统和没有操作系统的。

怪不得无名的那些主要功能都没有写在main函数里面,写在time.c里面

莫非他们都是在中断里面实现姿态控制的么

是不是还可以把匿名的代码也拿来分析一下。

 

之前在这篇文章总结过

 

 

 

看了下匿名的代码,它也是分为不同频率的任务,当然虽然他这里面说“线程”,但匿名是没有用操作系统的。

static void Loop_1000Hz(void)	//1ms执行一次{	test_dT_1000hz[0] = test_dT_1000hz[1];	test_rT[3] = test_dT_1000hz[1] = GetSysTime_us ();	test_dT_1000hz[2] = (u32)(test_dT_1000hz[1] - test_dT_1000hz[0]) ;//		/*传感器数据读取*/	Fc_Sensor_Get();		/*惯性传感器数据准备*/	Sensor_Data_Prepare(1);		/*姿态解算更新*/	IMU_Update_Task(1);		/*获取WC_Z加速度*/	WCZ_Acc_Get_Task();		/*飞行状态任务*/	Flight_State_Task(1,CH_N);		/*开关状态任务*/	Swtich_State_Task(1);		/*姿态角速度环控制*/	Att_1level_Ctrl(1e-3f);		/*电机输出控制*/	Motor_Ctrl_Task(1);			/*数传数据交换*/	ANO_DT_Data_Exchange();	//				test_rT[4]= GetSysTime_us ();			test_rT[5] = (u32)(test_rT[4] - test_rT[3]) ;	}static void Loop_500Hz(void)	//2ms执行一次{		}static void Loop_200Hz(void)	//5ms执行一次{	}static void Loop_100Hz(void)	//10ms执行一次{			test_rT[0]= GetSysTime_us ();//					/*遥控器数据处理*/	RC_duty_task(10);		/*飞行模式设置任务*/	Flight_Mode_Set(10);		/*获取姿态角(ROLL PITCH YAW)*/	calculate_RPY();		/*姿态角度环控制*/	Att_2level_Ctrl(10e-3f,CH_N);		/*位置速度环控制(暂无)*/	Loc_1level_Ctrl(10,CH_N);		/*高度数据融合任务*/	WCZ_Fus_Task(10);		/*高度速度环控制*/	Alt_1level_Ctrl(10e-3f);		/*高度环控制*/	Alt_2level_Ctrl(10e-3f);			/*光流数据解析*/	AnoOF_DataAnl_Task(10);		/*灯光控制*/		LED_Task(10);//					test_rT[1]= GetSysTime_us ();			test_rT[2] = (u32)(test_rT[1] - test_rT[0]) ;					}static void Loop_50Hz(void)	//20ms执行一次{		/*罗盘数据处理任务*/	Mag_Update_Task(20);}static void Loop_20Hz(void)	//50ms执行一次{		/*TOF激光任务*/	Drv_Vl53_RunTask();	/*电压相关任务*/	Power_UpdateTask(50);}static void Loop_2Hz(void)	//500ms执行一次{	/*延时存储任务*/	Ano_Parame_Write_task(500);}//系统任务配置,创建不同执行频率的“线程”static sched_task_t sched_tasks[] = {	{Loop_1000Hz,1000,  0, 0},	{Loop_500Hz , 500,  0, 0},	{Loop_200Hz , 200,  0, 0},	{Loop_100Hz , 100,  0, 0},	{Loop_50Hz  ,  50,  0, 0},	{Loop_20Hz  ,  20,  0, 0},	{Loop_2Hz   ,   2,  0, 0},};

 

转载地址:http://ixlni.baihongyu.com/

你可能感兴趣的文章
realsense-ros里里程计相关代码
查看>>
似乎写个ROS功能包并不难,你会订阅话题发布话题,加点逻辑处理,就可以写一些基础的ROS功能包了。
查看>>
if __name__ == ‘__main__‘:就是Python里的main函数,脚本从这里开始执行,如果没有main函数则从上到下顺序执行。
查看>>
PX4官方用户和开发手册的首页面是会给你选择英文和中文的
查看>>
网络协议栈我是不是可以这么理解,就是把你要发送的数据自动处理成TCPIP格式的消息发出去,这种底层的转换不需要你弄了。
查看>>
除了LwIP还有uIP
查看>>
《跟工程师学嵌入式开发》这本书最后的终极项目我反而觉得有说头
查看>>
博士的申请考核制
查看>>
那些硬件的初始化函数主要是在做些上什么?
查看>>
MAVLink学习之路05_MAVLink应用编程接口分析(也有讲STM32下的收发函数)
查看>>
找到了中文版的mavlink手册
查看>>
浅谈飞控开发的仿真功能
查看>>
我觉得在室内弄无人机开发装个防撞机架还是很有必要的,TBUS就做得很好。
查看>>
serial也是见到很多次了,似乎它就是一种串行通信协议
查看>>
TBUS的一些信息
查看>>
PX4+激光雷达在gazebo中仿真实现(古月居)
查看>>
专业和业余的区别就在于你在基础在基本功打磨练习花的时间
查看>>
通过mavlink实现自主航线的过程笔记
查看>>
Ardupilot飞控Mavlink代码学习
查看>>
这些网站有一些嵌入式面试题合集
查看>>