位置输出
This commit is contained in:
parent
4d406fcf97
commit
fcd6b4cfbf
File diff suppressed because it is too large
Load Diff
|
@ -1,8 +1,41 @@
|
|||
#include "work.h"
|
||||
#include "board.h"
|
||||
|
||||
#define OUTPUT_INFORMATION_CYCLE_BASE 100
|
||||
work_t work;
|
||||
|
||||
/**
|
||||
* @brief 输出信息
|
||||
*
|
||||
* 该函数用于输出一些信息,具体输出内容未实现。
|
||||
*/
|
||||
static void output_information(void)
|
||||
{
|
||||
char data[128];
|
||||
uint8_t len = 0;
|
||||
int32_t rst = 0;
|
||||
osel_memset((uint8_t *)data, 0, ARRAY_LEN(data));
|
||||
|
||||
if (work.type == WORK_MOTOR_POS)
|
||||
{
|
||||
rst = snprintf(data, ARRAY_LEN(data), "%f,%d,%f\r\n", work.target_pos, work.encoder_cnt, work.pwm_percent);
|
||||
}
|
||||
else if (work.type == WORK_MOTOR_SPEED)
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (rst == 0 || rst > ARRAY_LEN(data))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
len = osel_mstrlen((uint8_t *)data);
|
||||
uart_send((uint8_t *)data, len);
|
||||
}
|
||||
|
||||
static void pwm_map(void)
|
||||
{
|
||||
set_motor_pwm(work.pwm_percent);
|
||||
|
@ -117,7 +150,14 @@ void work_process(void)
|
|||
default:
|
||||
break;
|
||||
}
|
||||
return;
|
||||
if (work.enter_cnt++ % (OUTPUT_INFORMATION_CYCLE_BASE / work.timer_cycle) == 0)
|
||||
{
|
||||
output_information();
|
||||
}
|
||||
|
||||
work.pid.pid_u.fuzzy.set_kp(&work.pid.pid_u.fuzzy, work.pid_params.kp);
|
||||
work.pid.pid_u.fuzzy.set_ki(&work.pid.pid_u.fuzzy, work.pid_params.ki);
|
||||
work.pid.pid_u.fuzzy.set_kd(&work.pid.pid_u.fuzzy, work.pid_params.kd);
|
||||
}
|
||||
|
||||
void work_encoder_exti(void)
|
||||
|
@ -157,5 +197,6 @@ void work_init(void)
|
|||
}
|
||||
|
||||
work.target_pos = 20;
|
||||
work.timer_cycle = TIM_CYCLE(WORK_TIM);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -18,6 +18,8 @@ typedef enum
|
|||
typedef struct
|
||||
{
|
||||
work_e type;
|
||||
uint8_t timer_cycle; // 定时器周期
|
||||
uint32_t enter_cnt; // 进入次数
|
||||
int32_t encoder_cnt; // 编码器位置
|
||||
float32 pwm_percent; // PWM占空比
|
||||
uint32_t pwm_feq; // PWM频率
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
*/
|
||||
#ifndef __TIMS_H__
|
||||
#define __TIMS_H__
|
||||
|
||||
#include "lib.h"
|
||||
/**
|
||||
Timer overflow time calculation formula
|
||||
Tout = ((ARR + 1)*(PSC + 1)) / Tclk
|
||||
|
@ -102,4 +102,15 @@ With these calculated values, both ARR and PSC are within the range of 0 to 6553
|
|||
} \
|
||||
} while (__LINE__ == -1)
|
||||
|
||||
/**
|
||||
* @brief 获取定时器周期时间(单位:毫秒)
|
||||
*
|
||||
* 获取指定定时器TIMx的周期时间,以秒为单位。
|
||||
*
|
||||
* @param TIMx 定时器指针,指向需要查询的定时器
|
||||
*
|
||||
* @return 返回定时器周期时间(单位:毫秒)
|
||||
*/
|
||||
#define TIM_CYCLE(TIMx) ((LL_TIM_GetAutoReload(TIMx) + 1) * 0.1)
|
||||
|
||||
#endif ///< __TIMS_H__
|
||||
|
|
Loading…
Reference in New Issue