修改了freertos的支持include,增加了daemon的上线等待时间,增加pid参数整定指南

This commit is contained in:
NeoZng
2023-06-23 15:56:20 +08:00
parent 4a45331d31
commit b4d4228ccc
14 changed files with 17 additions and 20 deletions

View File

@@ -382,7 +382,7 @@ void BMI088CalibrateIMU(BMI088Instance *_bmi088)
BMI088Instance *BMI088Register(BMI088_Init_Config_s *config)
{
// 申请内存
BMI088Instance *bmi088_instance = (BMI088Instance *)zero_malloc(sizeof(BMI088Instance));
BMI088Instance *bmi088_instance = (BMI088Instance *)zmalloc(sizeof(BMI088Instance));
// 从右向左赋值,让bsp instance保存指向bmi088_instance的指针(父指针),便于在底层中断中访问bmi088_instance
config->acc_int_config.id =
config->gyro_int_config.id =

View File

@@ -23,9 +23,7 @@
#define user_malloc malloc
#endif
uint8_t GlobalDebugMode = 7;
void *zero_malloc(size_t size)
void *zmalloc(size_t size)
{
void *ptr = malloc(size);
memset(ptr, 0, size);
@@ -207,3 +205,4 @@ float AverageFilter(float new_data, float *buf, uint8_t len)
sum += new_data;
return sum / len;
}

View File

@@ -23,8 +23,6 @@
#define mcos(x) (arm_cos_f32(x))
extern uint8_t GlobalDebugMode;
#ifndef user_malloc
#ifdef _CMSIS_OS_H
#define user_malloc pvPortMalloc
@@ -89,7 +87,7 @@ extern uint8_t GlobalDebugMode;
* @param size 分配大小
* @return void*
*/
void *zero_malloc(size_t size);
void *zmalloc(size_t size);
// <20><><EFBFBD>ٿ<EFBFBD><D9BF><EFBFBD>
float Sqrt(float x);

View File

@@ -13,8 +13,9 @@ DaemonInstance *DaemonRegister(Daemon_Init_Config_s *config)
memset(instance, 0, sizeof(DaemonInstance));
instance->owner_id = config->owner_id;
instance->reload_count = config->reload_count == 0 ? 100 : config->reload_count;
instance->reload_count = config->reload_count == 0 ? 100 : config->reload_count; // 默认值为100
instance->callback = config->callback;
instance->temp_count = config->init_count == 0 ? 100 : config->init_count; // 默认值为100,初始计数
daemon_instances[idx++] = instance;
return instance;

View File

@@ -22,6 +22,7 @@ typedef struct daemon_ins
typedef struct
{
uint16_t reload_count; // 实际上这是app唯一需要设置的值?
uint16_t init_count; // 上线等待时间,有些模块需要收到主控的指令才会反馈报文,或pc等需要开机时间
offline_callback callback; // 异常处理函数,当模块发生异常时会被调用
void *owner_id; // id取拥有daemon的实例的地址,如DJIMotorInstance*,cast成void*类型
} Daemon_Init_Config_s;

View File

@@ -8,7 +8,7 @@ static LEDInstance *bsp_led_ins[LED_MAX_NUM] = {NULL};
LEDInstance *LEDRegister(LED_Init_Config_s *led_config)
{
LEDInstance *led_ins = (LEDInstance *)zero_malloc(sizeof(LEDInstance));
LEDInstance *led_ins = (LEDInstance *)zmalloc(sizeof(LEDInstance));
// 剩下的值暂时都被置零
led_ins->led_pwm = PWMRegister(&led_config->pwm_config);
led_ins->led_switch = led_config->init_swtich;