自己蛮长时间才搞出来的,希望能给大家点帮助。
单片机源程序如下:
- #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)
|