Compare commits
No commits in common. "9f9b8d350bfa5b5d37025fcd56f0d22fb75c1cfb" and "c96a1e3f0d2d3e1ae756c721d0f2c86d8dc9a248" have entirely different histories.
9f9b8d350b
...
c96a1e3f0d
10
CAR.ioc
10
CAR.ioc
|
@ -65,7 +65,7 @@ Mcu.UserName=STM32F103C8Tx
|
||||||
MxCube.Version=6.12.0
|
MxCube.Version=6.12.0
|
||||||
MxDb.Version=DB.6.0.120
|
MxDb.Version=DB.6.0.120
|
||||||
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
NVIC.DMA1_Channel6_IRQn=true\:0\:0\:true\:false\:true\:true\:true\:true
|
NVIC.DMA1_Channel6_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
||||||
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
NVIC.EXTI15_10_IRQn=true\:1\:0\:true\:false\:true\:true\:true\:true
|
NVIC.EXTI15_10_IRQn=true\:1\:0\:true\:false\:true\:true\:true\:true
|
||||||
NVIC.ForceEnableDMAVector=false
|
NVIC.ForceEnableDMAVector=false
|
||||||
|
@ -75,10 +75,10 @@ NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_2
|
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_2
|
||||||
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
NVIC.SysTick_IRQn=true\:2\:0\:true\:false\:true\:false\:true\:false
|
NVIC.SysTick_IRQn=true\:3\:0\:true\:false\:true\:false\:true\:false
|
||||||
NVIC.TIM2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
NVIC.TIM2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
||||||
NVIC.USART1_IRQn=true\:3\:1\:true\:false\:true\:true\:true\:true
|
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
||||||
NVIC.USART2_IRQn=true\:3\:0\:true\:false\:true\:true\:true\:true
|
NVIC.USART2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
||||||
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
PA0-WKUP.GPIOParameters=PinState,GPIO_Label
|
PA0-WKUP.GPIOParameters=PinState,GPIO_Label
|
||||||
PA0-WKUP.GPIO_Label=FM_K2_POWERC
|
PA0-WKUP.GPIO_Label=FM_K2_POWERC
|
||||||
|
@ -244,7 +244,7 @@ TIM3.Pulse-PWM\ Generation4\ CH4=255
|
||||||
TIM4.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
|
TIM4.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
|
||||||
TIM4.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
|
TIM4.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
|
||||||
TIM4.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Prescaler,Period,Pulse-PWM Generation1 CH1,Pulse-PWM Generation2 CH2
|
TIM4.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Prescaler,Period,Pulse-PWM Generation1 CH1,Pulse-PWM Generation2 CH2
|
||||||
TIM4.Period=0
|
TIM4.Period=100
|
||||||
TIM4.Prescaler=720 - 1
|
TIM4.Prescaler=720 - 1
|
||||||
TIM4.Pulse-PWM\ Generation1\ CH1=100
|
TIM4.Pulse-PWM\ Generation1\ CH1=100
|
||||||
TIM4.Pulse-PWM\ Generation2\ CH2=100
|
TIM4.Pulse-PWM\ Generation2\ CH2=100
|
||||||
|
|
10
Core/Inc/control.h
Normal file
10
Core/Inc/control.h
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#ifndef __CONTROL_H
|
||||||
|
#define __CONTROL_H
|
||||||
|
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
void CONTROL_CommonCmd(uint8_t type, uint8_t state);
|
||||||
|
void CONTROL_RGB(uint8_t r, uint8_t g, uint8_t b);
|
||||||
|
void CONTROL_Mode(uint8_t mode, uint8_t state);
|
||||||
|
|
||||||
|
#endif
|
|
@ -129,7 +129,7 @@
|
||||||
* @brief This is the HAL system configuration section
|
* @brief This is the HAL system configuration section
|
||||||
*/
|
*/
|
||||||
#define VDD_VALUE 3300U /*!< Value of VDD in mv */
|
#define VDD_VALUE 3300U /*!< Value of VDD in mv */
|
||||||
#define TICK_INT_PRIORITY 2U /*!< tick interrupt priority (lowest by default) */
|
#define TICK_INT_PRIORITY 3U /*!< tick interrupt priority (lowest by default) */
|
||||||
#define USE_RTOS 0U
|
#define USE_RTOS 0U
|
||||||
#define PREFETCH_ENABLE 1U
|
#define PREFETCH_ENABLE 1U
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@
|
||||||
#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */
|
#define USE_HAL_IRDA_REGISTER_CALLBACKS 0U /* IRDA register callback disabled */
|
||||||
#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U /* SRAM register callback disabled */
|
#define USE_HAL_SRAM_REGISTER_CALLBACKS 0U /* SRAM register callback disabled */
|
||||||
#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */
|
#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */
|
||||||
#define USE_HAL_TIM_REGISTER_CALLBACKS 1U /* TIM register callback enabled */
|
#define USE_HAL_TIM_REGISTER_CALLBACKS 1U /* TIM register callback disabled */
|
||||||
#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */
|
#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */
|
||||||
#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */
|
#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */
|
||||||
#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */
|
#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */
|
||||||
|
|
|
@ -1,103 +0,0 @@
|
||||||
#ifndef __SYSCALLS_H
|
|
||||||
#define __SYSCALLS_H
|
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stm32f1xx_hal_uart.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#define HUART1 (&huart1)
|
|
||||||
#define HUART2 (&huart2)
|
|
||||||
|
|
||||||
extern UART_HandleTypeDef huart2;
|
|
||||||
|
|
||||||
extern int __io_putchar(int ch) __attribute__((weak));
|
|
||||||
extern int __io_getchar(void) __attribute__((weak));
|
|
||||||
|
|
||||||
__attribute__((weak)) int _read(int file, char *ptr, int len) {
|
|
||||||
(void)file;
|
|
||||||
int DataIdx;
|
|
||||||
|
|
||||||
for (DataIdx = 0; DataIdx < len; DataIdx++) {
|
|
||||||
*ptr++ = __io_getchar();
|
|
||||||
}
|
|
||||||
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
__attribute__((weak)) int _write(int file, char *ptr, int len) {
|
|
||||||
(void)file;
|
|
||||||
int DataIdx;
|
|
||||||
|
|
||||||
for (DataIdx = 0; DataIdx < len; DataIdx++) {
|
|
||||||
__io_putchar(*ptr++);
|
|
||||||
}
|
|
||||||
return len;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 条件编译
|
|
||||||
#ifdef __GNUC__
|
|
||||||
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
|
|
||||||
#define GETCHAR_PROTOTYPE int __io_getchar(void)
|
|
||||||
#else
|
|
||||||
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
|
|
||||||
#define GETCHAR_PROTOTYPE int fgetc(FILE *f)
|
|
||||||
#endif /* __GNUC__ */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief 重定向 C 标准库 printf 函数到串口 huart2
|
|
||||||
* @author Suroy
|
|
||||||
* @param ch
|
|
||||||
* @param f
|
|
||||||
* @return int
|
|
||||||
*
|
|
||||||
* @usage printf("USART1_Target:\r\n");
|
|
||||||
*/
|
|
||||||
PUTCHAR_PROTOTYPE {
|
|
||||||
HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, HAL_MAX_DELAY); // 阻塞式无限等待
|
|
||||||
return ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief 重定向 c库函数 getchar,scanf到 DEBUG_USARTx
|
|
||||||
* 重定向 C 标准库 scanf 函数到串口 huart2
|
|
||||||
* 注意以 空格 为结束
|
|
||||||
* @param f
|
|
||||||
* @return int
|
|
||||||
*
|
|
||||||
* @usage scanf("%c", &RecData);
|
|
||||||
*/
|
|
||||||
GETCHAR_PROTOTYPE {
|
|
||||||
uint8_t ch = 0;
|
|
||||||
HAL_UART_Receive(&huart2, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
|
|
||||||
return ch;
|
|
||||||
}
|
|
||||||
|
|
||||||
void delay_us(uint16_t us) {
|
|
||||||
uint32_t delay = (HAL_RCC_GetHCLKFreq() / 4000000 * us);
|
|
||||||
while (delay--);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief 自定义printf
|
|
||||||
* @param huart, buf
|
|
||||||
* @return void
|
|
||||||
*
|
|
||||||
* @usage my_printf(HUART1, "USART1_Target:\r\n");
|
|
||||||
*/
|
|
||||||
void my_printf(UART_HandleTypeDef *huart, const char *buf, ...) {
|
|
||||||
const char *p = buf;
|
|
||||||
char str[255] = {0};
|
|
||||||
va_list v;
|
|
||||||
va_start(v, buf);
|
|
||||||
vsprintf(str, buf, v);
|
|
||||||
HAL_UART_Transmit(huart, str, strlen(str), 0xff);
|
|
||||||
va_end(v);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
65
Core/Src/bluetooth.c
Normal file
65
Core/Src/bluetooth.c
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
#include "bluetooth.h"
|
||||||
|
#include "usart.h"
|
||||||
|
#include "control.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#define BUFFER_SIZE 100
|
||||||
|
#define MESSAGE_SIZE 19
|
||||||
|
#define CMD_NUM 9
|
||||||
|
|
||||||
|
static int8_t rxBuffer[BUFFER_SIZE], txBuffer[BUFFER_SIZE];
|
||||||
|
static uint8_t cmdIndex;
|
||||||
|
|
||||||
|
void BLUETOOTH_Init(void)
|
||||||
|
{
|
||||||
|
HAL_UARTEx_ReceiveToIdle_DMA(&huart2, rxBuffer, 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
||||||
|
{
|
||||||
|
if (huart == &huart2 && rxBuffer[0] == '$' && rxBuffer[Size - 1] == '#')
|
||||||
|
{
|
||||||
|
// 通用协议
|
||||||
|
if (rxBuffer[2] == ',')
|
||||||
|
{
|
||||||
|
cmdIndex = 0;
|
||||||
|
for (uint8_t i = 1; i < MESSAGE_SIZE; i += 2)
|
||||||
|
if (rxBuffer[i] == '0')
|
||||||
|
++cmdIndex;
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
if (cmdIndex == CMD_NUM)
|
||||||
|
cmdIndex = 0;
|
||||||
|
CONTROL_CommonCmd(cmdIndex, rxBuffer[cmdIndex * 2 + 1]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
static uint16_t num[6];
|
||||||
|
switch (rxBuffer[5])
|
||||||
|
{
|
||||||
|
// 机械手
|
||||||
|
case 'S':
|
||||||
|
break;
|
||||||
|
// 舵机云台
|
||||||
|
case 'P':
|
||||||
|
break;
|
||||||
|
// 七彩灯
|
||||||
|
case 'C':
|
||||||
|
sscanf(rxBuffer + 5, "%*3s%hu,%*3s%hu,%*3s%hu", num, num + 1, num + 2);
|
||||||
|
CONTROL_RGB(num[0], num[1], num[2]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// 模式选择
|
||||||
|
case 'M':
|
||||||
|
sscanf(rxBuffer + 5, "%*4s%c%c", num, num + 1);
|
||||||
|
CONTROL_Mode(num[0] - '0', num[1] - '0');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
memcpy(txBuffer, rxBuffer, Size);
|
||||||
|
printf("%s", txBuffer);
|
||||||
|
HAL_UART_Transmit_IT(&huart2, txBuffer, Size);
|
||||||
|
BLUETOOTH_Init();
|
||||||
|
}
|
||||||
|
}
|
88
Core/Src/control.c
Normal file
88
Core/Src/control.c
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
#include "control.h"
|
||||||
|
#include "hcsr04.h"
|
||||||
|
#include "led.h"
|
||||||
|
#include "motor.h"
|
||||||
|
|
||||||
|
#define CMD_MOVE 0
|
||||||
|
#define CMD_ROTATE 1
|
||||||
|
#define CMD_BUZZER 2
|
||||||
|
#define CMD_SPEED 3
|
||||||
|
// #define CMD_SHAKE 4
|
||||||
|
// #define CMD_SING 5
|
||||||
|
#define CMD_LED 6
|
||||||
|
// #define CMD_FIRE 7
|
||||||
|
// #define CMD_SERVO 8
|
||||||
|
|
||||||
|
void move(uint8_t state);
|
||||||
|
void rotate(uint8_t state);
|
||||||
|
void buzzer(uint8_t state);
|
||||||
|
void speed(uint8_t state);
|
||||||
|
// void shake(uint8_t state);
|
||||||
|
// void sing(uint8_t state);
|
||||||
|
void led(uint8_t state);
|
||||||
|
// void fire(uint8_t state);
|
||||||
|
// void servo(uint8_t state);
|
||||||
|
|
||||||
|
void CONTROL_CommonCmd(uint8_t type, uint8_t state)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case CMD_MOVE:
|
||||||
|
move(state);
|
||||||
|
break;
|
||||||
|
case CMD_ROTATE:
|
||||||
|
rotate(state);
|
||||||
|
break;
|
||||||
|
case CMD_BUZZER:
|
||||||
|
buzzer(state);
|
||||||
|
break;
|
||||||
|
case CMD_SPEED:
|
||||||
|
speed(state);
|
||||||
|
break;
|
||||||
|
// case CMD_SHAKE:
|
||||||
|
// break;
|
||||||
|
// case CMD_SING:
|
||||||
|
// break;
|
||||||
|
case CMD_LED:
|
||||||
|
led(state);
|
||||||
|
break;
|
||||||
|
// case CMD_FIRE:
|
||||||
|
// break;
|
||||||
|
// case CMD_SERVO:
|
||||||
|
// break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CONTROL_RGB(uint8_t r, uint8_t g, uint8_t b)
|
||||||
|
{
|
||||||
|
LED_Start(LED_ALL);
|
||||||
|
LED_SetDuty(r, g, b);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CONTROL_Mode(uint8_t mode, uint8_t state)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void move(uint8_t state)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void rotate(uint8_t state)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void buzzer(uint8_t state)
|
||||||
|
{
|
||||||
|
if (state)
|
||||||
|
HAL_GPIO_WritePin(FM_K2_POWERC_GPIO_Port, FM_K2_POWERC_Pin, GPIO_PIN_RESET);
|
||||||
|
else
|
||||||
|
HAL_GPIO_WritePin(FM_K2_POWERC_GPIO_Port, FM_K2_POWERC_Pin, GPIO_PIN_SET);
|
||||||
|
}
|
||||||
|
|
||||||
|
void speed(uint8_t state)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void led(uint8_t state)
|
||||||
|
{
|
||||||
|
}
|
|
@ -1,10 +1,12 @@
|
||||||
#include "hcsr04.h"
|
#include "hcsr04.h"
|
||||||
#include "tim.h"
|
#include "tim.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
static uint64_t time_start; // 声明变量,用来计时
|
static uint64_t time; // 声明变量,用来计时
|
||||||
static uint64_t time_end; // 声明变量,存储回波信号时间
|
static uint64_t time_end; // 声明变量,存储回波信号时间
|
||||||
uint8_t sonor_state; // 测距状态变量,0:未测量,1:正在测量,2:已测量
|
static int16_t delay_time = -1; // 用于延时
|
||||||
uint32_t sonor_distance; // 测量出的距离,单位mm
|
uint8_t sonor_state; // 测距状态变量,0:未测量,1:正在测量,2:已测量
|
||||||
|
uint32_t sonor_distance; // 测量出的距离,单位mm
|
||||||
|
|
||||||
void delay_us(uint16_t us);
|
void delay_us(uint16_t us);
|
||||||
void HCSR04_HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);
|
void HCSR04_HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);
|
||||||
|
@ -35,12 +37,28 @@ uint32_t sonar_mm(void)
|
||||||
return sonor_distance;
|
return sonor_distance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// @brief 微秒级延时
|
||||||
|
/// @param us 取值范围0-32767
|
||||||
|
void delay_us(uint16_t us)
|
||||||
|
{
|
||||||
|
if (us == 0)
|
||||||
|
return;
|
||||||
|
delay_time = us;
|
||||||
|
time = 0;
|
||||||
|
HAL_TIM_Base_Start_IT(&htim2);
|
||||||
|
while (time < us)
|
||||||
|
;
|
||||||
|
delay_time = -1;
|
||||||
|
}
|
||||||
|
|
||||||
void HCSR04_HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
|
void HCSR04_HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
|
||||||
{
|
{
|
||||||
if (htim == &htim2)
|
if (htim == &htim2)
|
||||||
{
|
{
|
||||||
// 每10us自增一
|
// 每10us自增一
|
||||||
++time_start;
|
++time;
|
||||||
|
if (delay_us > 0 && time * 10 >= delay_time)
|
||||||
|
HAL_TIM_Base_Stop_IT(&htim2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,12 +68,12 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
||||||
{
|
{
|
||||||
if (HAL_GPIO_ReadPin(Echo_GPIO_Port, Echo_Pin))
|
if (HAL_GPIO_ReadPin(Echo_GPIO_Port, Echo_Pin))
|
||||||
{
|
{
|
||||||
time_start = 0;
|
time = 0;
|
||||||
HAL_TIM_Base_Start_IT(&htim2);
|
HAL_TIM_Base_Start_IT(&htim2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
time_end = time_start;
|
time_end = time;
|
||||||
HAL_TIM_Base_Stop_IT(&htim2);
|
HAL_TIM_Base_Stop_IT(&htim2);
|
||||||
sonor_state = 2;
|
sonor_state = 2;
|
||||||
Sonar_CP_Callback();
|
Sonar_CP_Callback();
|
|
@ -102,21 +102,31 @@ int main(void)
|
||||||
// MX_USART1_UART_Init();
|
// MX_USART1_UART_Init();
|
||||||
MX_USART2_UART_Init();
|
MX_USART2_UART_Init();
|
||||||
/* USER CODE BEGIN 2 */
|
/* USER CODE BEGIN 2 */
|
||||||
BLUETOOTH_Init();
|
HC_SR04_Init();
|
||||||
// HC_SR04_Init();
|
|
||||||
/* USER CODE END 2 */
|
/* USER CODE END 2 */
|
||||||
|
|
||||||
/* Infinite loop */
|
/* Infinite loop */
|
||||||
/* USER CODE BEGIN WHILE */
|
/* USER CODE BEGIN WHILE */
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
// printf("test\n");
|
int Distance_mm = sonar_mm();
|
||||||
|
int Distance_m = Distance_mm / 1000;
|
||||||
|
int Distance_m_p = Distance_mm % 1000;
|
||||||
|
printf("Distance_mm = %d\n", Distance_mm);
|
||||||
|
printf("Distance_m = %d\n", Distance_m);
|
||||||
|
printf("Distance_m_p = %d\n", Distance_m_p);
|
||||||
|
|
||||||
// if (sonor_state == 0)
|
if (Distance_mm < 100)
|
||||||
// {
|
{
|
||||||
// sonar_mm();
|
LED_Start(LED_R);
|
||||||
// }
|
MOTOR_Start();
|
||||||
// HAL_Delay(300); // 延时300毫秒
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LED_Stop(LED_R);
|
||||||
|
MOTOR_Stop();
|
||||||
|
}
|
||||||
|
HAL_Delay(300); // 延时300毫秒
|
||||||
|
|
||||||
/* USER CODE END WHILE */
|
/* USER CODE END WHILE */
|
||||||
|
|
||||||
|
@ -126,17 +136,17 @@ int main(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief System Clock Configuration
|
* @brief System Clock Configuration
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
void SystemClock_Config(void)
|
void SystemClock_Config(void)
|
||||||
{
|
{
|
||||||
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
||||||
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
|
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
|
||||||
|
|
||||||
/** Initializes the RCC Oscillators according to the specified parameters
|
/** Initializes the RCC Oscillators according to the specified parameters
|
||||||
* in the RCC_OscInitTypeDef structure.
|
* in the RCC_OscInitTypeDef structure.
|
||||||
*/
|
*/
|
||||||
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
|
||||||
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
||||||
RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
|
RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
|
||||||
|
@ -150,9 +160,8 @@ void SystemClock_Config(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Initializes the CPU, AHB and APB buses clocks
|
/** Initializes the CPU, AHB and APB buses clocks
|
||||||
*/
|
*/
|
||||||
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
|
||||||
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
|
|
||||||
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
|
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
|
||||||
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
|
||||||
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
|
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
|
||||||
|
@ -169,9 +178,9 @@ void SystemClock_Config(void)
|
||||||
/* USER CODE END 4 */
|
/* USER CODE END 4 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This function is executed in case of error occurrence.
|
* @brief This function is executed in case of error occurrence.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
void Error_Handler(void)
|
void Error_Handler(void)
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN Error_Handler_Debug */
|
/* USER CODE BEGIN Error_Handler_Debug */
|
||||||
|
@ -183,14 +192,14 @@ void Error_Handler(void)
|
||||||
/* USER CODE END Error_Handler_Debug */
|
/* USER CODE END Error_Handler_Debug */
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_FULL_ASSERT
|
#ifdef USE_FULL_ASSERT
|
||||||
/**
|
/**
|
||||||
* @brief Reports the name of the source file and the source line number
|
* @brief Reports the name of the source file and the source line number
|
||||||
* where the assert_param error has occurred.
|
* where the assert_param error has occurred.
|
||||||
* @param file: pointer to the source file name
|
* @param file: pointer to the source file name
|
||||||
* @param line: assert_param error line source number
|
* @param line: assert_param error line source number
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
void assert_failed(uint8_t *file, uint32_t line)
|
void assert_failed(uint8_t *file, uint32_t line)
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN 6 */
|
/* USER CODE BEGIN 6 */
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
#include "tim.h"
|
#include "tim.h"
|
||||||
|
|
||||||
#define MAX_SPEED 100
|
#define MAX_SPEED 100
|
||||||
#define MIN_SPEED 15
|
|
||||||
#define MOTOR_L 1
|
#define MOTOR_L 1
|
||||||
#define MOTOR_R 2
|
#define MOTOR_R 2
|
||||||
#define MOTOR_TIM (&htim4)
|
#define MOTOR_TIM (&htim4)
|
||||||
|
@ -38,21 +37,30 @@ void MOTOR_Stop(void)
|
||||||
|
|
||||||
/// @brief 控制电机占空比
|
/// @brief 控制电机占空比
|
||||||
|
|
||||||
/// @param leftDuty 绝对值 0或20-100, 支持正负
|
/// @param leftDuty 绝对值 20-100, 支持正负
|
||||||
/// @param rightDuty 绝对值 0或20-100,支持正负
|
/// @param rightDuty 绝对值 20-100,支持正负
|
||||||
void MOTOR_SetDuty(int8_t leftDuty, int8_t rightDuty)
|
void MOTOR_SetDuty(int8_t leftDuty, int8_t rightDuty)
|
||||||
{
|
{
|
||||||
leftDuty = preProcess(leftDuty, MOTOR_L);
|
leftDuty = preProcess(leftDuty, MOTOR_L);
|
||||||
rightDuty = preProcess(rightDuty, MOTOR_R);
|
rightDuty = preProcess(rightDuty, MOTOR_R);
|
||||||
|
|
||||||
__HAL_TIM_SetCompare(MOTOR_TIM, MOTOR_L_CHAN, leftDuty);
|
uint16_t leftSpeed = (uint32_t)MAX_SPEED * leftDuty / 100;
|
||||||
__HAL_TIM_SetCompare(MOTOR_TIM, MOTOR_R_CHAN, rightDuty);
|
__HAL_TIM_SetCompare(MOTOR_TIM, MOTOR_L_CHAN, leftSpeed);
|
||||||
|
__HAL_TIM_SetCompare(MOTOR_TIM, MOTOR_R_CHAN, leftSpeed);
|
||||||
|
|
||||||
|
uint16_t rightSpeed = (uint32_t)MAX_SPEED * rightDuty / 100;
|
||||||
|
__HAL_TIM_SetCompare(MOTOR_TIM, MOTOR_L_CHAN, rightSpeed);
|
||||||
|
__HAL_TIM_SetCompare(MOTOR_TIM, MOTOR_R_CHAN, rightSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t preProcess(int8_t duty, uint8_t motor)
|
int8_t preProcess(int8_t duty, uint8_t motor)
|
||||||
{
|
{
|
||||||
if (duty > 0)
|
if (duty >= 0)
|
||||||
{
|
{
|
||||||
|
if (duty > 100)
|
||||||
|
duty = 100;
|
||||||
|
else if (duty < 20)
|
||||||
|
duty = 20;
|
||||||
if (motor & MOTOR_L)
|
if (motor & MOTOR_L)
|
||||||
{
|
{
|
||||||
HAL_GPIO_WritePin(L_FORWARD_GPIO_Port, L_FORWARD_Pin, GPIO_PIN_SET);
|
HAL_GPIO_WritePin(L_FORWARD_GPIO_Port, L_FORWARD_Pin, GPIO_PIN_SET);
|
||||||
|
@ -63,11 +71,13 @@ int8_t preProcess(int8_t duty, uint8_t motor)
|
||||||
HAL_GPIO_WritePin(R_FORWARD_GPIO_Port, R_FORWARD_Pin, GPIO_PIN_SET);
|
HAL_GPIO_WritePin(R_FORWARD_GPIO_Port, R_FORWARD_Pin, GPIO_PIN_SET);
|
||||||
HAL_GPIO_WritePin(R_BACKWARD_GPIO_Port, R_BACKWARD_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(R_BACKWARD_GPIO_Port, R_BACKWARD_Pin, GPIO_PIN_RESET);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (duty < 0)
|
else
|
||||||
{
|
{
|
||||||
duty = -duty;
|
if (duty < -100)
|
||||||
|
duty = -100;
|
||||||
|
else if (duty > -20)
|
||||||
|
duty = -20;
|
||||||
if (motor & MOTOR_L)
|
if (motor & MOTOR_L)
|
||||||
{
|
{
|
||||||
HAL_GPIO_WritePin(L_FORWARD_GPIO_Port, L_FORWARD_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(L_FORWARD_GPIO_Port, L_FORWARD_Pin, GPIO_PIN_RESET);
|
||||||
|
@ -79,24 +89,5 @@ int8_t preProcess(int8_t duty, uint8_t motor)
|
||||||
HAL_GPIO_WritePin(R_BACKWARD_GPIO_Port, R_BACKWARD_Pin, GPIO_PIN_SET);
|
HAL_GPIO_WritePin(R_BACKWARD_GPIO_Port, R_BACKWARD_Pin, GPIO_PIN_SET);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
duty = MAX_SPEED;
|
|
||||||
if (motor & MOTOR_L)
|
|
||||||
{
|
|
||||||
HAL_GPIO_WritePin(L_FORWARD_GPIO_Port, L_FORWARD_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(L_BACKWARD_GPIO_Port, L_BACKWARD_Pin, GPIO_PIN_RESET);
|
|
||||||
}
|
|
||||||
if (motor & MOTOR_R)
|
|
||||||
{
|
|
||||||
HAL_GPIO_WritePin(R_FORWARD_GPIO_Port, R_FORWARD_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_GPIO_WritePin(R_BACKWARD_GPIO_Port, R_BACKWARD_Pin, GPIO_PIN_RESET);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (duty > MAX_SPEED)
|
|
||||||
duty = MAX_SPEED;
|
|
||||||
if (duty < MIN_SPEED)
|
|
||||||
duty = MIN_SPEED;
|
|
||||||
return duty;
|
return duty;
|
||||||
}
|
}
|
|
@ -115,7 +115,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
|
||||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
/* USART1 interrupt Init */
|
/* USART1 interrupt Init */
|
||||||
HAL_NVIC_SetPriority(USART1_IRQn, 3, 1);
|
HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);
|
||||||
HAL_NVIC_EnableIRQ(USART1_IRQn);
|
HAL_NVIC_EnableIRQ(USART1_IRQn);
|
||||||
/* USER CODE BEGIN USART1_MspInit 1 */
|
/* USER CODE BEGIN USART1_MspInit 1 */
|
||||||
|
|
||||||
|
@ -162,7 +162,7 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
|
||||||
__HAL_LINKDMA(uartHandle,hdmarx,hdma_usart2_rx);
|
__HAL_LINKDMA(uartHandle,hdmarx,hdma_usart2_rx);
|
||||||
|
|
||||||
/* USART2 interrupt Init */
|
/* USART2 interrupt Init */
|
||||||
HAL_NVIC_SetPriority(USART2_IRQn, 3, 0);
|
HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);
|
||||||
HAL_NVIC_EnableIRQ(USART2_IRQn);
|
HAL_NVIC_EnableIRQ(USART2_IRQn);
|
||||||
/* USER CODE BEGIN USART2_MspInit 1 */
|
/* USER CODE BEGIN USART2_MspInit 1 */
|
||||||
|
|
||||||
|
@ -219,5 +219,18 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
/* USER CODE BEGIN 1 */
|
||||||
|
int fputc(int c, FILE* f)
|
||||||
|
{
|
||||||
|
static uint8_t ch;
|
||||||
|
ch = c;
|
||||||
|
HAL_UART_Transmit(&huart1, &ch, 1, 1000);
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
int fgetc(FILE* f)
|
||||||
|
{
|
||||||
|
static uint8_t ch;
|
||||||
|
HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
|
||||||
|
return ch;
|
||||||
|
}
|
||||||
/* USER CODE END 1 */
|
/* USER CODE END 1 */
|
||||||
|
|
|
@ -117,31 +117,6 @@
|
||||||
<pMon>BIN\CMSIS_AGDI.dll</pMon>
|
<pMon>BIN\CMSIS_AGDI.dll</pMon>
|
||||||
</DebugOpt>
|
</DebugOpt>
|
||||||
<TargetDriverDllRegistry>
|
<TargetDriverDllRegistry>
|
||||||
<SetRegEntry>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Key>ARMRTXEVENTFLAGS</Key>
|
|
||||||
<Name>-L70 -Z18 -C0 -M0 -T1</Name>
|
|
||||||
</SetRegEntry>
|
|
||||||
<SetRegEntry>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Key>DLGTARM</Key>
|
|
||||||
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)</Name>
|
|
||||||
</SetRegEntry>
|
|
||||||
<SetRegEntry>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Key>ARMDBGFLAGS</Key>
|
|
||||||
<Name></Name>
|
|
||||||
</SetRegEntry>
|
|
||||||
<SetRegEntry>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Key>CMSIS_AGDI</Key>
|
|
||||||
<Name>-X"" -O206 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM)</Name>
|
|
||||||
</SetRegEntry>
|
|
||||||
<SetRegEntry>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Key>DLGUARM</Key>
|
|
||||||
<Name></Name>
|
|
||||||
</SetRegEntry>
|
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>UL2CM3</Key>
|
<Key>UL2CM3</Key>
|
||||||
|
@ -153,79 +128,7 @@
|
||||||
<Name>-U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL010000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM)</Name>
|
<Name>-U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_128 -FS08000000 -FL010000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM)</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
</TargetDriverDllRegistry>
|
</TargetDriverDllRegistry>
|
||||||
<Breakpoint>
|
<Breakpoint/>
|
||||||
<Bp>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>34</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>134226582</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>1</BreakIfRCount>
|
|
||||||
<Filename>..\Peripheral\Src\bluetooth.c</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression>\\CAR\../Peripheral/Src/bluetooth.c\34</Expression>
|
|
||||||
</Bp>
|
|
||||||
<Bp>
|
|
||||||
<Number>1</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>32</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>134221102</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>1</BreakIfRCount>
|
|
||||||
<Filename>..\Peripheral\Src\control.c</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression>\\CAR\../Peripheral/Src/control.c\32</Expression>
|
|
||||||
</Bp>
|
|
||||||
<Bp>
|
|
||||||
<Number>2</Number>
|
|
||||||
<Type>0</Type>
|
|
||||||
<LineNumber>24</LineNumber>
|
|
||||||
<EnabledFlag>1</EnabledFlag>
|
|
||||||
<Address>0</Address>
|
|
||||||
<ByteObject>0</ByteObject>
|
|
||||||
<HtxType>0</HtxType>
|
|
||||||
<ManyObjects>0</ManyObjects>
|
|
||||||
<SizeOfObject>0</SizeOfObject>
|
|
||||||
<BreakByAccess>0</BreakByAccess>
|
|
||||||
<BreakIfRCount>0</BreakIfRCount>
|
|
||||||
<Filename>..\Peripheral\Src\bluetooth.c</Filename>
|
|
||||||
<ExecCommand></ExecCommand>
|
|
||||||
<Expression></Expression>
|
|
||||||
</Bp>
|
|
||||||
</Breakpoint>
|
|
||||||
<WatchWindow1>
|
|
||||||
<Ww>
|
|
||||||
<count>0</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>num,0x0A</ItemText>
|
|
||||||
</Ww>
|
|
||||||
</WatchWindow1>
|
|
||||||
<MemoryWindow1>
|
|
||||||
<Mm>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<SubType>8</SubType>
|
|
||||||
<ItemText>rxBuffer</ItemText>
|
|
||||||
<AccSizeX>0</AccSizeX>
|
|
||||||
</Mm>
|
|
||||||
</MemoryWindow1>
|
|
||||||
<MemoryWindow2>
|
|
||||||
<Mm>
|
|
||||||
<WinNumber>2</WinNumber>
|
|
||||||
<SubType>0</SubType>
|
|
||||||
<ItemText>num</ItemText>
|
|
||||||
<AccSizeX>0</AccSizeX>
|
|
||||||
</Mm>
|
|
||||||
</MemoryWindow2>
|
|
||||||
<Tracepoint>
|
<Tracepoint>
|
||||||
<THDelay>0</THDelay>
|
<THDelay>0</THDelay>
|
||||||
</Tracepoint>
|
</Tracepoint>
|
||||||
|
@ -280,7 +183,7 @@
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Application/MDK-ARM</GroupName>
|
<GroupName>Application/MDK-ARM</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
|
@ -311,6 +214,66 @@
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>..\Core\Src\bluetooth.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>bluetooth.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>2</GroupNumber>
|
||||||
|
<FileNumber>3</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>..\Core\Src\control.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>control.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>2</GroupNumber>
|
||||||
|
<FileNumber>4</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>..\Core\Src\hcsr04.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>hcsr04.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>2</GroupNumber>
|
||||||
|
<FileNumber>5</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>..\Core\Src\led.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>led.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>2</GroupNumber>
|
||||||
|
<FileNumber>6</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>..\Core\Src\motor.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>motor.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>2</GroupNumber>
|
||||||
|
<FileNumber>7</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>../Core/Src/main.c</PathWithFileName>
|
<PathWithFileName>../Core/Src/main.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>main.c</FilenameWithoutPath>
|
<FilenameWithoutPath>main.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
|
@ -318,7 +281,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>3</FileNumber>
|
<FileNumber>8</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -330,7 +293,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>4</FileNumber>
|
<FileNumber>9</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -342,7 +305,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>5</FileNumber>
|
<FileNumber>10</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -354,7 +317,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>6</FileNumber>
|
<FileNumber>11</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -366,7 +329,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>7</FileNumber>
|
<FileNumber>12</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -378,7 +341,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>8</FileNumber>
|
<FileNumber>13</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -390,7 +353,7 @@
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>9</FileNumber>
|
<FileNumber>14</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
@ -402,74 +365,6 @@
|
||||||
</File>
|
</File>
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Group>
|
|
||||||
<GroupName>Application/User/Peripheral</GroupName>
|
|
||||||
<tvExp>1</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<cbSel>0</cbSel>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>10</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Peripheral\Src\bluetooth.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>bluetooth.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>11</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Peripheral\Src\control.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>control.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>12</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Peripheral\Src\hcsr04.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>hcsr04.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>13</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Peripheral\Src\led.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>led.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<GroupNumber>3</GroupNumber>
|
|
||||||
<FileNumber>14</FileNumber>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<tvExp>0</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<bDave2>0</bDave2>
|
|
||||||
<PathWithFileName>..\Peripheral\Src\motor.c</PathWithFileName>
|
|
||||||
<FilenameWithoutPath>motor.c</FilenameWithoutPath>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<bShared>0</bShared>
|
|
||||||
</File>
|
|
||||||
</Group>
|
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Drivers/STM32F1xx_HAL_Driver</GroupName>
|
<GroupName>Drivers/STM32F1xx_HAL_Driver</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -477,7 +372,7 @@
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>15</FileNumber>
|
<FileNumber>15</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -489,7 +384,7 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>16</FileNumber>
|
<FileNumber>16</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -501,7 +396,7 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>17</FileNumber>
|
<FileNumber>17</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -513,7 +408,7 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>18</FileNumber>
|
<FileNumber>18</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -525,7 +420,7 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>19</FileNumber>
|
<FileNumber>19</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -537,7 +432,7 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>20</FileNumber>
|
<FileNumber>20</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -549,7 +444,7 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>21</FileNumber>
|
<FileNumber>21</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -561,7 +456,7 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>22</FileNumber>
|
<FileNumber>22</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -573,7 +468,7 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>23</FileNumber>
|
<FileNumber>23</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -585,7 +480,7 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>24</FileNumber>
|
<FileNumber>24</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -597,7 +492,7 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>25</FileNumber>
|
<FileNumber>25</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -609,7 +504,7 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>26</FileNumber>
|
<FileNumber>26</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -621,7 +516,7 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>27</FileNumber>
|
<FileNumber>27</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -633,7 +528,7 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>28</FileNumber>
|
<FileNumber>28</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -645,7 +540,7 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>29</FileNumber>
|
<FileNumber>29</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
@ -665,7 +560,7 @@
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>5</GroupNumber>
|
<GroupNumber>4</GroupNumber>
|
||||||
<FileNumber>30</FileNumber>
|
<FileNumber>30</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
|
|
|
@ -81,7 +81,7 @@
|
||||||
</BeforeMake>
|
</BeforeMake>
|
||||||
<AfterMake>
|
<AfterMake>
|
||||||
<RunUserProg1>0</RunUserProg1>
|
<RunUserProg1>0</RunUserProg1>
|
||||||
<RunUserProg2>0</RunUserProg2>
|
<RunUserProg2>1</RunUserProg2>
|
||||||
<UserProg1Name></UserProg1Name>
|
<UserProg1Name></UserProg1Name>
|
||||||
<UserProg2Name></UserProg2Name>
|
<UserProg2Name></UserProg2Name>
|
||||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||||
|
@ -339,7 +339,7 @@
|
||||||
<MiscControls></MiscControls>
|
<MiscControls></MiscControls>
|
||||||
<Define>USE_HAL_DRIVER,STM32F103xB</Define>
|
<Define>USE_HAL_DRIVER,STM32F103xB</Define>
|
||||||
<Undefine></Undefine>
|
<Undefine></Undefine>
|
||||||
<IncludePath>../Core/Inc;../Peripheral/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include</IncludePath>
|
<IncludePath>../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include</IncludePath>
|
||||||
</VariousControls>
|
</VariousControls>
|
||||||
</Cads>
|
</Cads>
|
||||||
<Aads>
|
<Aads>
|
||||||
|
@ -393,6 +393,31 @@
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Application/User/Core</GroupName>
|
<GroupName>Application/User/Core</GroupName>
|
||||||
<Files>
|
<Files>
|
||||||
|
<File>
|
||||||
|
<FileName>bluetooth.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\Core\Src\bluetooth.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>control.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\Core\Src\control.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>hcsr04.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\Core\Src\hcsr04.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>led.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\Core\Src\led.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>motor.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\Core\Src\motor.c</FilePath>
|
||||||
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<FileName>main.c</FileName>
|
<FileName>main.c</FileName>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
|
@ -435,36 +460,6 @@
|
||||||
</File>
|
</File>
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
<Group>
|
|
||||||
<GroupName>Application/User/Peripheral</GroupName>
|
|
||||||
<Files>
|
|
||||||
<File>
|
|
||||||
<FileName>bluetooth.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\Peripheral\Src\bluetooth.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>control.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\Peripheral\Src\control.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>hcsr04.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\Peripheral\Src\hcsr04.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>led.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\Peripheral\Src\led.c</FilePath>
|
|
||||||
</File>
|
|
||||||
<File>
|
|
||||||
<FileName>motor.c</FileName>
|
|
||||||
<FileType>1</FileType>
|
|
||||||
<FilePath>..\Peripheral\Src\motor.c</FilePath>
|
|
||||||
</File>
|
|
||||||
</Files>
|
|
||||||
</Group>
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Drivers/STM32F1xx_HAL_Driver</GroupName>
|
<GroupName>Drivers/STM32F1xx_HAL_Driver</GroupName>
|
||||||
<Files>
|
<Files>
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<component_viewer schemaVersion="0.1" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="Component_Viewer.xsd">
|
|
||||||
|
|
||||||
<component name="EventRecorderStub" version="1.0.0"/> <!--name and version of the component-->
|
|
||||||
<events>
|
|
||||||
</events>
|
|
||||||
|
|
||||||
</component_viewer>
|
|
|
@ -1,21 +0,0 @@
|
||||||
#ifndef __CONTROL_H
|
|
||||||
#define __CONTROL_H
|
|
||||||
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
#define MODE_STOP 0
|
|
||||||
// 遥控模式
|
|
||||||
#define MODE_REMOTE 1
|
|
||||||
// 巡线模式
|
|
||||||
#define MODE_PATROL 2
|
|
||||||
// 避障模式
|
|
||||||
#define MODE_AVOID 3
|
|
||||||
|
|
||||||
// 小车运行模式
|
|
||||||
extern uint8_t mode;
|
|
||||||
|
|
||||||
void CONTROL_CommonCmd(uint8_t type, uint8_t state);
|
|
||||||
void CONTROL_RGB(uint8_t r, uint8_t g, uint8_t b);
|
|
||||||
void CONTROL_Mode(uint8_t new_mode, uint8_t state);
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,87 +0,0 @@
|
||||||
#include "bluetooth.h"
|
|
||||||
#include "usart.h"
|
|
||||||
#include "control.h"
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include "syscalls.h"
|
|
||||||
|
|
||||||
#define BUFFER_SIZE 100
|
|
||||||
#define MESSAGE_SIZE 19
|
|
||||||
#define CMD_NUM 9
|
|
||||||
|
|
||||||
static int8_t rxBuffer[BUFFER_SIZE], txBuffer[10000];
|
|
||||||
static uint16_t txLen;
|
|
||||||
static uint8_t cmdIndex;
|
|
||||||
|
|
||||||
void BLUETOOTH_Init(void)
|
|
||||||
{
|
|
||||||
HAL_UARTEx_ReceiveToIdle_DMA(&huart2, rxBuffer, 100);
|
|
||||||
// HAL_UART_Receive_IT(&huart2, txBuffer + txLen, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
// void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
|
|
||||||
// {
|
|
||||||
// if (huart == &huart2)
|
|
||||||
// {
|
|
||||||
// ++txLen;
|
|
||||||
// if (txLen == 10000)
|
|
||||||
// txLen = 0;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
|
||||||
{
|
|
||||||
if (huart == &huart2 && rxBuffer[0] == '$' && rxBuffer[Size - 1] == '#')
|
|
||||||
{
|
|
||||||
rxBuffer[Size] = '\0';
|
|
||||||
// 通用协议
|
|
||||||
if (mode == MODE_REMOTE && rxBuffer[2] == ',')
|
|
||||||
{
|
|
||||||
cmdIndex = 0;
|
|
||||||
for (uint8_t i = 1; i < MESSAGE_SIZE; i += 2)
|
|
||||||
if (rxBuffer[i] == '0')
|
|
||||||
++cmdIndex;
|
|
||||||
else
|
|
||||||
break;
|
|
||||||
if (cmdIndex == CMD_NUM)
|
|
||||||
cmdIndex = 0;
|
|
||||||
CONTROL_CommonCmd(cmdIndex, rxBuffer[cmdIndex * 2 + 1] - '0');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
static uint16_t num[6];
|
|
||||||
|
|
||||||
// 模式选择
|
|
||||||
if (rxBuffer[5] == 'M')
|
|
||||||
{
|
|
||||||
sscanf(rxBuffer + 5, "%*4s%c%c", num, num + 1);
|
|
||||||
CONTROL_Mode(num[0] - '0', num[1] - '0');
|
|
||||||
}
|
|
||||||
else if (mode == MODE_REMOTE)
|
|
||||||
switch (rxBuffer[5])
|
|
||||||
{
|
|
||||||
// 机械手
|
|
||||||
case 'S':
|
|
||||||
break;
|
|
||||||
// 舵机云台
|
|
||||||
case 'P':
|
|
||||||
break;
|
|
||||||
// 七彩灯
|
|
||||||
case 'C':
|
|
||||||
sscanf(rxBuffer + 5, "%*3s%hu,%*3s%hu,%*3s%hu", num, num + 1, num + 2);
|
|
||||||
CONTROL_RGB(num[0], num[1], num[2]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// my_printf(&huart2, rxBuffer);
|
|
||||||
// strcpy(txBuffer + txLen, rxBuffer);
|
|
||||||
// if (txLen + Size >= 9999)
|
|
||||||
// txLen = 0;
|
|
||||||
// else
|
|
||||||
// txLen += Size;
|
|
||||||
// txBuffer[txLen] = '\0';
|
|
||||||
// if (strcmp(rxBuffer, "$send#") == 0)
|
|
||||||
// my_printf(&huart2, txBuffer);
|
|
||||||
BLUETOOTH_Init();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,189 +0,0 @@
|
||||||
#include "control.h"
|
|
||||||
#include "hcsr04.h"
|
|
||||||
#include "led.h"
|
|
||||||
#include "motor.h"
|
|
||||||
|
|
||||||
#define CMD_MOVE 0
|
|
||||||
#define CMD_ROTATE 1
|
|
||||||
#define CMD_BUZZER 2
|
|
||||||
#define CMD_SPEED 3
|
|
||||||
// #define CMD_SHAKE 4
|
|
||||||
// #define CMD_SING 5
|
|
||||||
#define CMD_LED 6
|
|
||||||
// #define CMD_FIRE 7
|
|
||||||
// #define CMD_SERVO 8
|
|
||||||
|
|
||||||
// 小车默认速度
|
|
||||||
static int8_t speed = 20;
|
|
||||||
uint8_t mode = MODE_REMOTE;
|
|
||||||
|
|
||||||
void carMove(uint8_t state);
|
|
||||||
void carSpin(uint8_t state);
|
|
||||||
void callBuzzer(uint8_t state);
|
|
||||||
void setSpeed(uint8_t state);
|
|
||||||
// void shake(uint8_t state);
|
|
||||||
// void sing(uint8_t state);
|
|
||||||
void setLed(uint8_t state);
|
|
||||||
// void fire(uint8_t state);
|
|
||||||
// void servo(uint8_t state);
|
|
||||||
|
|
||||||
void CONTROL_CommonCmd(uint8_t type, uint8_t state)
|
|
||||||
{
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case CMD_MOVE:
|
|
||||||
carMove(state);
|
|
||||||
break;
|
|
||||||
case CMD_ROTATE:
|
|
||||||
carSpin(state);
|
|
||||||
break;
|
|
||||||
case CMD_BUZZER:
|
|
||||||
callBuzzer(state);
|
|
||||||
break;
|
|
||||||
case CMD_SPEED:
|
|
||||||
setSpeed(state);
|
|
||||||
break;
|
|
||||||
// case CMD_SHAKE:
|
|
||||||
// break;
|
|
||||||
// case CMD_SING:
|
|
||||||
// break;
|
|
||||||
case CMD_LED:
|
|
||||||
setLed(state);
|
|
||||||
break;
|
|
||||||
// case CMD_FIRE:
|
|
||||||
// break;
|
|
||||||
// case CMD_SERVO:
|
|
||||||
// break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CONTROL_RGB(uint8_t r, uint8_t g, uint8_t b)
|
|
||||||
{
|
|
||||||
LED_Start(LED_ALL);
|
|
||||||
LED_SetDuty(r, g, b);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CONTROL_Mode(uint8_t new_mode, uint8_t state)
|
|
||||||
{
|
|
||||||
if (state == 0)
|
|
||||||
{
|
|
||||||
mode = MODE_STOP;
|
|
||||||
MOTOR_Stop();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mode = new_mode;
|
|
||||||
switch (new_mode)
|
|
||||||
{
|
|
||||||
case MODE_REMOTE:
|
|
||||||
speed = 20;
|
|
||||||
MOTOR_SetDuty(speed, speed);
|
|
||||||
MOTOR_Start();
|
|
||||||
break;
|
|
||||||
case MODE_PATROL:
|
|
||||||
break;
|
|
||||||
case MODE_AVOID:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
mode = MODE_STOP;
|
|
||||||
MOTOR_Stop();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void carMove(uint8_t state)
|
|
||||||
{
|
|
||||||
if (state == 0)
|
|
||||||
MOTOR_Stop();
|
|
||||||
else
|
|
||||||
{
|
|
||||||
MOTOR_Start();
|
|
||||||
switch (state)
|
|
||||||
{
|
|
||||||
// 前进
|
|
||||||
case 1:
|
|
||||||
MOTOR_SetDuty(speed, speed);
|
|
||||||
break;
|
|
||||||
// 后退
|
|
||||||
case 2:
|
|
||||||
MOTOR_SetDuty(-speed, -speed);
|
|
||||||
break;
|
|
||||||
// 左转
|
|
||||||
case 3:
|
|
||||||
MOTOR_SetDuty(0, speed);
|
|
||||||
break;
|
|
||||||
// 右转
|
|
||||||
case 4:
|
|
||||||
MOTOR_SetDuty(speed, 0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void carSpin(uint8_t state)
|
|
||||||
{
|
|
||||||
if (state == 1)
|
|
||||||
MOTOR_SetDuty(speed, -speed);
|
|
||||||
else if (state == 2)
|
|
||||||
MOTOR_SetDuty(-speed, speed);
|
|
||||||
}
|
|
||||||
|
|
||||||
void callBuzzer(uint8_t state)
|
|
||||||
{
|
|
||||||
HAL_GPIO_WritePin(FM_K2_POWERC_GPIO_Port, FM_K2_POWERC_Pin, GPIO_PIN_RESET);
|
|
||||||
HAL_Delay(200);
|
|
||||||
HAL_GPIO_WritePin(FM_K2_POWERC_GPIO_Port, FM_K2_POWERC_Pin, GPIO_PIN_SET);
|
|
||||||
}
|
|
||||||
|
|
||||||
void setSpeed(uint8_t state)
|
|
||||||
{
|
|
||||||
if (state == 1)
|
|
||||||
speed += 10;
|
|
||||||
else if (state == 2)
|
|
||||||
speed -= 10;
|
|
||||||
if (speed > 100)
|
|
||||||
speed = 100;
|
|
||||||
else if (speed < 20)
|
|
||||||
speed = 20;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setLed(uint8_t state)
|
|
||||||
{
|
|
||||||
LED_Start(LED_ALL);
|
|
||||||
switch (state)
|
|
||||||
{
|
|
||||||
// 白
|
|
||||||
case 1:
|
|
||||||
LED_SetDuty(255, 255, 255);
|
|
||||||
break;
|
|
||||||
// 红
|
|
||||||
case 2:
|
|
||||||
LED_SetDuty(255, 0, 0);
|
|
||||||
break;
|
|
||||||
// 绿
|
|
||||||
case 3:
|
|
||||||
LED_SetDuty(0, 255, 0);
|
|
||||||
break;
|
|
||||||
// 蓝
|
|
||||||
case 4:
|
|
||||||
LED_SetDuty(0, 0, 255);
|
|
||||||
break;
|
|
||||||
// 青
|
|
||||||
case 5:
|
|
||||||
LED_SetDuty(0, 255, 255);
|
|
||||||
break;
|
|
||||||
// 品红
|
|
||||||
case 6:
|
|
||||||
LED_SetDuty(255, 0, 255);
|
|
||||||
break;
|
|
||||||
// 黄
|
|
||||||
case 7:
|
|
||||||
LED_SetDuty(255, 255, 0);
|
|
||||||
break;
|
|
||||||
// 关
|
|
||||||
default:
|
|
||||||
LED_SetDuty(0, 0, 0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user