标题:
STM32四轴飞控源码
[打印本页]
作者:
DSYdsyYSDysd520
时间:
2019-5-10 11:07
标题:
STM32四轴飞控源码
PID算法程序 基于四轴飞行器 CPU: STM32F103CB2.4G: NRF24L01电子罗盘:HMC5883陀螺仪+加速度计:MPU-6050 固定的传感器通讯格式为:0X88+0XA1+0X1D+ACC XYZ+GYRO XYZ +MAG XYZ +ANGLE ROLL PITCH YAW + cyc_time +0x00 + 0x00 +0x00 注意,所有数据位int16格式,angle飞控端为float,发送时乘以100,上位机以int16格式接收,显示时再除以100 自定义
单片机源程序如下:
/* Includes ------------------------------------------------------------------*/
#include "config.h"
uint8_t SYS_INIT_OK; //系统初始化完成标志
uint32_t While1_Lasttime=0;//存储while循环的时间
////////////////////////////////////////////////////////////////////////////////
void SYS_INIT(void);
void LOOP(void);
////////////////////////////////////////////////////////////////////////////////
int main(void)
{
SYS_INIT_OK=0;
SYS_INIT();
SYS_INIT_OK=1;
IMU_CYCTIME = GET_NOWTIME(&While1_Lasttime);//更新两次读取时间间隔
while (1)
{
LOOP();
}
}
////////////////////////////////////////////////////////////////////////////////
void LOOP(void)
{
}
////////////////////////////////////////////////////////////////////////////////
void SYS_INIT(void)
{
MOTO_INIT(); //马达初始化
NVIC_INIT(); //中断初始化
TIM3_INIT(); //延时函数初始化
TIM2_INIT(); //用于监测系统
LED_INIT(); //IO初始化
LED4_OFF;
// EXTI1_INIT(); //外部中断初始化,接nrf24l01 irq
USART1_INIT(); //串口初始化
i2cInit();
SPI1_INIT();
NRF24L01_INIT();
SetRX_Mode();
// EXTI_GenerateSWInterrupt(EXTI_Line1);//手动进入nrf24L01中断,防止开始时irq管脚就为低电平,无法进入下降沿中断
MPU6050_INIT();
MPU6050_INIT();
SYSTICK_INIT();
PID_INIT();
}
复制代码
所有资料51hei提供下载:
四轴飞控源码FLY_CONTROL.7z
(417.34 KB, 下载次数: 27)
2019-5-10 18:46 上传
点击文件名下载附件
非常值得研究
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1