Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
car-controlserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wenzhongjian
car-controlserver
Commits
f46f5a10
Commit
f46f5a10
authored
Jul 19, 2025
by
学习的菜鸟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
6
parent
63ec8d51
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
306 additions
and
5 deletions
+306
-5
CMakeLists.txt
CMakeLists.txt
+2
-1
car0101_control.c
drivers/devicecontrol/car0101_control.c
+179
-0
car0101_control.h
drivers/devicecontrol/car0101_control.h
+9
-0
car0102_control.c
drivers/devicecontrol/car0102_control.c
+0
-0
car0102_control.h
drivers/devicecontrol/car0102_control.h
+0
-0
car0103_control.c
drivers/devicecontrol/car0103_control.c
+0
-0
car0103_control.h
drivers/devicecontrol/car0103_control.h
+0
-0
car0104_control.c
drivers/devicecontrol/car0104_control.c
+0
-0
car0104_control.h
drivers/devicecontrol/car0104_control.h
+0
-0
device_init.c
drivers/gpio/device_init.c
+93
-2
device_init.h
drivers/gpio/device_init.h
+12
-0
gpio_init.c
drivers/gpio/gpio_init.c
+2
-1
gpio_init.h
drivers/gpio/gpio_init.h
+1
-1
common.h
include/common.h
+0
-0
devcontrol_common.h
include/devcontrol_common.h
+8
-0
No files found.
CMakeLists.txt
View file @
f46f5a10
...
...
@@ -40,10 +40,10 @@ include_directories(
app/device_identity
app/main
app/device_change
drivers/common
drivers/gpio
drivers/network
drivers/sensors
drivers/devicecontrol
modules/logger
modules/delay
modules/thread_pool
...
...
@@ -60,6 +60,7 @@ file(GLOB_RECURSE SOURCES
drivers/gpio/*.c
drivers/network/*.c
drivers/sensors/*.c
drivers/devicecontrol/*c
modules/logger/*.c
modules/delay/*.c
modules/thread_pool/*.c
...
...
drivers/devicecontrol/car0101_control.c
0 → 100644
View file @
f46f5a10
#include "car0101_control.h"
#include "gpio_init.h"
/*将角度转化为对应的舵机pwm值*/
void
car_calculate_L_R
(
int
angle
)
{
if
(
angle
<
0
)
{
angle
=
0
;
}
else
if
(
angle
>
180
)
{
angle
=
180
;
}
float
pulse_width
=
(
2
/
180
.
0
)
*
angle
+
0
.
5
;
// 周期(ms)
float
period
=
1000
.
0
/
50
;
int
val
=
(
int
)((
pulse_width
/
period
)
*
1000
);
pwmWrite
(
PWM_PIN_CHANGE
,
val
);
}
/*车中间值,停止舵机中间函数*/
void
car0101_middle_pwm
()
{
//车停止pwm值
pwmWrite
(
PWM_PIN_SPEED
,
75
);
car_calculate_L_R
(
90
);
}
/*车的速度转向函数*/
void
car0101_mode_1_flont
(
unsigned
char
gval
)
{
if
(
gval
<
50
)
{
pwmWrite
(
PWM_PIN_SPEED
,
75
);
}
else
if
(
gval
<=
55
)
{
pwmWrite
(
PWM_PIN_SPEED
,
71
);
}
else
if
(
gval
<=
60
)
{
pwmWrite
(
PWM_PIN_SPEED
,
70
);
}
else
if
(
gval
<=
65
)
{
pwmWrite
(
PWM_PIN_SPEED
,
70
);
}
else
if
(
gval
<=
70
)
{
pwmWrite
(
PWM_PIN_SPEED
,
70
);
}
else
if
(
gval
<=
75
)
{
pwmWrite
(
PWM_PIN_SPEED
,
69
);
}
else
if
(
gval
<=
90
)
{
pwmWrite
(
PWM_PIN_SPEED
,
68
);
}
else
if
(
gval
<=
100
)
{
pwmWrite
(
PWM_PIN_SPEED
,
68
);
}
else
if
(
gval
<=
110
)
{
pwmWrite
(
PWM_PIN_SPEED
,
66
);
}
else
if
(
gval
<=
120
)
{
pwmWrite
(
PWM_PIN_SPEED
,
65
);
}
else
if
(
gval
<=
130
)
{
pwmWrite
(
PWM_PIN_SPEED
,
64
);
}
else
if
(
gval
<=
140
)
{
pwmWrite
(
PWM_PIN_SPEED
,
62
);
}
else
if
(
gval
<=
150
)
{
pwmWrite
(
PWM_PIN_SPEED
,
60
);
}
else
if
(
gval
<=
160
)
{
pwmWrite
(
PWM_PIN_SPEED
,
59
);
}
else
if
(
gval
<=
170
)
{
pwmWrite
(
PWM_PIN_SPEED
,
58
);
}
else
if
(
gval
<=
180
)
{
pwmWrite
(
PWM_PIN_SPEED
,
57
);
}
else
if
(
gval
<=
190
)
{
pwmWrite
(
PWM_PIN_SPEED
,
56
);
}
else
if
(
gval
<=
200
)
{
pwmWrite
(
PWM_PIN_SPEED
,
55
);
}
}
void
car0101_mode_2_back
(
unsigned
char
gval
)
{
if
(
gval
<
50
)
{
pwmWrite
(
PWM_PIN_SPEED
,
75
);
}
else
if
(
50
<=
gval
&&
gval
<=
55
)
{
pwmWrite
(
PWM_PIN_SPEED
,
76
);
}
else
if
(
55
<
gval
&&
gval
<=
60
)
{
pwmWrite
(
PWM_PIN_SPEED
,
77
);
}
else
if
(
60
<
gval
&&
gval
<=
65
)
{
pwmWrite
(
PWM_PIN_SPEED
,
77
);
}
else
if
(
65
<
gval
&&
gval
<=
70
)
{
pwmWrite
(
PWM_PIN_SPEED
,
78
);
}
else
if
(
70
<
gval
&&
gval
<=
75
)
{
pwmWrite
(
PWM_PIN_SPEED
,
78
);
}
else
if
(
75
<
gval
&&
gval
<=
90
)
{
pwmWrite
(
PWM_PIN_SPEED
,
79
);
}
else
if
(
90
<
gval
&&
gval
<=
100
)
{
pwmWrite
(
PWM_PIN_SPEED
,
80
);
}
else
if
(
110
<
gval
&&
gval
<=
120
)
{
pwmWrite
(
PWM_PIN_SPEED
,
81
);
}
else
if
(
120
<
gval
&&
gval
<=
130
)
{
pwmWrite
(
PWM_PIN_SPEED
,
82
);
}
else
if
(
130
<
gval
&&
gval
<=
140
)
{
pwmWrite
(
PWM_PIN_SPEED
,
83
);
}
else
if
(
140
<
gval
&&
gval
<=
150
)
{
pwmWrite
(
PWM_PIN_SPEED
,
84
);
}
else
if
(
150
<
gval
&&
gval
<=
160
)
{
pwmWrite
(
PWM_PIN_SPEED
,
85
);
}
else
if
(
160
<
gval
&&
gval
<=
170
)
{
pwmWrite
(
PWM_PIN_SPEED
,
86
);
}
else
if
(
170
<
gval
&&
gval
<=
180
)
{
pwmWrite
(
PWM_PIN_SPEED
,
87
);
}
else
if
(
180
<
gval
&&
gval
<=
190
)
{
pwmWrite
(
PWM_PIN_SPEED
,
88
);
}
else
if
(
190
<
gval
&&
gval
<=
200
)
{
pwmWrite
(
PWM_PIN_SPEED
,
89
);
}
}
void
car0101_mode_3_left
(
unsigned
char
gval
)
{
if
(
gval
<
45
)
{
car_calculate_L_R
(
90
);
}
else
if
(
gval
<=
51
)
{
car_calculate_L_R
(
110
);
}
else
if
(
gval
<=
57
)
{
car_calculate_L_R
(
120
);
}
else
if
(
gval
<=
63
)
{
car_calculate_L_R
(
130
);
}
else
if
(
gval
<=
69
)
{
car_calculate_L_R
(
130
);
}
else
if
(
gval
<=
75
)
{
car_calculate_L_R
(
140
);
}
else
if
(
gval
<=
81
)
{
car_calculate_L_R
(
145
);
}
else
if
(
gval
<=
87
)
{
car_calculate_L_R
(
150
);
}
else
if
(
gval
<=
93
)
{
car_calculate_L_R
(
150
);
}
else
if
(
gval
<=
100
)
{
car_calculate_L_R
(
160
);
}
else
if
(
gval
<=
107
)
{
car_calculate_L_R
(
170
);
}
else
if
(
gval
<=
120
)
{
car_calculate_L_R
(
180
);
}
}
void
car0101_mode_4_right
(
unsigned
char
gval
)
{
if
(
gval
<
45
)
{
car_calculate_L_R
(
90
);
}
else
if
(
gval
<=
51
)
{
car_calculate_L_R
(
70
);
}
else
if
(
gval
<=
57
)
{
car_calculate_L_R
(
66
);
}
else
if
(
gval
<=
63
)
{
car_calculate_L_R
(
62
);
}
else
if
(
gval
<=
69
)
{
car_calculate_L_R
(
55
);
}
else
if
(
gval
<=
75
)
{
car_calculate_L_R
(
45
);
}
else
if
(
gval
<=
81
)
{
car_calculate_L_R
(
40
);
}
else
if
(
gval
<=
87
)
{
car_calculate_L_R
(
30
);
}
else
if
(
gval
<=
93
)
{
car_calculate_L_R
(
30
);
}
else
if
(
gval
<=
100
)
{
car_calculate_L_R
(
20
);
}
else
if
(
gval
<=
107
)
{
car_calculate_L_R
(
10
);
}
else
if
(
gval
<=
120
)
{
car_calculate_L_R
(
0
);
}
}
void
car0101_control_change
(
unsigned
char
*
buf
)
{
//车速度和转向引脚数值处理函数
unsigned
char
mode
=
buf
[
1
];
unsigned
char
val
=
buf
[
2
];
switch
(
mode
){
case
1
:
car0101_mode_1_flont
(
val
);
break
;
case
2
:
car0101_mode_2_back
(
val
);
break
;
case
3
:
car0101_mode_3_left
(
val
);
break
;
case
4
:
car0101_mode_4_right
(
val
);
break
;
default:
break
;
}
}
drivers/devicecontrol/car0101_control.h
0 → 100644
View file @
f46f5a10
#ifndef CAR0101_CONTROL_H
#define CAR0101_CONTROL_H
void
car0101_control_change
(
unsigned
char
*
buf
);
void
car0101_middle_pwm
();
#endif
\ No newline at end of file
drivers/devicecontrol/car0102_control.c
0 → 100644
View file @
f46f5a10
drivers/devicecontrol/car0102_control.h
0 → 100644
View file @
f46f5a10
drivers/devicecontrol/car0103_control.c
0 → 100644
View file @
f46f5a10
drivers/devicecontrol/car0103_control.h
0 → 100644
View file @
f46f5a10
drivers/devicecontrol/car0104_control.c
0 → 100644
View file @
f46f5a10
drivers/devicecontrol/car0104_control.h
0 → 100644
View file @
f46f5a10
drivers/gpio/device_init.c
View file @
f46f5a10
#include "device_init.h"
#include "gpio_init.h"
\ No newline at end of file
#include "car0101_control.h"
#include "common.h"
#include "gpio_init.h"
int
abnormal_pin_pwm_stop
=
0
;
const
deviceconfig_t
device_configs
[]
=
{
// car0101配置
{
.
device_id
=
101
,
.
device_name
=
"car0101"
,
.
gpio_pins
=
{
5
,
6
,
7
,
10
,
16
,
20
,
22
,
23
,
24
,
25
,
26
,
27
,
-
1
},
.
device_pwm_init
=
physics_pwm_init
,
.
device_control_stop
=
car0101_middle_pwm
,
.
emergency_code
=
101
},
// // car0102配置
// {
// .device_id = 102,
// .device_name = "car0102",
// .gpio_pins = {5, 6, 7, 10, 16, 20, 22, 23, 24, 25, 26, 27, -1},
// .device_pwm_init = pwm_init_speed,
// .device_control_stop = car0102_speed_stop,
// .emergency_code = 102
// },
// // car0103配置(根据您的需求补充)
// {
// .device_id = 103,
// .device_name = "car0103",
// .gpio_pins = {5, 6, 7, 10, 16, 20, 22, 23, 24, 25, 26, 27,-1},/* 补充GPIO引脚 */
// .device_pwm_init = pwm_init_speed,
// .device_control_stop = ,/* 补充速度控制函数 */
// .emergency_code = 103
// },
// // car0104配置(根据您的需求补充)
// {
// .device_id = 104,
// .device_name = "car0104",
// .gpio_pins = {5, 6, 7, 10, 16, 20, 22, 23, 24, 25, 26, 27,-1},/* 补充GPIO引脚 */
// .device_pwm_init = pwm_init_speed,
// .device_control_stop = ,/* 补充速度控制函数 */
// .emergency_code = 103
// },
// // tank0201配置(根据您的需求补充)
// {
// .device_id = 201,
// .device_name = "tank0201",
// .gpio_pins = { 6, 16, 20, 22, 23,-1},/* 补充GPIO引脚 */
// .gpio_pwms = {5 , 7 ,24,26, 27,-1},
// .device_pwm_init = pwm_init_speed,
// .device_control_stop = ,/* 补充速度控制函数 */
// .emergency_code = 103
// },
// // tank0202配置(根据您的需求补充)
// {
// .device_id = 202,
// .device_name = "tank0202",
// .gpio_pins = {5, 6, 7, 10, 16, 20, 22, 23, 24, 25, 26, 27,-1},/* 补充GPIO引脚 */
// .device_pwm_init = pwm_init_speed,
// .device_control_stop = ,/* 补充速度控制函数 */
// .emergency_code = 104
// },
// 结束标记
{
.
device_id
=
-
1
}
};
void
device_init
(
int
device_id
)
{
const
deviceconfig_t
*
config
=
NULL
;
// 查找设备配置
for
(
int
i
=
0
;
device_configs
[
i
].
device_id
!=
-
1
;
i
++
)
{
if
(
device_configs
[
i
].
device_id
==
device_id
)
{
config
=
&
device_configs
[
i
];
break
;
}
}
if
(
!
config
)
{
printf
(
"Error: Device ID %d not found!
\n
"
,
device_id
);
return
;
}
// 执行初始化流程
init_gpioWPi
(
config
->
gpio_pins
);
// GPIO初始化
config
->
device_pwm_init
();
// PWM初始化
config
->
device_control_stop
();
// 速度控制初始化
// 设置异常停止代码
abnormal_pin_pwm_stop
=
config
->
emergency_code
;
printf
(
"%s initialized successfully!
\n
"
,
config
->
device_name
);
}
\ No newline at end of file
drivers/gpio/device_init.h
View file @
f46f5a10
#ifndef DEVICE_INIT_H__
#define DEVICE_INIT_H__
extern
int
abnormal_pin_pwm_stop
;
typedef
struct
{
int
device_id
;
// 设备ID (101, 102等)
char
device_name
[
20
];
// 设备名称
int
gpio_pins
[
20
];
// GPIO引脚配置数组
int
gpio_pwms
[
20
];
void
(
*
device_pwm_init
)(
void
);
// PWM初始化函数指针
void
(
*
device_control_stop
)(
void
);
// 速度控制函数指针
int
emergency_code
;
// 异常停止代码
}
deviceconfig_t
;
#endif
\ No newline at end of file
drivers/gpio/gpio_init.c
View file @
f46f5a10
...
...
@@ -99,7 +99,8 @@ void pin_value(int pin,int value) { //引脚控制
}
void
pwm_init_speed
()
{
/*物理pwm初始化*/
void
physics_pwm_init
()
{
int
pwm_clock
=
24000000
/
(
50
*
1000
);
// 定义 PWM 频率为 50Hz
pinMode
(
PWM_PIN_SPEED
,
PWM_OUTPUT
);
pinMode
(
PWM_PIN_CHANGE
,
PWM_OUTPUT
);
...
...
drivers/gpio/gpio_init.h
View file @
f46f5a10
...
...
@@ -20,7 +20,7 @@ void pin_value(int pin,int value);//控制引脚高低
void
pin_all_default
();
//拉低车的控制引脚
void
pwm_all_default
();
//软件pwm置0引脚
void
pin_value
(
int
pin
,
int
value
);
void
p
wm_init_speed
();
void
p
hysics_pwm_init
();
void
pwm_value
(
int
pin
,
int
value
);
//软件陪我们控制调速
void
device_exit_end
();
//main最后结束需要调用的函数
...
...
drivers/common
/common.h
→
include
/common.h
View file @
f46f5a10
File moved
include/devcontrol_common.h
0 → 100644
View file @
f46f5a10
#ifndef COMMON_H
#define COMMON_H
#endif
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment