以前做四轴入门时候写的代码,用的STM32F103ZET6最小系统,包括遥控器接收、6050、姿态解算、三轴PID(需要调),
可在此基础上加定高、摄像头循线、菜单等等程序
中断汇总:
tim6中断(LED闪烁中断):抢占3 响应3
tim5中断(系统运行中断):抢占1 响应0
tim4中断(PWM捕获中断):抢占0 响应3
//输入通道:TIM4
//CH1 CH2 CH3 CH4
//PB6 PB7 PB8 PB9
//roll pitch thr yaw
//电机输出通道:TIM3
//CH1 CH2 CH3 CH4
//PA6 PA7 PB0 PB1
//USART1:数据输出
TX-PA9 RX-PA10
//光流传感器
spi2:
PB12 SPI2_NSS
PB13 SPI2_SCK
PB14 SPI2_MISO
PB15 SPI2_MOSI
//lcd5110
模拟spi:
2.7版本更新日志
更改key的按键io
单片机源程序如下:
- #include "stm32f10x.h"
- #include "myiic.h"
- #include "systime.h"
- #include "mpu6050.h"
- #include "imu.h"
- #include "control.h"
- #include "rc.h"
- #include "motor.h"
- #include "delay.h"
- #include "stdio.h"
-
- u8 i,key=0,j;
- u8 f1,f2,f3;
- u8 linelcd=1; u8 pagelcd=1;
-
-
- //GPIO初始化示例
- // void GPIO_Configuration(void)
- // {
- // GPIO_InitTypeDef GPIO_InitStructure; //定义一个结构体
- // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//选择LED管脚
- // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //管脚频率为50MHZ
- // GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //模式为推挽输出
- // GPIO_Init(GPIOD, &GPIO_InitStructure); //初始化GPIOB寄存器
- // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_8;
- // GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- // GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP; //推挽输出
- // GPIO_Init(GPIOA, &GPIO_InitStructure);
- // }
- int main(void)
- {
- SystemInit();//初始化时钟
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置优先级分组 2
-
-
- delay_init(72); //延时函数初始化
-
- I2C_Init_IO(); // 初始化IIC(6050)
- MPU6050_INIT(); //初始化6050
- delay_ms(1000);
- MPU6050_INIT();
- PID_Init();//PID数值初始化
- Motor_Init(25);//PWM输出初始化
- RC_Init();//遥控器接收初始化(遥控器数值放在RC_CH[X]数组中)
- ACC_SET_OFFSET();//加速度计水平校准
- GYRO_SET_OFFSET();//陀螺仪零偏校准
- //Data_Send_Offset(ACC_OFFSET.X,ACC_OFFSET.Y,ACC_OFFSET.Z,GYRO_OFFSET.X,GYRO_OFFSET.Y,GYRO_OFFSET.Z);//发送加速度计 陀螺仪偏移值
- System_Time_Init();
-
- while(1)
- {
-
- }
-
-
-
- }
复制代码
所有资料51hei提供下载:
2.7最简.rar
(905.88 KB, 下载次数: 82)
|