多源文件程序
我们在编写程项目工程的时候,往往使用多个源文件,因为一个项目的代码量极高,将代码写在一个文件中难以阅读和修改,于是将各个模块和设备的代码放到其他文件中。 比如我们有一个mod_chassis.c文件,里面放我们需要用的函数:
/**
* @brief 更新底盘的反馈信息
*
* @param c 包含底盘数据的结构体
* @param can CAN设备结构体
*/
void chassis_update_feedback(chassis_t *c,
const motor_feedback_group_t *chassis_motor,
const motor_feedback_group_t *gimbal_motor) {
/* 底盘数据和CAN结构体不能为空 */
ASSERT(c);
ASSERT(chassis_motor);
ASSERT(gimbal_motor);
/* 如果yaw云台电机反装重新计算正确的反馈值 */
c->feedback.gimbal_yaw_encoder_angle =
gimbal_motor->as_gimbal_yaw.yaw.rotor_abs_angle;
if (c->param->reverse.yaw)
circle_reverse(&(c->feedback.gimbal_yaw_encoder_angle));
/* 将CAN中的反馈数据写入到feedback中 */
for (size_t i = 0; i < c->num_wheel; i++) {
c->feedback.motor_rotational_speed[i] =
chassis_motor->as_array[i].rotational_speed;
}
}
在相应的.h文件中写上函数的声明:
void chassis_update_feedback(chassis_t *c,
const motor_feedback_group_t *chassis_motor,
const motor_feedback_group_t *gimbal_motor);
在.c文件中要含有其同名的.h文件 这样我们想要使用这个函数的时候只需要#include”文件名.h”,便可以直接调用这个函数,实现多源文件程序。 例如在thd_ctrl_chassis.c文件中:
#include "mod_chassis.h"
...
chassis_update_feedback(&chassis, &chassis_motor, &gimbal_motor);
...