From 01df4763ade009114c9ec49664275d9cb4b945ce Mon Sep 17 00:00:00 2001 From: EN Date: Tue, 16 Jul 2024 22:39:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=88=B5=E6=9C=BA=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CAR.ioc | 4 +- Core/Src/tim.c | 4 +- MDK-ARM/CAR.uvoptx | 158 +++++++++++++++++++-------------- MDK-ARM/CAR.uvprojx | 129 +++++++++++++++------------ MDK-ARM/EventRecorderStub.scvd | 9 ++ Peripheral/Inc/servo.h | 12 +++ Peripheral/Src/hcsr04.c | 8 +- Peripheral/Src/servo.c | 15 ++++ 8 files changed, 207 insertions(+), 132 deletions(-) create mode 100644 MDK-ARM/EventRecorderStub.scvd create mode 100644 Peripheral/Inc/servo.h create mode 100644 Peripheral/Src/servo.c diff --git a/CAR.ioc b/CAR.ioc index 13989ae..fbc58ae 100644 --- a/CAR.ioc +++ b/CAR.ioc @@ -272,8 +272,8 @@ SH.S_TIM4_CH2.0=TIM4_CH2,PWM Generation2 CH2 SH.S_TIM4_CH2.ConfNb=1 TIM1.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4 TIM1.IPParameters=Prescaler,Period,Channel-PWM Generation4 CH4 -TIM1.Period=20000 - 1 -TIM1.Prescaler=72 - 1 +TIM1.Period=2000 - 1 +TIM1.Prescaler=720 - 1 TIM2.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE TIM2.IPParameters=Prescaler,Period,AutoReloadPreload TIM2.Period=72 - 1 diff --git a/Core/Src/tim.c b/Core/Src/tim.c index 2ea1948..5ff3c10 100644 --- a/Core/Src/tim.c +++ b/Core/Src/tim.c @@ -46,9 +46,9 @@ void MX_TIM1_Init(void) /* USER CODE END TIM1_Init 1 */ htim1.Instance = TIM1; - htim1.Init.Prescaler = 72 - 1; + htim1.Init.Prescaler = 720 - 1; htim1.Init.CounterMode = TIM_COUNTERMODE_UP; - htim1.Init.Period = 20000 - 1; + htim1.Init.Period = 2000 - 1; htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim1.Init.RepetitionCounter = 0; htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; diff --git a/MDK-ARM/CAR.uvoptx b/MDK-ARM/CAR.uvoptx index 4243c51..b3285ad 100644 --- a/MDK-ARM/CAR.uvoptx +++ b/MDK-ARM/CAR.uvoptx @@ -1,4 +1,4 @@ - + 1.0 @@ -45,7 +45,7 @@ 79 66 8 - + 1 @@ -104,16 +104,16 @@ 0 0 3 - - - - - - - - - - + + + + + + + + + + BIN\CMSIS_AGDI.dll @@ -130,7 +130,7 @@ 0 ARMDBGFLAGS - + 0 @@ -140,7 +140,7 @@ 0 DLGUARM - + 0 @@ -167,7 +167,7 @@ 0 1 ..\Peripheral\Src\bluetooth.c - + \\CAR\../Peripheral/Src/bluetooth.c\34 @@ -183,7 +183,7 @@ 0 1 ..\Peripheral\Src\control.c - + \\CAR\../Peripheral/Src/control.c\32 @@ -199,8 +199,8 @@ 0 0 ..\Peripheral\Src\bluetooth.c - - + + 3 @@ -215,8 +215,8 @@ 0 0 ../Core/Src/main.c - - + + 4 @@ -231,8 +231,8 @@ 0 0 ../Core/Src/main.c - - + + @@ -287,19 +287,19 @@ 0 0 - - + + 0 0 0 - - - - - - - - + + + + + + + + 1 1 @@ -363,6 +363,18 @@ 0 0 0 + ..\Core\Src\syscalls.c + syscalls.c + 0 + 0 + + + 3 + 4 + 1 + 0 + 0 + 0 ../Core/Src/main.c main.c 0 @@ -370,7 +382,7 @@ 3 - 4 + 5 1 0 0 @@ -382,7 +394,7 @@ 3 - 5 + 6 1 0 0 @@ -394,7 +406,7 @@ 3 - 6 + 7 1 0 0 @@ -406,7 +418,7 @@ 3 - 7 + 8 1 0 0 @@ -418,7 +430,7 @@ 3 - 8 + 9 1 0 0 @@ -428,18 +440,6 @@ 0 0 - - 3 - 9 - 1 - 0 - 0 - 0 - ..\Core\Src\syscalls.c - syscalls.c - 0 - 0 - 3 10 @@ -515,6 +515,18 @@ 0 0 0 + ..\Peripheral\Src\infrared.c + infrared.c + 0 + 0 + + + 4 + 16 + 1 + 0 + 0 + 0 ..\Peripheral\Src\led.c led.c 0 @@ -522,7 +534,7 @@ 4 - 16 + 17 1 0 0 @@ -534,7 +546,7 @@ 4 - 17 + 18 1 0 0 @@ -544,6 +556,18 @@ 0 0 + + 4 + 19 + 1 + 0 + 0 + 0 + ..\Peripheral\Src\servo.c + servo.c + 0 + 0 + @@ -554,7 +578,7 @@ 0 5 - 18 + 20 1 0 0 @@ -566,7 +590,7 @@ 5 - 19 + 21 1 0 0 @@ -578,7 +602,7 @@ 5 - 20 + 22 1 0 0 @@ -590,7 +614,7 @@ 5 - 21 + 23 1 0 0 @@ -602,7 +626,7 @@ 5 - 22 + 24 1 0 0 @@ -614,7 +638,7 @@ 5 - 23 + 25 1 0 0 @@ -626,7 +650,7 @@ 5 - 24 + 26 1 0 0 @@ -638,7 +662,7 @@ 5 - 25 + 27 1 0 0 @@ -650,7 +674,7 @@ 5 - 26 + 28 1 0 0 @@ -662,7 +686,7 @@ 5 - 27 + 29 1 0 0 @@ -674,7 +698,7 @@ 5 - 28 + 30 1 0 0 @@ -686,7 +710,7 @@ 5 - 29 + 31 1 0 0 @@ -698,7 +722,7 @@ 5 - 30 + 32 1 0 0 @@ -710,7 +734,7 @@ 5 - 31 + 33 1 0 0 @@ -722,7 +746,7 @@ 5 - 32 + 34 1 0 0 @@ -742,7 +766,7 @@ 0 6 - 33 + 35 1 0 0 diff --git a/MDK-ARM/CAR.uvprojx b/MDK-ARM/CAR.uvprojx index 7b23972..a09f68e 100644 --- a/MDK-ARM/CAR.uvprojx +++ b/MDK-ARM/CAR.uvprojx @@ -1,7 +1,10 @@ - - + + + 2.1 +
### uVision Project, (C) Keil Software
+ CAR @@ -16,28 +19,28 @@ Keil.STM32F1xx_DFP.2.4.1 https://www.keil.com/pack/ IRAM(0x20000000-0x20004FFF) IROM(0x8000000-0x800FFFF) CLOCK(8000000) CPUTYPE("Cortex-M3") TZ - - - + + + 0 - - - - - - - - - - + + + + + + + + + + $$Device:STM32F103C8$SVD\STM32F103xx.svd 0 0 - - - - - + + + + + 0 0 @@ -52,15 +55,15 @@ 1 1 1 - + 1 0 0 0 0 - - + + 0 0 0 @@ -69,8 +72,8 @@ 0 0 - - + + 0 0 0 @@ -79,15 +82,15 @@ 0 1 - - + + 0 0 0 0 1 - + 0 @@ -101,8 +104,8 @@ 0 0 3 - - + + 0 @@ -111,7 +114,7 @@ DCM.DLL -pCM3 SARMCM3.DLL - + TCM.DLL -pCM3 @@ -136,10 +139,10 @@ 1 BIN\UL2V8M.DLL "" () - - - - + + + + 0 @@ -172,7 +175,7 @@ 0 0 "Cortex-M3" - + 0 0 0 @@ -306,7 +309,7 @@ 0x0 - + 1 @@ -333,9 +336,9 @@ 0 0 - + USE_HAL_DRIVER,STM32F103xB - + ../App/Inc;../Core/Inc;../Peripheral/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include @@ -351,10 +354,10 @@ 0 1 - - - - + + + + @@ -364,15 +367,15 @@ 0 1 0 - - - - - - - - - + + + + + + + + + @@ -465,6 +468,11 @@ 1 ..\Peripheral\Src\hcsr04.c
+ + infrared.c + 1 + ..\Peripheral\Src\infrared.c + led.c 1 @@ -480,6 +488,11 @@ 1 ..\Peripheral\Src\motor.c + + servo.c + 1 + ..\Peripheral\Src\servo.c +
@@ -578,18 +591,20 @@ + - + - + - + - + + @@ -598,5 +613,5 @@ - + diff --git a/MDK-ARM/EventRecorderStub.scvd b/MDK-ARM/EventRecorderStub.scvd new file mode 100644 index 0000000..2956b29 --- /dev/null +++ b/MDK-ARM/EventRecorderStub.scvd @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Peripheral/Inc/servo.h b/Peripheral/Inc/servo.h new file mode 100644 index 0000000..d361a13 --- /dev/null +++ b/Peripheral/Inc/servo.h @@ -0,0 +1,12 @@ +#ifndef __SERVO_H +#define __SERVO_H + +#include "main.h" + +void SERVO_Init(); + +/// @brief 控制舵机转动 +/// @param degree 0-180 +void SERVO_Rotate(uint8_t degree); + +#endif diff --git a/Peripheral/Src/hcsr04.c b/Peripheral/Src/hcsr04.c index 20fba15..d8df96a 100644 --- a/Peripheral/Src/hcsr04.c +++ b/Peripheral/Src/hcsr04.c @@ -24,9 +24,9 @@ void HC_SR04_Init(void) uint32_t sonar_mm(void) { sonor_state = 1; - HAL_GPIO_WritePin(Trig_GPIO_Port, Trig_Pin, GPIO_PIN_SET); // 输出高电平 + HAL_GPIO_WritePin(TRIG_GPIO_Port, TRIG_Pin, GPIO_PIN_SET); // 输出高电平 delay_us(15); // 延时15微秒 - HAL_GPIO_WritePin(Trig_GPIO_Port, Trig_Pin, GPIO_PIN_RESET); // 输出低电平 + HAL_GPIO_WritePin(TRIG_GPIO_Port, TRIG_Pin, GPIO_PIN_RESET); // 输出低电平 if (time_end / 100 < 38) { // 判断是否小于38毫秒,大于38毫秒的就是超时,直接调到下面返回0 sonor_distance = (time_end * 346) / 2; // 计算距离,25°C空气中的音速为346m/s @@ -46,9 +46,9 @@ void HCSR04_HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { - if (GPIO_Pin == Echo_Pin) + if (GPIO_Pin == ECHO_Pin) { - if (HAL_GPIO_ReadPin(Echo_GPIO_Port, Echo_Pin)) + if (HAL_GPIO_ReadPin(ECHO_GPIO_Port, ECHO_Pin)) { time_start = 0; HAL_TIM_Base_Start_IT(&htim2); diff --git a/Peripheral/Src/servo.c b/Peripheral/Src/servo.c new file mode 100644 index 0000000..4ad594f --- /dev/null +++ b/Peripheral/Src/servo.c @@ -0,0 +1,15 @@ +#include "servo.h" +#include "tim.h" + +void SERVO_Init() +{ + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4); +} + +void SERVO_Rotate(uint8_t degree) +{ + if (degree > 180) + degree = 180; + uint16_t compare = 200.0 / 180 * degree + 50; + __HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_4, compare); +}