diff --git a/App/Inc/app_line_seek.h b/App/Inc/app_line_seek.h
index f1d1bf2..3c94856 100644
--- a/App/Inc/app_line_seek.h
+++ b/App/Inc/app_line_seek.h
@@ -1,6 +1,10 @@
#ifndef __APP_LINE_SEEK_H
#define __APP_LINE_SEEK_H
+#include "tim.h"
+
+void LineSeek_Init(void);
void App_LineSeek(void);
+void Hanlde_Crossroad(void);
#endif
\ No newline at end of file
diff --git a/App/Src/app_line_seek.c b/App/Src/app_line_seek.c
index 31d27d0..5e1e5ae 100644
--- a/App/Src/app_line_seek.c
+++ b/App/Src/app_line_seek.c
@@ -4,44 +4,281 @@
#include "line_seek.h"
#include "main.h"
#include "motor.h"
+#include "path_plan.h"
+#include "stm32f1xx_hal_tim.h"
#include "syscalls.h"
+#include "tim.h"
+
+#define LOW_TUNE_SPEED -5
+#define LOW_SPEED 35
+#define MID_SPEED 40
+#define HIGH_SPEED 45
+#define MIN_TURN_TIME 300 // 最小转直角时间
+#define MIN_CROSSING_TIME 200 // 最小走十字路口时间
+#define MIN_CROSSING_STRAIGHT_TIME 50 // 最小走十字路口时间
+#define MIN_TUNE_TIME 40 // 最小微调时间
+#define MAX_TURN_TIME 4000 // 最大转弯时间
+
+typedef enum
+{
+ MOVE_STRAIGHT, // 直行
+ TURN_LEFT, // 左转
+ TURN_RIGHT, // 右转
+ TUNE_LEFT, // 左微调
+ TUNE_RIGHT, // 右微调
+ TURN_LEFT_BIG,
+ TURN_RIGHT_BIG
+} MoveState;
+
+MoveState state, preState; // 运动状态
+int turn_time; // 转弯时间
+int beep_time; // 蜂鸣器鸣叫时间
+int is_crossing; // 是否正在走十字路口
+
+void LINESEEK_HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* htim)
+{
+ if (turn_time < INT16_MAX)
+ {
+ turn_time++; // 每1ms自增一
+ }
+
+ if (beep_time++ > 100)
+ {
+ HAL_GPIO_WritePin(FM_K2_POWERC_GPIO_Port, FM_K2_POWERC_Pin, GPIO_PIN_SET);
+ }
+}
+
+void LineSeek_Init(void)
+{
+ // 注册定时器中断溢出回调
+ HAL_TIM_RegisterCallback(&htim4, HAL_TIM_PERIOD_ELAPSED_CB_ID, LINESEEK_HAL_TIM_PeriodElapsedCallback);
+ HAL_TIM_Base_Start_IT(&htim4);
+}
void App_LineSeek(void)
{
int LineL1 = 1, LineL2 = 1, LineR1 = 1, LineR2 = 1;
- LineSeek_Get(&LineL1, &LineL2, &LineR1, &LineR2); // 获取黑线检测状态
+ // LineSeek_GetStatus(&LineL1, &LineL2, &LineR1, &LineR2); // 获取黑线检测状态
- if ((LineL1 == LOW || LineL2 == LOW) && LineR2 == LOW) // 左大弯
+ LineSeek_GetStatusStr();
+ // printf("%s %d \n", LineSeek_Status, turn_time);
+
+ // return;
+
+ if (turn_time > MIN_CROSSING_TIME)
{
- MOTOR_SetDuty(-30, 30); // 左旋
- HAL_Delay(80);
+ is_crossing = 0;
}
- else if (LineL1 == LOW && (LineR1 == LOW || LineR2 == LOW)) // 右大弯
+
+ if (is_crossing && GetCurrentDirection() == STRAIGHT)
{
- MOTOR_SetDuty(30, -30); // 右旋
- HAL_Delay(80);
+ LineSeek_Status[0] = '1';
+ LineSeek_Status[3] = '1';
}
- else if (LineL1 == LOW) // 左最外侧检测
+
+ switch (state)
{
- MOTOR_SetDuty(-50, 50); // 左旋
- HAL_Delay(10);
- }
- else if (LineR2 == LOW) // 右最外侧检测
- {
- MOTOR_SetDuty(50, -50); // 右旋
- HAL_Delay(10);
- }
- else if (LineL2 == LOW && LineR1 == HIGH) // 中间黑线上的传感器微调车左转
- {
- MOTOR_SetDuty(0, 50); // 左转
- }
- else if (LineL2 == HIGH && LineR1 == LOW) // 中间黑线上的传感器微调车右转
- {
- MOTOR_SetDuty(50, 0); // 右转
- }
- else if (LineL2 == LOW && LineR1 == LOW) // 都是黑色, 加速前进
- {
- MOTOR_SetDuty(50, 50); // 直走
+ case MOVE_STRAIGHT: // 直行
+ MOTOR_SetDuty(HIGH_SPEED, HIGH_SPEED);
+ if (LineSeek_Equals("0000")) // 十字路口
+ {
+ Hanlde_Crossroad();
+ }
+ else if (LineSeek_Equals("1011")) // 左微调
+ {
+ state = TUNE_LEFT;
+ }
+ else if (LineSeek_Equals("1101")) // 右微调
+ {
+ state = TUNE_RIGHT;
+ }
+ else if (LineSeek_Equals("0001")) // 左直角
+ {
+ turn_time = 0;
+ state = TURN_LEFT;
+ }
+ else if (LineSeek_Equals("1000")) // 右直角
+ {
+ turn_time = 0;
+ state = TURN_RIGHT;
+ }
+ else if (LineSeek_Equals("0xx1")) // 左锐角
+ {
+ state = TURN_LEFT_BIG;
+ }
+ else if (LineSeek_Equals("1xx0")) // 右锐角
+ {
+ state = TURN_RIGHT_BIG;
+ }
+ else if (LineSeek_Equals("1111")) // 冲出去了,使用上一个转向
+ {
+ state = preState;
+ }
+ break;
+ case TURN_LEFT: // 左直角
+ MOTOR_SetDuty(-HIGH_SPEED, HIGH_SPEED);
+ if (LineSeek_Equals("0000")) // 十字路口
+ {
+ Hanlde_Crossroad();
+ }
+ else if (LineSeek_Equals("1001") &&
+ ((preState != TUNE_LEFT && turn_time >= MIN_TURN_TIME - 1) ||
+ (preState == TUNE_LEFT && turn_time >= MIN_TUNE_TIME))) // 直行
+ {
+ state = MOVE_STRAIGHT;
+ preState = TURN_LEFT;
+ is_crossing = 0;
+ }
+ else if (LineSeek_Equals("xxx0") && !is_crossing) // 转过头了
+ {
+ turn_time = MIN_TURN_TIME;
+ state = TURN_RIGHT;
+ preState = TURN_LEFT;
+ }
+ break;
+ case TURN_RIGHT: // 右直角
+ MOTOR_SetDuty(HIGH_SPEED, -HIGH_SPEED);
+ if (LineSeek_Equals("0000")) // 十字路口
+ {
+ Hanlde_Crossroad();
+ }
+ else if (LineSeek_Equals("1001") &&
+ ((preState != TUNE_RIGHT && turn_time >= MIN_TURN_TIME - 1) ||
+ (preState == TUNE_RIGHT && turn_time >= MIN_TUNE_TIME))) // 直行
+ {
+ state = MOVE_STRAIGHT;
+ preState = TURN_RIGHT;
+ is_crossing = 0;
+ }
+ else if (LineSeek_Equals("0xxx") && !is_crossing) // 转过头了
+ {
+ turn_time = MIN_TURN_TIME;
+ state = TURN_LEFT;
+ preState = TURN_LEFT;
+ }
+ break;
+ case TURN_LEFT_BIG: // 左锐角
+ MOTOR_SetDuty(-MID_SPEED, MID_SPEED);
+ if (LineSeek_Equals("0000")) // 十字路口
+ {
+ Hanlde_Crossroad();
+ }
+ else if (LineSeek_Equals("0001")) // 左直角
+ {
+ turn_time = 0;
+ state = TURN_LEFT;
+ preState = TURN_LEFT_BIG;
+ }
+ else if (LineSeek_Equals("xxx0")) // 转过头了
+ {
+ state = TUNE_RIGHT;
+ // preState = TURN_LEFT_BIG;
+ }
+ break;
+ case TURN_RIGHT_BIG: // 右锐角
+ MOTOR_SetDuty(MID_SPEED, -MID_SPEED);
+ if (LineSeek_Equals("0000")) // 十字路口
+ {
+ Hanlde_Crossroad();
+ }
+ else if (LineSeek_Equals("1000")) // 右直角
+ {
+ turn_time = 0;
+ state = TURN_RIGHT;
+ preState = TURN_RIGHT_BIG;
+ }
+ else if (LineSeek_Equals("0xxx")) // 转过头了
+ {
+ state = TUNE_LEFT;
+ preState = TURN_RIGHT_BIG;
+ }
+ break;
+ case TUNE_LEFT: // 左微调
+ MOTOR_SetDuty(LOW_TUNE_SPEED, HIGH_SPEED);
+ if (LineSeek_Equals("x00x"))
+ {
+ state = MOVE_STRAIGHT;
+ }
+ else if (LineSeek_Equals("0xx1") && GetCurrentDirection() != STRAIGHT) // 左转
+ {
+ turn_time = 0;
+ state = TURN_LEFT;
+ preState = TUNE_LEFT;
+ }
+ else if (LineSeek_Equals("1xx0") && GetCurrentDirection() != STRAIGHT) // 右转
+ {
+ turn_time = 0;
+ state = TURN_RIGHT;
+ preState = TUNE_LEFT;
+ }
+ break;
+ case TUNE_RIGHT: // 右微调
+ MOTOR_SetDuty(HIGH_SPEED, LOW_TUNE_SPEED);
+ if (LineSeek_Equals("x00x"))
+ {
+ state = MOVE_STRAIGHT;
+ }
+ else if (LineSeek_Equals("0xx1") && GetCurrentDirection() != STRAIGHT) // 左转
+ {
+ turn_time = 0;
+ state = TURN_LEFT;
+ preState = TUNE_RIGHT;
+ }
+ else if (LineSeek_Equals("1xx0") && GetCurrentDirection() != STRAIGHT) // 右转
+ {
+ turn_time = 0;
+ state = TURN_RIGHT;
+ preState = TUNE_RIGHT;
+ }
+ break;
+ default:
+ state = MOVE_STRAIGHT;
+ MOTOR_SetDuty(MID_SPEED, MID_SPEED);
+ break;
}
+
+ // if (turn_time >= MAX_TURN_TIME)
+ // {
+ // // state = MOVE_STRAIGHT;
+ // MOTOR_SetDuty(0, 0);
+ // }
+
+ // printf("curr state: %d \n", state);
}
+
+void Hanlde_Crossroad(void)
+{
+ if (is_crossing)
+ {
+ return;
+ }
+
+ beep_time = 0;
+ HAL_GPIO_WritePin(FM_K2_POWERC_GPIO_Port, FM_K2_POWERC_Pin, GPIO_PIN_RESET);
+ // state = MOVE_STRAIGHT;
+ // buzzer(1);
+ // HAL_Delay(50);
+ // buzzer(0);
+
+ // 根据规划的路径进行决断
+ is_crossing = 1;
+ turn_time = 0;
+ int direction = GetNextDirection();
+ switch (direction)
+ {
+ case STRAIGHT:
+ state = MOVE_STRAIGHT;
+ break;
+ case LEFT:
+ state = TURN_LEFT;
+ break;
+ case RIGHT:
+ state = TURN_RIGHT;
+ break;
+ default:
+ state = TURN_RIGHT;
+ break;
+ }
+ // printf("state: %d, dir: %d \n", state, direction);
+}
\ No newline at end of file
diff --git a/App/Src/app_line_seek_v1.c b/App/Src/app_line_seek_v1.c
new file mode 100644
index 0000000..09e17bc
--- /dev/null
+++ b/App/Src/app_line_seek_v1.c
@@ -0,0 +1,88 @@
+
+#include "app_line_seek.h"
+
+#include "line_seek.h"
+#include "main.h"
+#include "motor.h"
+#include "path_plan.h"
+#include "syscalls.h"
+
+// #define LOW_SPEED 30
+// #define MID_SPEED 35
+// #define HIGH_SPEED 40
+
+#define LOW_SPEED 25
+#define MID_SPEED 30
+#define HIGH_SPEED 35
+
+
+void App_LineSeek(void)
+{
+ int LineL1 = 1, LineL2 = 1, LineR1 = 1, LineR2 = 1;
+
+ LineSeek_GetStatus(&LineL1, &LineL2, &LineR1, &LineR2); // 获取黑线检测状态
+
+ LineSeek_GetStatusStr();
+ printf("%s\n", LineSeek_Status);
+
+ // return;
+
+ if (LineSeek_Equals("0000")) // 丁字(十字)路口
+ {
+ buzzer(1);
+
+ // 根据规划的路径进行决断
+ switch (GetNextDirection())
+ {
+ case STRAIGHT:
+ MOTOR_SetDuty(HIGH_SPEED, HIGH_SPEED); // 直走
+ break;
+ case LEFT:
+ MOTOR_SetDuty(HIGH_SPEED, -HIGH_SPEED); // 左转
+ break;
+ case RIGHT:
+ MOTOR_SetDuty(-HIGH_SPEED, HIGH_SPEED); // 右转
+ break;
+ default:
+ MOTOR_Stop();
+ break;
+ }
+ }
+ else
+ {
+ buzzer(0);
+ }
+
+ if (LineSeek_Equals("1000")) // 右直角
+ {
+ MOTOR_SetDuty(HIGH_SPEED, -HIGH_SPEED); // 右旋
+ // HAL_Delay(80);
+ }
+ else if (LineSeek_Equals("0001")) // 左直角
+ {
+ MOTOR_SetDuty(-HIGH_SPEED, HIGH_SPEED); // 左旋;
+ // HAL_Delay(80);
+ }
+ else if (LineSeek_Equals("0xx1")) // 左最外侧检测(锐角)
+ {
+ MOTOR_SetDuty(-HIGH_SPEED, MID_SPEED); // 左旋
+ // HAL_Delay(80);
+ }
+ else if (LineSeek_Equals("1xx0")) // 右最外侧检测(锐角)
+ {
+ MOTOR_SetDuty(MID_SPEED, -HIGH_SPEED); // 右旋
+ // HAL_Delay(80);
+ }
+ else if (LineSeek_Equals("x01x")) // 中间黑线上的传感器微调车左转
+ {
+ MOTOR_SetDuty(0, LOW_SPEED); // 左转
+ }
+ else if (LineSeek_Equals("x10x")) // 中间黑线上的传感器微调车右转
+ {
+ MOTOR_SetDuty(LOW_SPEED, 0); // 右转
+ }
+ else if (LineSeek_Equals("x00x")) // 都是黑色, 加速前进
+ {
+ MOTOR_SetDuty(MID_SPEED, MID_SPEED); // 直走
+ }
+}
diff --git a/App/Src/app_ultrasonic.c b/App/Src/app_ultrasonic.c
index 724a251..2a2e5c2 100644
--- a/App/Src/app_ultrasonic.c
+++ b/App/Src/app_ultrasonic.c
@@ -3,6 +3,7 @@
#include "hcsr04.h"
#include "main.h"
#include "led.h"
+#include "path_plan.h"
#define BLOCK_DISTANCE 150
diff --git a/CAR.ioc b/CAR.ioc
index fbc58ae..aeeb1fe 100644
--- a/CAR.ioc
+++ b/CAR.ioc
@@ -86,6 +86,8 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_2
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.TIM2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
+NVIC.TIM3_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
+NVIC.TIM4_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.USART1_IRQn=true\:3\:1\:true\:false\:true\:true\:true\:true
NVIC.USART2_IRQn=true\:3\:0\:true\:false\:true\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
@@ -278,19 +280,21 @@ TIM2.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE
TIM2.IPParameters=Prescaler,Period,AutoReloadPreload
TIM2.Period=72 - 1
TIM2.Prescaler=10 - 1
+TIM3.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
TIM3.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
TIM3.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
TIM3.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4
TIM3.ClockDivision=TIM_CLOCKDIVISION_DIV1
-TIM3.IPParameters=Channel-PWM Generation4 CH4,Prescaler,ClockDivision,Period,Pulse-PWM Generation4 CH4,Channel-PWM Generation3 CH3,Channel-PWM Generation2 CH2,Pulse-PWM Generation2 CH2,Pulse-PWM Generation3 CH3
+TIM3.IPParameters=Channel-PWM Generation4 CH4,Prescaler,ClockDivision,Period,Pulse-PWM Generation4 CH4,Channel-PWM Generation3 CH3,Channel-PWM Generation2 CH2,Pulse-PWM Generation2 CH2,Pulse-PWM Generation3 CH3,AutoReloadPreload
TIM3.Period=256 - 1
TIM3.Prescaler=720 - 1
TIM3.Pulse-PWM\ Generation2\ CH2=255
TIM3.Pulse-PWM\ Generation3\ CH3=255
TIM3.Pulse-PWM\ Generation4\ CH4=255
+TIM4.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
TIM4.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
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,AutoReloadPreload
TIM4.Period=100
TIM4.Prescaler=720 - 1
TIM4.Pulse-PWM\ Generation1\ CH1=100
diff --git a/Core/Inc/main.h b/Core/Inc/main.h
index afa8e32..d01cff8 100644
--- a/Core/Inc/main.h
+++ b/Core/Inc/main.h
@@ -106,10 +106,6 @@ void Error_Handler(void);
/* USER CODE BEGIN Private defines */
#define LOW (0)
#define HIGH (1)
-#define LEFT (0)
-#define STRAIGHT (1)
-#define RIGHT (2)
-#define STOP (3)
/* USER CODE END Private defines */
#ifdef __cplusplus
diff --git a/Core/Inc/stm32f1xx_it.h b/Core/Inc/stm32f1xx_it.h
index 63af3ef..64ba1a0 100644
--- a/Core/Inc/stm32f1xx_it.h
+++ b/Core/Inc/stm32f1xx_it.h
@@ -57,6 +57,8 @@ void PendSV_Handler(void);
void SysTick_Handler(void);
void DMA1_Channel6_IRQHandler(void);
void TIM2_IRQHandler(void);
+void TIM3_IRQHandler(void);
+void TIM4_IRQHandler(void);
void USART1_IRQHandler(void);
void USART2_IRQHandler(void);
void EXTI15_10_IRQHandler(void);
diff --git a/Core/Src/main.c b/Core/Src/main.c
index e0a7a4b..883b377 100644
--- a/Core/Src/main.c
+++ b/Core/Src/main.c
@@ -18,16 +18,21 @@
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
+
#include "dma.h"
+#include "gpio.h"
#include "i2c.h"
#include "tim.h"
#include "usart.h"
-#include "gpio.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
+#include "app_line_seek.h"
#include "bluetooth.h"
#include "hcsr04.h"
+#include "led.h"
+#include "motor.h"
+#include "path_plan.h"
#include "syscalls.h"
/* USER CODE END Includes */
@@ -67,96 +72,114 @@ void SystemClock_Config(void);
/* USER CODE END 0 */
/**
- * @brief The application entry point.
- * @retval int
- */
+ * @brief The application entry point.
+ * @retval int
+ */
int main(void)
{
+ /* USER CODE BEGIN 1 */
- /* USER CODE BEGIN 1 */
+ uint8_t pData[10] = {1, 2, 3};
+ /* USER CODE END 1 */
- /* USER CODE END 1 */
+ /* MCU Configuration--------------------------------------------------------*/
- /* MCU Configuration--------------------------------------------------------*/
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
- HAL_Init();
+ /* USER CODE BEGIN Init */
- /* USER CODE BEGIN Init */
+ /* USER CODE END Init */
- /* USER CODE END Init */
+ /* Configure the system clock */
+ SystemClock_Config();
- /* Configure the system clock */
- SystemClock_Config();
+ /* USER CODE BEGIN SysInit */
- /* USER CODE BEGIN SysInit */
+ /* USER CODE END SysInit */
- /* USER CODE END SysInit */
+ /* Initialize all configured peripherals */
+ MX_GPIO_Init();
+ MX_DMA_Init();
+ MX_I2C2_Init();
+ MX_TIM1_Init();
+ MX_TIM2_Init();
+ MX_TIM3_Init();
+ MX_TIM4_Init();
+ MX_USART1_UART_Init();
+ // MX_USART2_UART_Init();
- /* Initialize all configured peripherals */
- MX_GPIO_Init();
- MX_DMA_Init();
- MX_I2C2_Init();
- MX_TIM1_Init();
- MX_TIM2_Init();
- MX_TIM3_Init();
- MX_TIM4_Init();
- // MX_USART1_UART_Init();
- MX_USART2_UART_Init();
- /* USER CODE BEGIN 2 */
- BLUETOOTH_Init();
- HC_SR04_Init();
- /* USER CODE END 2 */
+ /* USER CODE BEGIN 2 */
+ HC_SR04_Init();
+ BLUETOOTH_Init();
+ MOTOR_Init();
+ PathPlanner_Init();
+ LineSeek_Init();
+ /* USER CODE END 2 */
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1)
- {
- /* USER CODE END WHILE */
-
- /* USER CODE BEGIN 3 */
-
- }
- /* USER CODE END 3 */
+ /* Infinite loop */
+ /* USER CODE BEGIN WHILE */
+ while (1)
+ {
+ // my_printf(HUART1, "%s\r\n", *pData);
+
+ // if (HAL_OK == HAL_UART_Receive(&huart2, (uint8_t *)pData, 2, 1000))
+ // {
+ // HAL_UART_Transmit(&huart2, (uint8_t *)pData, sizeof(pData), 1000);
+ // HAL_Delay(500);
+ // }
+
+ // HAL_Delay(2000);
+
+ App_LineSeek();
+
+ // MOTOR_SetDuty(-20,20);
+
+ // HAL_Delay(300); // 延时300毫秒
+
+ /* USER CODE END WHILE */
+
+ /* USER CODE BEGIN 3 */
+ }
+ /* USER CODE END 3 */
}
/**
- * @brief System Clock Configuration
- * @retval None
- */
+ * @brief System Clock Configuration
+ * @retval None
+ */
void SystemClock_Config(void)
{
- RCC_OscInitTypeDef RCC_OscInitStruct = {0};
- RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
- /** Initializes the RCC Oscillators according to the specified parameters
- * in the RCC_OscInitTypeDef structure.
- */
- RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
- RCC_OscInitStruct.HSEState = RCC_HSE_ON;
- RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
- RCC_OscInitStruct.HSIState = RCC_HSI_ON;
- RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
- RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
- RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
- if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
- {
- Error_Handler();
- }
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
+ RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+ RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
+ RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
+ if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+ {
+ Error_Handler();
+ }
- /** Initializes the CPU, AHB and APB buses clocks
- */
- RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
- |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
- RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
- RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
- RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
- RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
- if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
- {
- Error_Handler();
- }
+ if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
+ {
+ Error_Handler();
+ }
}
/* USER CODE BEGIN 4 */
@@ -164,33 +187,33 @@ void SystemClock_Config(void)
/* USER CODE END 4 */
/**
- * @brief This function is executed in case of error occurrence.
- * @retval None
- */
+ * @brief This function is executed in case of error occurrence.
+ * @retval None
+ */
void Error_Handler(void)
{
- /* USER CODE BEGIN Error_Handler_Debug */
+ /* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
__disable_irq();
while (1)
{
}
- /* 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
- * where the assert_param error has occurred.
- * @param file: pointer to the source file name
- * @param line: assert_param error line source number
- * @retval None
- */
+ * @brief Reports the name of the source file and the source line number
+ * where the assert_param error has occurred.
+ * @param file: pointer to the source file name
+ * @param line: assert_param error line source number
+ * @retval None
+ */
void assert_failed(uint8_t *file, uint32_t line)
{
- /* USER CODE BEGIN 6 */
+ /* USER CODE BEGIN 6 */
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
- /* USER CODE END 6 */
+ /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */
diff --git a/Core/Src/stm32f1xx_it.c b/Core/Src/stm32f1xx_it.c
index 9258712..fb7ced6 100644
--- a/Core/Src/stm32f1xx_it.c
+++ b/Core/Src/stm32f1xx_it.c
@@ -1,20 +1,20 @@
/* USER CODE BEGIN Header */
/**
- ******************************************************************************
- * @file stm32f1xx_it.c
- * @brief Interrupt Service Routines.
- ******************************************************************************
- * @attention
- *
- * Copyright (c) 2024 STMicroelectronics.
- * All rights reserved.
- *
- * This software is licensed under terms that can be found in the LICENSE file
- * in the root directory of this software component.
- * If no LICENSE file comes with this software, it is provided AS-IS.
- *
- ******************************************************************************
- */
+ ******************************************************************************
+ * @file stm32f1xx_it.c
+ * @brief Interrupt Service Routines.
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2024 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software is licensed under terms that can be found in the LICENSE file
+ * in the root directory of this software component.
+ * If no LICENSE file comes with this software, it is provided AS-IS.
+ *
+ ******************************************************************************
+ */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
@@ -56,6 +56,8 @@
/* External variables --------------------------------------------------------*/
extern TIM_HandleTypeDef htim2;
+extern TIM_HandleTypeDef htim3;
+extern TIM_HandleTypeDef htim4;
extern DMA_HandleTypeDef hdma_usart2_rx;
extern UART_HandleTypeDef huart1;
extern UART_HandleTypeDef huart2;
@@ -75,9 +77,9 @@ void NMI_Handler(void)
/* USER CODE END NonMaskableInt_IRQn 0 */
/* USER CODE BEGIN NonMaskableInt_IRQn 1 */
- while (1)
- {
- }
+ while (1)
+ {
+ }
/* USER CODE END NonMaskableInt_IRQn 1 */
}
@@ -229,6 +231,34 @@ void TIM2_IRQHandler(void)
/* USER CODE END TIM2_IRQn 1 */
}
+/**
+ * @brief This function handles TIM3 global interrupt.
+ */
+void TIM3_IRQHandler(void)
+{
+ /* USER CODE BEGIN TIM3_IRQn 0 */
+
+ /* USER CODE END TIM3_IRQn 0 */
+ HAL_TIM_IRQHandler(&htim3);
+ /* USER CODE BEGIN TIM3_IRQn 1 */
+
+ /* USER CODE END TIM3_IRQn 1 */
+}
+
+/**
+ * @brief This function handles TIM4 global interrupt.
+ */
+void TIM4_IRQHandler(void)
+{
+ /* USER CODE BEGIN TIM4_IRQn 0 */
+
+ /* USER CODE END TIM4_IRQn 0 */
+ HAL_TIM_IRQHandler(&htim4);
+ /* USER CODE BEGIN TIM4_IRQn 1 */
+
+ /* USER CODE END TIM4_IRQn 1 */
+}
+
/**
* @brief This function handles USART1 global interrupt.
*/
diff --git a/Core/Src/tim.c b/Core/Src/tim.c
index 5ff3c10..a263420 100644
--- a/Core/Src/tim.c
+++ b/Core/Src/tim.c
@@ -158,7 +158,7 @@ void MX_TIM3_Init(void)
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
htim3.Init.Period = 256 - 1;
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
+ htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
{
Error_Handler();
@@ -218,9 +218,9 @@ void MX_TIM4_Init(void)
htim4.Instance = TIM4;
htim4.Init.Prescaler = 720 - 1;
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim4.Init.Period = 100;
+ htim4.Init.Period = 100;
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
+ htim4.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
{
Error_Handler();
@@ -295,6 +295,10 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
/* USER CODE END TIM3_MspInit 0 */
/* TIM3 clock enable */
__HAL_RCC_TIM3_CLK_ENABLE();
+
+ /* TIM3 interrupt Init */
+ HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(TIM3_IRQn);
/* USER CODE BEGIN TIM3_MspInit 1 */
/* USER CODE END TIM3_MspInit 1 */
@@ -306,6 +310,10 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
/* USER CODE END TIM4_MspInit 0 */
/* TIM4 clock enable */
__HAL_RCC_TIM4_CLK_ENABLE();
+
+ /* TIM4 interrupt Init */
+ HAL_NVIC_SetPriority(TIM4_IRQn, 0, 0);
+ HAL_NVIC_EnableIRQ(TIM4_IRQn);
/* USER CODE BEGIN TIM4_MspInit 1 */
/* USER CODE END TIM4_MspInit 1 */
@@ -418,6 +426,9 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
/* USER CODE END TIM3_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_TIM3_CLK_DISABLE();
+
+ /* TIM3 interrupt Deinit */
+ HAL_NVIC_DisableIRQ(TIM3_IRQn);
/* USER CODE BEGIN TIM3_MspDeInit 1 */
/* USER CODE END TIM3_MspDeInit 1 */
@@ -429,6 +440,9 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* tim_baseHandle)
/* USER CODE END TIM4_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_TIM4_CLK_DISABLE();
+
+ /* TIM4 interrupt Deinit */
+ HAL_NVIC_DisableIRQ(TIM4_IRQn);
/* USER CODE BEGIN TIM4_MspDeInit 1 */
/* USER CODE END TIM4_MspDeInit 1 */
diff --git a/MDK-ARM/CAR.uvguix.lenovo b/MDK-ARM/CAR.uvguix.lenovo
deleted file mode 100644
index ac660df..0000000
--- a/MDK-ARM/CAR.uvguix.lenovo
+++ /dev/null
@@ -1,1941 +0,0 @@
-
-
-
- -6.1
-
- ### uVision Project, (C) Keil Software
-
-
- D:\OneDrive\OneDrive - my.swjtu.edu.cn\Data\program code\Projects\Car\MDK-ARM
-
-
-
-
-
-
- 38003
- Registers
- 115 114
-
-
- 346
- Code Coverage
- 725 160
-
-
- 204
- Performance Analyzer
- 885
-
-
-
-
-
- 35141
- Event Statistics
-
- 200 50 700
-
-
- 1506
- Symbols
-
- 60 60 60
-
-
- 1936
- Watch 1
-
- 200 133 133
-
-
- 1937
- Watch 2
-
- 200 133 133
-
-
- 1935
- Call Stack + Locals
-
- 200 133 133
-
-
- 2506
- Trace Data
-
- 75 135 130 95 70 230 200 150
-
-
- 466
- Source Browser
- 500
- 300
-
-
-
-
-
-
-
- 1
- 1
- 0
- 0
- -1
-
-
-
-
-
-
- 44
- 2
- 3
-
- -32000
- -32000
-
-
- -1
- -1
-
-
- 152
- 389
- 1390
- 774
-
-
-
- 0
-
- 1348
- 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000008000000010000000100000061443A5C4F6E6544726976655C4F6E654472697665202D206D792E73776A74752E6564752E636E5C446174615C70726F6772616D20636F64655C50726F6A656374735C4361725C436F72655C5372635C73797374656D5F73746D3332663178782E63000000001273797374656D5F73746D3332663178782E6300000000C5D4F200FFFFFFFF55443A5C4F6E6544726976655C4F6E654472697665202D206D792E73776A74752E6564752E636E5C446174615C70726F6772616D20636F64655C50726F6A656374735C4361725C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000FFDC7800FFFFFFFF5A443A5C4F6E6544726976655C4F6E654472697665202D206D792E73776A74752E6564752E636E5C446174615C70726F6772616D20636F64655C50726F6A656374735C4361725C557365725C5372635C626C7565746F6F74682E63000000000B626C7565746F6F74682E6300000000BECEA100FFFFFFFF7D443A5C4F6E6544726976655C4F6E654472697665202D206D792E73776A74752E6564752E636E5C446174615C70726F6772616D20636F64655C50726F6A656374735C4361725C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F7263635F65782E68000000001673746D3332663178785F68616C5F7263635F65782E6800000000F0A0A100FFFFFFFF7C443A5C4F6E6544726976655C4F6E654472697665202D206D792E73776A74752E6564752E636E5C446174615C70726F6772616D20636F64655C50726F6A656374735C4361725C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F666C6173682E68000000001573746D3332663178785F68616C5F666C6173682E6800000000BCA8E100FFFFFFFF7F443A5C4F6E6544726976655C4F6E654472697665202D206D792E73776A74752E6564752E636E5C446174615C70726F6772616D20636F64655C50726F6A656374735C4361725C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F666C6173685F65782E68000000001873746D3332663178785F68616C5F666C6173685F65782E68000000009CC1B600FFFFFFFF7A443A5C4F6E6544726976655C4F6E654472697665202D206D792E73776A74752E6564752E636E5C446174615C70726F6772616D20636F64655C50726F6A656374735C4361725C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F646D612E68000000001373746D3332663178785F68616C5F646D612E6800000000F7B88600FFFFFFFF7A443A5C4F6E6544726976655C4F6E654472697665202D206D792E73776A74752E6564752E636E5C446174615C70726F6772616D20636F64655C50726F6A656374735C4361725C447269766572735C53544D3332463178785F48414C5F4472697665725C496E635C73746D3332663178785F68616C5F7263632E68000000001373746D3332663178785F68616C5F7263632E6800000000D9ADC200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F300000066000000B705000020020000
-
-
-
- 0
- Build
-
- -1
- -1
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- BA0000004F00000039040000C3000000
-
-
- 16
- BA0000006600000039040000DA000000
-
-
-
- 1005
- 1005
- 1
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 0300000066000000EC000000F0010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 109
- 109
- 1
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 0300000066000000EC000000F0010000
-
-
- 16
- 2200000039000000FA0000000C020000
-
-
-
- 1465
- 1465
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 1466
- 1466
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 1467
- 1467
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 1468
- 1468
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 1506
- 1506
- 0
- 0
- 0
- 0
- 32767
- 0
- 16384
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 1913
- 1913
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- BD0000006600000036040000AA000000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 1935
- 1935
- 0
- 0
- 0
- 0
- 32767
- 0
- 32768
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 1936
- 1936
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 1937
- 1937
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 1939
- 1939
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 1940
- 1940
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 1941
- 1941
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 1942
- 1942
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 195
- 195
- 1
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 0300000066000000EC000000F0010000
-
-
- 16
- 2200000039000000FA0000000C020000
-
-
-
- 196
- 196
- 1
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 0300000066000000EC000000F0010000
-
-
- 16
- 2200000039000000FA0000000C020000
-
-
-
- 197
- 197
- 1
- 0
- 0
- 0
- 32767
- 0
- 32768
- 0
-
- 16
- 0000000021020000B705000040030000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 198
- 198
- 0
- 0
- 0
- 0
- 32767
- 0
- 32768
- 0
-
- 16
- 00000000AC0100003904000034020000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 199
- 199
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 0300000024020000B405000027030000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 203
- 203
- 0
- 0
- 0
- 0
- 32767
- 0
- 8192
- 0
-
- 16
- BD0000006600000036040000AA000000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 204
- 204
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- BD0000006600000036040000AA000000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 221
- 221
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 00000000000000000000000000000000
-
-
- 16
- 0A0000000A0000006E0000006E000000
-
-
-
- 2506
- 2506
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 2507
- 2507
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 343
- 343
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- BD0000006600000036040000AA000000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 346
- 346
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- BD0000006600000036040000AA000000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 35141
- 35141
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- BD0000006600000036040000AA000000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35824
- 35824
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- BD0000006600000036040000AA000000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 35885
- 35885
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35886
- 35886
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35887
- 35887
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35888
- 35888
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35889
- 35889
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35890
- 35890
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35891
- 35891
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35892
- 35892
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35893
- 35893
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35894
- 35894
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35895
- 35895
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35896
- 35896
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35897
- 35897
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35898
- 35898
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35899
- 35899
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35900
- 35900
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35901
- 35901
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35902
- 35902
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35903
- 35903
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35904
- 35904
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 35905
- 35905
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 38003
- 38003
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 0300000066000000EC000000F0010000
-
-
- 16
- 2200000039000000FA0000000C020000
-
-
-
- 38007
- 38007
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 0300000024020000B405000027030000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 436
- 436
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 0300000024020000B405000027030000
-
-
- 16
- 2200000039000000FA0000000C020000
-
-
-
- 437
- 437
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 440
- 440
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 463
- 463
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 0300000024020000B405000027030000
-
-
- 16
- 2200000039000000FA0000000C020000
-
-
-
- 466
- 466
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 0300000024020000B405000027030000
-
-
- 16
- 2200000039000000FA0000000C020000
-
-
-
- 470
- 470
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- BD0000006600000036040000AA000000
-
-
- 16
- 22000000390000003E020000AD000000
-
-
-
- 50000
- 50000
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50001
- 50001
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50002
- 50002
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50003
- 50003
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50004
- 50004
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50005
- 50005
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50006
- 50006
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50007
- 50007
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50008
- 50008
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50009
- 50009
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50010
- 50010
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50011
- 50011
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50012
- 50012
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50013
- 50013
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50014
- 50014
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50015
- 50015
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50016
- 50016
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50017
- 50017
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50018
- 50018
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 50019
- 50019
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 860300006600000036040000A3010000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 59392
- 59392
- 1
- 0
- 0
- 0
- 966
- 0
- 8192
- 0
-
- 16
- 0000000000000000D10300001C000000
-
-
- 16
- 0A0000000A0000006E0000006E000000
-
-
-
- 59393
- 0
- 1
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 0000000040030000B705000053030000
-
-
- 16
- 0A0000000A0000006E0000006E000000
-
-
-
- 59399
- 59399
- 1
- 0
- 0
- 0
- 476
- 0
- 8192
- 1
-
- 16
- 000000001C000000E701000038000000
-
-
- 16
- 0A0000000A0000006E0000006E000000
-
-
-
- 59400
- 59400
- 0
- 0
- 0
- 0
- 612
- 0
- 8192
- 2
-
- 16
- 00000000380000006F02000054000000
-
-
- 16
- 0A0000000A0000006E0000006E000000
-
-
-
- 824
- 824
- 0
- 0
- 0
- 0
- 32767
- 0
- 4096
- 0
-
- 16
- 03000000C3010000360400001B020000
-
-
- 16
- 2200000039000000D8000000E3000000
-
-
-
- 3312
- 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFBA000000C300000039040000C7000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000BA0000006600000039040000DA000000BA0000004F00000039040000C30000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF7F0300004F00000083030000BC010000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000830300006600000039040000D3010000830300004F00000039040000BC01000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFEF0000004F000000F300000009020000010000000200001004000000010000004CFFFFFFF8040000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000EF00000020020000000000004F000000EF000000090200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000A801000039040000AC01000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000000000000C3010000390400004B02000000000000AC010000390400003402000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF1D020000AC010000210200003402000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000009020000B70500000D020000010000000100001004000000010000008CFDFFFF72000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF01000077940000018000800000010000000000000024020000B705000057030000000000000D020000B7050000400300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
-
-
- 59392
- File
-
- 2580
- 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001348414C5F54494D5F4D7370506F7374496E6974960000000000000001001348414C5F54494D5F4D7370506F7374496E697400000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000
-
-
- 1423
- 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000
-
-
- 1423
- 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000
-
-
-
- 59399
- Build
-
- 966
- 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000034341529600000000000000010003434152000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000
-
-
- 583
- 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000
-
-
- 583
- 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000
-
-
-
- 59400
- Debug
-
- 2373
- 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000
-
-
- 898
- 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000
-
-
- 898
- 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000
-
-
-
- 0
- 1463
- 914
-
-
-
-
-
- 1
- 0
-
- 100
- 1
-
- ../Core/Src/system_stm32f1xx.c
- 0
- 1
- 1
- 1
-
- 0
-
-
- ../Core/Src/main.c
- 0
- 106
- 114
- 1
-
- 0
-
-
- ..\User\Src\bluetooth.c
- 0
- 42
- 64
- 1
-
- 0
-
-
- ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc_ex.h
- 0
- 1835
- 1857
- 1
-
- 0
-
-
- ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash.h
- 0
- 254
- 274
- 1
-
- 0
-
-
- ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_flash_ex.h
- 0
- 726
- 748
- 1
-
- 0
-
-
- ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_dma.h
- 0
- 354
- 376
- 1
-
- 0
-
-
- ../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_rcc.h
- 0
- 1132
- 1154
- 1
-
- 0
-
-
-
-
-
diff --git a/MDK-ARM/CAR.uvoptx b/MDK-ARM/CAR.uvoptx
index 2478158..9521874 100644
--- a/MDK-ARM/CAR.uvoptx
+++ b/MDK-ARM/CAR.uvoptx
@@ -135,7 +135,7 @@
0
CMSIS_AGDI
- -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)
+ -X"CMSIS-DAP_LU" -ULU_2022_8888 -O206 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:STM32F103C8$Flash\STM32F10x_128.FLM)
0
diff --git a/MDK-ARM/CAR.uvprojx b/MDK-ARM/CAR.uvprojx
index f392583..78067dd 100644
--- a/MDK-ARM/CAR.uvprojx
+++ b/MDK-ARM/CAR.uvprojx
@@ -81,7 +81,7 @@
0
- 1
+ 0
0
diff --git a/Makefile b/Makefile
index 616ba71..3b62267 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
##########################################################################################################################
-# File automatically-generated by tool: [projectgenerator] version: [4.4.0-B60] date: [Sat Jul 13 16:33:46 CST 2024]
+# File automatically-generated by tool: [projectgenerator] version: [4.4.0-B60] date: [Wed Jul 17 21:44:09 CST 2024]
##########################################################################################################################
# ------------------------------------------------
@@ -62,13 +62,18 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c \
Core/Src/system_stm32f1xx.c \
Core/Src/sysmem.c \
-User/Src/hcsr04.c \
-User/Src/motor.c \
-User/Src/led.c \
-User/Src/bluetooth.c \
-User/Src/control.c \
-User/Src/line_seek.c \
-App/Src/app_line_seek.c
+Peripheral/Src/hcsr04.c \
+Peripheral/Src/motor.c \
+Peripheral/Src/led.c \
+Peripheral/Src/bluetooth.c \
+Peripheral/Src/control.c \
+Peripheral/Src/line_seek.c \
+Peripheral/Src/path_plan.c \
+Peripheral/Src/servo.c \
+Peripheral/Src/infrared.c \
+App/Src/app_line_seek.c \
+App/Src/app_ultrasonic.c
+
# ASM sources
ASM_SOURCES = \
@@ -129,7 +134,7 @@ AS_INCLUDES =
# C includes
C_INCLUDES = \
-ICore/Inc \
--IUser/Inc \
+-IPeripheral/Inc \
-IApp/Inc \
-IDrivers/STM32F1xx_HAL_Driver/Inc \
-IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy \
diff --git a/Peripheral/Inc/line_seek.h b/Peripheral/Inc/line_seek.h
index 7873655..7954ed2 100644
--- a/Peripheral/Inc/line_seek.h
+++ b/Peripheral/Inc/line_seek.h
@@ -1,9 +1,10 @@
#ifndef __LINE_SEEK_H__
#define __LINE_SEEK_H__
-#include "main.h"
+extern char LineSeek_Status[5];
-// 获取巡线状态
-void LineSeek_Get(int *p_iL1, int *p_iL2, int *p_iR1, int *p_iR2);
+void LineSeek_GetStatus(int *p_iL1, int *p_iL2, int *p_iR1, int *p_iR2);
+char *LineSeek_GetStatusStr();
+int LineSeek_Equals(const char *expression);
#endif
\ No newline at end of file
diff --git a/Peripheral/Inc/motor.h b/Peripheral/Inc/motor.h
index 35d7a45..4a408f1 100644
--- a/Peripheral/Inc/motor.h
+++ b/Peripheral/Inc/motor.h
@@ -5,7 +5,7 @@
#include "main.h"
-void MOTOR_Start(void);
+void MOTOR_Init(void);
void MOTOR_Slip(void);
void MOTOR_Stop(void);
void MOTOR_SetDuty(int8_t leftDuty, int8_t rightDuty);
diff --git a/Peripheral/Inc/path_plan.h b/Peripheral/Inc/path_plan.h
new file mode 100644
index 0000000..3cb03cd
--- /dev/null
+++ b/Peripheral/Inc/path_plan.h
@@ -0,0 +1,29 @@
+#ifndef __PATH_PLAN_H
+#define __PATH_PLAN_H
+
+// 定义方向枚举
+typedef enum
+{
+ STRAIGHT,
+ LEFT,
+ RIGHT,
+ STOP
+} Direction;
+
+// 定义路径规划器结构
+typedef struct
+{
+ int currentStep;
+ Direction* path;
+ int pathLength;
+} PathPlanner;
+
+// 全局路径规划器
+extern PathPlanner pathPlanner;
+
+void PathPlanner_Init();
+Direction GetCurrentDirection();
+Direction GetNextDirection();
+void AddPathStep(Direction step);
+
+#endif
diff --git a/Peripheral/Src/control.c b/Peripheral/Src/control.c
index 9765e99..e5afd94 100644
--- a/Peripheral/Src/control.c
+++ b/Peripheral/Src/control.c
@@ -78,7 +78,7 @@ void CONTROL_Mode(uint8_t new_mode, uint8_t state)
case MODE_REMOTE:
speed = 20;
MOTOR_SetDuty(speed, speed);
- MOTOR_Start();
+ MOTOR_Init();
break;
case MODE_PATROL:
break;
@@ -98,7 +98,7 @@ void carMove(uint8_t state)
MOTOR_Stop();
else
{
- MOTOR_Start();
+ MOTOR_Init();
switch (state)
{
// 前进
diff --git a/Peripheral/Src/line_seek.c b/Peripheral/Src/line_seek.c
index 446215a..5779674 100644
--- a/Peripheral/Src/line_seek.c
+++ b/Peripheral/Src/line_seek.c
@@ -1,14 +1,43 @@
#include "line_seek.h"
+#include "main.h"
+
+char LineSeek_Status[5];
+
/**
* @brief 获取巡线状态
* @param[in] int *p_iL1, int *p_iL2, int *p_iR1, int *p_iR2 四路巡线位指针
* @retval void
*/
-void LineSeek_Get(int *p_iL1, int *p_iL2, int *p_iR1, int *p_iR2)
+void LineSeek_GetStatus(int *p_iL1, int *p_iL2, int *p_iR1, int *p_iR2)
{
*p_iL1 = HAL_GPIO_ReadPin(LineSeek_L1_GPIO_Port, LineSeek_L1_Pin);
*p_iL2 = HAL_GPIO_ReadPin(LineSeek_L2_GPIO_Port, LineSeek_L2_Pin);
*p_iR1 = HAL_GPIO_ReadPin(LineSeek_R1_GPIO_Port, LineSeek_R1_Pin);
*p_iR2 = HAL_GPIO_ReadPin(LineSeek_R2_GPIO_Port, LineSeek_R2_Pin);
}
+
+/**
+ * @brief 获取巡线状态并返回表示状态的字符串
+ * @retval char LineSeek_Status[5]
+ */
+char *LineSeek_GetStatusStr()
+{
+ int iL1, iL2, iR1, iR2;
+ LineSeek_GetStatus(&iL1, &iL2, &iR1, &iR2);
+ sprintf(LineSeek_Status, "%d%d%d%d", iL1, iL2, iR1, iR2);
+ return LineSeek_Status;
+}
+
+int LineSeek_Equals(const char *expression)
+{
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (expression[i] != 'x' && expression[i] != LineSeek_Status[i])
+ {
+ return 0;
+ }
+ }
+ return 1;
+}
diff --git a/Peripheral/Src/motor.c b/Peripheral/Src/motor.c
index cf1860b..d5f7ba6 100644
--- a/Peripheral/Src/motor.c
+++ b/Peripheral/Src/motor.c
@@ -3,7 +3,7 @@
#include "tim.h"
#define MAX_SPEED 100
-#define MIN_SPEED 15
+#define MIN_SPEED 5
#define MOTOR_L 1
#define MOTOR_R 2
#define MOTOR_TIM (&htim4)
@@ -12,10 +12,10 @@
int8_t preProcess(int8_t duty, uint8_t motor);
-void MOTOR_Start(void)
+void MOTOR_Init(void)
{
- HAL_TIM_PWM_Start(MOTOR_TIM, MOTOR_L_CHAN);
- HAL_TIM_PWM_Start(MOTOR_TIM, MOTOR_R_CHAN);
+ HAL_TIM_PWM_Start_IT(MOTOR_TIM, MOTOR_L_CHAN);
+ HAL_TIM_PWM_Start_IT(MOTOR_TIM, MOTOR_R_CHAN);
}
/// @brief 自由滑行
diff --git a/Peripheral/Src/path_plan.c b/Peripheral/Src/path_plan.c
new file mode 100644
index 0000000..1654ac2
--- /dev/null
+++ b/Peripheral/Src/path_plan.c
@@ -0,0 +1,51 @@
+
+#include "path_plan.h"
+
+#include "stdio.h"
+
+// 全局路径规划器
+PathPlanner pathPlanner;
+
+// 初始化路径规划器
+void PathPlanner_Init()
+{
+ pathPlanner.currentStep = -1;
+ pathPlanner.path = NULL;
+ pathPlanner.pathLength = 0;
+ SetPath();
+}
+
+// 设置自定义路径
+void SetPath()
+{
+ int i;
+ for (i = 0; i < 100; i++)
+ {
+ AddPathStep(LEFT);
+ AddPathStep(RIGHT);
+ AddPathStep(STRAIGHT);
+ }
+}
+
+// 获取当前方向
+Direction GetCurrentDirection()
+{
+ return pathPlanner.path[pathPlanner.currentStep];
+}
+
+// 获取下一步方向
+Direction GetNextDirection()
+{
+ if (pathPlanner.currentStep >= pathPlanner.pathLength)
+ {
+ pathPlanner.currentStep = -1;
+ }
+ return pathPlanner.path[++pathPlanner.currentStep];
+}
+
+// 添加路径
+void AddPathStep(Direction step)
+{
+ pathPlanner.path = realloc(pathPlanner.path, ++pathPlanner.pathLength * sizeof(Direction));
+ pathPlanner.path[pathPlanner.pathLength - 1] = step;
+}
diff --git a/STM32-for-VSCode.config.yaml b/STM32-for-VSCode.config.yaml
new file mode 100644
index 0000000..223e224
--- /dev/null
+++ b/STM32-for-VSCode.config.yaml
@@ -0,0 +1,109 @@
+# Configuration file for the STM32 for VSCode extension
+# Arrays can be inputted in two ways. One is: [entry_1, entry_2, ..., entry_final]
+# or by adding an indented list below the variable name e.g.:
+# VARIABLE:
+# - entry_1
+# - entry_2
+
+# The project name
+target: CAR
+# Can be C or C++
+language: C
+
+optimization: Og
+
+# MCU settings
+targetMCU: stm32f1x
+cpu: cortex-m3 # type of cpu e.g. cortex-m4
+fpu: # Defines how floating points are defined. Can be left empty.
+floatAbi:
+ldscript: STM32F103C8Tx_FLASH.ld # linker script
+
+# Compiler definitions. The -D prefix for the compiler will be automatically added.
+cDefinitions: []
+cxxDefinitions: []
+asDefinitions: []
+
+# Compiler definition files. you can add a single files or an array of files for different definitions.
+# The file is expected to have a definition each new line.
+# This allows to include for example a .definition file which can be ignored in git and can contain
+# This can be convenient for passing along secrets at compile time, or generating a file for per device setup.
+cDefinitionsFile:
+cxxDefinitionsFile:
+asDefinitionsFile:
+
+# Compiler flags
+cFlags:
+ - -Wall
+ - -fdata-sections
+ - -ffunction-sections
+
+cxxFlags: []
+assemblyFlags:
+ - -Wall
+ - -fdata-sections
+ - -ffunction-sections
+
+linkerFlags:
+ - -Wl,--print-memory-usage
+
+
+# libraries to be included. The -l prefix to the library will be automatically added.
+libraries:
+ - c
+ - m
+
+# Library directories. Folders can be added here that contain custom libraries.
+libraryDirectories: []
+
+# Files or folders that will be excluded from compilation.
+# Glob patterns (https://www.wikiwand.com/en/Glob_(programming)) can be used.
+# Do mind that double stars are reserved in yaml
+# these should be escaped with a: \ or the name should be in double quotes e.g. "**.test.**"
+excludes:
+ - "**/Examples/**"
+ - "**/examples/**"
+ - "**/Example/**"
+ - "**/example/**"
+ - "**_template.*"
+
+
+# Include directories (directories containing .h or .hpp files)
+# If a CubeMX makefile is present it will automatically include the include directories from that makefile.
+includeDirectories:
+ - Inc/**
+ - Core/Inc/**
+ - Core/Lib/**
+ - Src/**
+ - Core/Src/**
+ - Core/Lib/**
+
+
+# Files that should be included in the compilation.
+# If a CubeMX makefile is present it will automatically include the c and cpp/cxx files from that makefile.
+# Glob patterns (https://www.wikiwand.com/en/Glob_(programming)) can be used.
+# Do mind that double stars are reserved in yaml
+# these should be escaped with a: \ or the name should be in double quotes e.g. "HARDWARE_DRIVER*.c"
+sourceFiles:
+ - Src/**
+ - Core/Src/**
+ - Core/Lib/**
+
+
+# When no makefile is present it will show a warning pop-up.
+# However when compilation without the CubeMX Makefile is desired, this can be turned of.
+suppressMakefileWarning: false
+
+# Custom makefile rules
+# Here custom makefile rules can be added to the STM32Make.make file
+# an example of how this can be used is commented out below.
+customMakefileRules:
+# - command: sayhello
+# rule: echo "hello"
+# dependsOn: $(BUILD_DIR)/$(TARGET).elf # can be left out
+
+# Additional flags which will be used when invoking the make command
+makeFlags:
+# - -O # use this option when the output of make is mixed up only works for make version 4.0 and upwards
+# - --silent # use this option to silence the output of the build
+
\ No newline at end of file
diff --git a/STM32Make.make b/STM32Make.make
index 7a3b0e7..059cdd7 100644
--- a/STM32Make.make
+++ b/STM32Make.make
@@ -36,12 +36,11 @@ BUILD_DIR = build
######################################
# C sources
C_SOURCES = \
+App/Src/app_line_seek.c \
+Core/Src/dma.c \
Core/Src/gpio.c \
-Core/Src/hcsr04.c \
Core/Src/i2c.c \
-Core/Src/led.c \
Core/Src/main.c \
-Core/Src/motor.c \
Core/Src/stm32f1xx_hal_msp.c \
Core/Src/stm32f1xx_it.c \
Core/Src/syscalls.c \
@@ -63,7 +62,14 @@ Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc_ex.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c \
Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c \
-Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c
+Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c \
+User/Src/bluetooth.c \
+User/Src/control.c \
+User/Src/hcsr04.c \
+User/Src/led.c \
+User/Src/line_seek.c \
+User/Src/motor.c \
+User/Src/path_plan.c
CPP_SOURCES = \
@@ -82,7 +88,7 @@ PREFIX = arm-none-eabi-
POSTFIX = "
# The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx)
# either it can be added to the PATH environment variable.
-GCC_PATH="E:/PROGRAM FILES/GNU ARM EMBEDDED TOOLCHAIN/10 2021.10/BIN
+GCC_PATH="E:/PROGRAM FILES (X86)/GNU ARM EMBEDDED TOOLCHAIN/10 2021.10/BIN
ifdef GCC_PATH
CXX = $(GCC_PATH)/$(PREFIX)g++$(POSTFIX)
CC = $(GCC_PATH)/$(PREFIX)gcc$(POSTFIX)
@@ -135,11 +141,13 @@ AS_INCLUDES = \
# C includes
C_INCLUDES = \
+-IApp/Inc \
-ICore/Inc \
-IDrivers/CMSIS/Device/ST/STM32F1xx/Include \
-IDrivers/CMSIS/Include \
-IDrivers/STM32F1xx_HAL_Driver/Inc \
--IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy
+-IDrivers/STM32F1xx_HAL_Driver/Inc/Legacy \
+-IUser/Inc
@@ -235,13 +243,13 @@ $(BUILD_DIR):
# flash
#######################################
flash: $(BUILD_DIR)/$(TARGET).elf
- "E:/PROGRAM FILES/OPENOCD-20231002-0.12.0/BIN/OPENOCD.EXE" -f ./openocd.cfg -c "program $(BUILD_DIR)/$(TARGET).elf verify reset exit"
+ "D:/PROGRAM FILES/OPENOCD-20231002-0.12.0/BIN/OPENOCD.EXE" -f ./openocd.cfg -c "program $(BUILD_DIR)/$(TARGET).elf verify reset exit"
#######################################
# erase
#######################################
erase: $(BUILD_DIR)/$(TARGET).elf
- "E:/PROGRAM FILES/OPENOCD-20231002-0.12.0/BIN/OPENOCD.EXE" -f ./openocd.cfg -c "init; reset halt; stm32f1x mass_erase 0; exit"
+ "D:/PROGRAM FILES/OPENOCD-20231002-0.12.0/BIN/OPENOCD.EXE" -f ./openocd.cfg -c "init; reset halt; stm32f1x mass_erase 0; exit"
#######################################
# clean up