自己蠻長時間才搞出來的,希望能給大家點幫助。
單片機源程序如下:
- #include "stm32f10x.h"
- #include "bsp_usart.h"
- #include "bsp_usart_blt.h"
- #include "bsp_hc05.h"
- #include "bsp_led.h"
- #include "bsp_mpu6050.h"
- #include "bsp_i2c.h"
- #include "bsp_time.h"
- #include "bsp_pwm.h"
- #include "bsp_balance.h"
- #include "bsp_filter.h"
- #include "bsp_encoder.h"
- #include <math.h>
- #include <string.h>
- #include <stdlib.h>
- unsigned int Task_Delay[NumOfTask];
- char sendData[1024];
- char linebuff[1024];
- int _Move;
- /**
- * @brief 主函數
- * @param 無
- * @retval 無
- */
- int main(void)
- {
- char* redata;
- uint16_t len;
- uint16_t linelen;
-
- SysTick_Init();
- SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;
- GPIO_Config(RCC_APB2Periph_GPIOB, GPIO_Pin_12, GPIO_Pin_13, GPIOB);
- GPIO_Config(RCC_APB2Periph_GPIOB, GPIO_Pin_14, GPIO_Pin_15, GPIOB);
- //USART_Config();
- BLT_USART_Config();
- TIM2_ENCODER_Init();
- TIM3_ENCODER_Init();
- PWM_TIM_Config();
- I2C_Config();
- MPU6050_Init();
- Time_Config();
-
- while(1)
- {
- if(Task_Delay[0]==0)
- {
- redata = get_rebuff(&len);
- linelen = get_line(linebuff,redata,len);
-
- if(linelen<200 && linelen != 0)
- {
- switch(*redata)
- {
- case '2':_Move = 2; break;
- case '8':_Move = 8; break;
- case '4':_Move = 4; break;
- case '6':_Move = 6; break;
- case '5':_Move = 5; break;
- }
- clean_rebuff();
- }
- Task_Delay[0]=200;
- }
- }
- }
復制代碼
所有資料51hei提供下載:
STM32-Balance.rar
(309.46 KB, 下載次數: 100)
2018-7-20 22:54 上傳
點擊文件名下載附件
平衡車源碼 下載積分: 黑幣 -5
|