|
源码如下
- #include "sys.h"
- /********************************************************************
- 说明:本程序移植自平衡小车之家的STM32F103C8T6,所用芯片为STM32F4ZGT6
- 该程序仅供学习交流用,请勿用作商业用途
- 2020-1-27
- ZhOu
- ********************************************************************/
- float Middle=179,Walk_Middle=-0.33;//BALANCE
- float Motor_Balance,Motor_Walk;//MOTOR SPEED
- float Balance_KP=1800,Balance_KD=8,Velocity_KP=150,Velocity_KI=3,Walk_Balance_KP=450,Walk_Balance_KD=12,Walk_Velocity_KP=175,Walk_Velocity_KI=10; //PID
- float Encoder_Balance,Encoder_Walk;//ENCODER
- float Pitch,Roll,Yaw; //三轴角度和XYZ轴目标速度
- u8 Flag_Show=0;//OLED SHOW
- u8 delay_50,delay_flag;//DELAY
- char star_flag=0,Flag_Stop=0;
- int main()
- {
- char key,time=0;
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
- delay_init(168); //初始化延时函数
- LED_Init();
- KEY_Init();
- uart_init(115200); //串口初始化波特率为115200
- TIM4_PWM_Init(10000-1,1-1);
- TIM9_PWM_Init(10000-1,1-1);
- Encoder_Init_TIM2();
- Encoder_Init_TIM3();
- OLED_Init();
- OLED_Fill(0x00);
- IIC_Init(); //=====IIC初始化
- MPU6050_initialize(); //=====MPU6050初始化
- DMP_Init(); //=====初始化DMP
- MY_EXTI_Init(); //=====MPU6050 5ms定时中断初始化
- TIM_SetTIM4Compare1(0);
- TIM_SetTIM4Compare2(0);
- TIM_SetTIM4Compare3(0);
- TIM_SetTIM4Compare4(0);
- while(1)
- {
- key=KEY_Scan(0);
- KEY_Work(key);
- if(time==5)
- {
- time=0;
- OLED_Fill(0x00);
- if(star_flag==1) LED1=0;
- else if(star_flag==2) LED1=!LED1;
- }
- if(Flag_Show==0)
- oled_show();
- else if(Flag_Show==1)
- DataScope();
- delay_flag=1;
- delay_50=0;
- while(delay_flag); //通过MPU6050的INT中断实现的50ms精准延时
- time++;
- }
- }
复制代码 |
-
-
独轮车源码.7z
393.63 KB, 下载次数: 59, 下载积分: 黑币 -5
评分
-
查看全部评分
|