以前做四軸入門時候寫的代碼,用的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)
2018-6-26 18:51 上傳
點擊文件名下載附件
|