|
源碼如下
- #include "sys.h"
- /********************************************************************
- 說明:本程序移植自平衡小車之家的STM32F103C8T6,所用芯片為STM32F4ZGT6
- 該程序僅供學(xué)習(xí)交流用,請(qǐng)勿用作商業(yè)用途
- 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軸目標(biāo)速度
- 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);//設(shè)置系統(tǒng)中斷優(yōu)先級(jí)分組2
- delay_init(168); //初始化延時(shí)函數(shù)
- 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定時(shí)中斷初始化
- 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中斷實(shí)現(xiàn)的50ms精準(zhǔn)延時(shí)
- time++;
- }
- }
復(fù)制代碼 |
-
-
獨(dú)輪車源碼.7z
2021-1-27 17:28 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
393.63 KB, 下載次數(shù): 59, 下載積分: 黑幣 -5
評(píng)分
-
查看全部評(píng)分
|