refactor(FOC): 添加Doxygen文档注释并优化SVPWM算法性能
添加了完整的Doxygen文档注释到FOC算法模块的所有函数、类和变量,提升了代码可读性和维护性。同时优化了SVPWM算法实现,将atan2f替换为符号法扇区判断,显著提升计算效率(约15周期vs atan2f 300周期),并改进了arm_sin_cos_f32替代sqrtf提高性能。 feat(FOC): 统一电气角度计算避免重复运算 重构代码以统一电气角度计算,在各个控制循环中只计算一次电气角度并传递给需要的函数,避免了多次重复的fmodf运算和角度归一化操作,提升了实时控制性能。 refactor(Filter): 改进α-β观测器角度处理精度 修改角度卡尔曼滤波器在归一化角度空间[0,360)内工作,避免大累积角度的浮点精度损失问题,确保静止状态下不会产生虚假速度,同时保持与下游代码的兼容性。 refactor: 为算法模块添加完整文档注释 为所有算法模块(FOC、Filter、pid、thermal)添加了详细的Doxygen文档注释,包括函数说明、参数描述、返回值说明等,便于代码理解和API文档生成。
This commit is contained in:
@@ -35,6 +35,7 @@ OF SUCH DAMAGE.
|
||||
#include "gd32c10x_can.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
/** @brief CAN_ERROR_HANDLE 宏定义 */
|
||||
#define CAN_ERROR_HANDLE(s) do{}while(1)
|
||||
|
||||
/* This table can be used to calculate data length in FD mode */
|
||||
@@ -71,6 +72,12 @@ void can_deinit(uint32_t can_periph)
|
||||
\param[out] none
|
||||
\retval none
|
||||
*/
|
||||
/**
|
||||
* @brief can_struct_para_init 函数
|
||||
* @param[in] type 参数
|
||||
* @param[in] p_struct 参数
|
||||
* @return void
|
||||
*/
|
||||
void can_struct_para_init(can_struct_type_enum type, void *p_struct)
|
||||
{
|
||||
uint8_t i;
|
||||
@@ -183,6 +190,12 @@ void can_struct_para_init(can_struct_type_enum type, void *p_struct)
|
||||
\param[out] none
|
||||
\retval ErrStatus: SUCCESS or ERROR
|
||||
*/
|
||||
/**
|
||||
* @brief can_init 函数
|
||||
* @param[in] can_periph 参数
|
||||
* @param[in] can_parameter_init 参数
|
||||
* @return ErrStatus 返回值
|
||||
*/
|
||||
ErrStatus can_init(uint32_t can_periph, can_parameter_struct *can_parameter_init)
|
||||
{
|
||||
uint32_t timeout = CAN_TIMEOUT;
|
||||
@@ -296,6 +309,12 @@ ErrStatus can_init(uint32_t can_periph, can_parameter_struct *can_parameter_init
|
||||
\param[out] none
|
||||
\retval ErrStatus: SUCCESS or ERROR
|
||||
*/
|
||||
/**
|
||||
* @brief can_fd_init 函数
|
||||
* @param[in] can_periph 参数
|
||||
* @param[in] can_fdframe_init 参数
|
||||
* @return ErrStatus 返回值
|
||||
*/
|
||||
ErrStatus can_fd_init(uint32_t can_periph, can_fdframe_struct *can_fdframe_init)
|
||||
{
|
||||
uint32_t timeout = CAN_TIMEOUT;
|
||||
@@ -388,6 +407,11 @@ ErrStatus can_fd_init(uint32_t can_periph, can_fdframe_struct *can_fdframe_init)
|
||||
\param[out] none
|
||||
\retval none
|
||||
*/
|
||||
/**
|
||||
* @brief can_filter_init 函数
|
||||
* @param[in] can_filter_parameter_init 参数
|
||||
* @return void
|
||||
*/
|
||||
void can_filter_init(can_filter_parameter_struct *can_filter_parameter_init)
|
||||
{
|
||||
uint32_t val = 0U;
|
||||
@@ -470,6 +494,14 @@ void can_filter_init(can_filter_parameter_struct *can_filter_parameter_init)
|
||||
\param[out] none
|
||||
\retval none
|
||||
*/
|
||||
/**
|
||||
* @brief can_filter_mask_mode_init 函数
|
||||
* @param[in] id 参数
|
||||
* @param[in] mask 参数
|
||||
* @param[in] format_fifo 参数
|
||||
* @param[in] filter_number 参数
|
||||
* @return void
|
||||
*/
|
||||
void can_filter_mask_mode_init(uint32_t id, uint32_t mask, can_format_fifo_enum format_fifo, uint16_t filter_number)
|
||||
{
|
||||
can_filter_parameter_struct can_filter;
|
||||
@@ -556,6 +588,12 @@ void can_filter_mask_mode_init(uint32_t id, uint32_t mask, can_format_fifo_enum
|
||||
\param[out] none
|
||||
\retval ErrStatus: SUCCESS or ERROR
|
||||
*/
|
||||
/**
|
||||
* @brief can_monitor_mode_set 函数
|
||||
* @param[in] can_periph 参数
|
||||
* @param[in] mode 参数
|
||||
* @return ErrStatus 返回值
|
||||
*/
|
||||
ErrStatus can_monitor_mode_set(uint32_t can_periph, uint8_t mode)
|
||||
{
|
||||
ErrStatus reval = SUCCESS;
|
||||
@@ -728,6 +766,12 @@ void can_time_trigger_mode_disable(uint32_t can_periph)
|
||||
\param[out] none
|
||||
\retval mailbox_number
|
||||
*/
|
||||
/**
|
||||
* @brief can_message_transmit 函数
|
||||
* @param[in] can_periph 参数
|
||||
* @param[in] transmit_message 参数
|
||||
* @return uint8_t 返回值
|
||||
*/
|
||||
uint8_t can_message_transmit(uint32_t can_periph, can_trasnmit_message_struct *transmit_message)
|
||||
{
|
||||
uint8_t mailbox_number = CAN_MAILBOX0;
|
||||
@@ -975,6 +1019,13 @@ ErrStatus can_transmission_stop(uint32_t can_periph, uint8_t mailbox_number)
|
||||
\arg rx_fi: 0 - 27
|
||||
\retval none
|
||||
*/
|
||||
/**
|
||||
* @brief can_message_receive 函数
|
||||
* @param[in] can_periph 参数
|
||||
* @param[in] fifo_number 参数
|
||||
* @param[in] receive_message 参数
|
||||
* @return void
|
||||
*/
|
||||
void can_message_receive(uint32_t can_periph, uint8_t fifo_number, can_receive_message_struct *receive_message)
|
||||
{
|
||||
uint32_t canfd_en = 0U;
|
||||
@@ -1214,6 +1265,11 @@ ErrStatus can_wakeup(uint32_t can_periph)
|
||||
\arg CAN_ERROR_CRC: CRC error
|
||||
\arg CAN_ERROR_SOFTWARECFG: software configure
|
||||
*/
|
||||
/**
|
||||
* @brief can_error_get 函数
|
||||
* @param[in] can_periph 参数
|
||||
* @return can_error_enum 返回值
|
||||
*/
|
||||
can_error_enum can_error_get(uint32_t can_periph)
|
||||
{
|
||||
can_error_enum error;
|
||||
@@ -1278,6 +1334,12 @@ uint8_t can_transmit_error_number_get(uint32_t can_periph)
|
||||
\param[out] none
|
||||
\retval none
|
||||
*/
|
||||
/**
|
||||
* @brief can_interrupt_enable 函数
|
||||
* @param[in] can_periph 参数
|
||||
* @param[in] interrupt 参数
|
||||
* @return void
|
||||
*/
|
||||
void can_interrupt_enable(uint32_t can_periph, uint32_t interrupt)
|
||||
{
|
||||
CAN_INTEN(can_periph) |= interrupt;
|
||||
@@ -1306,6 +1368,12 @@ void can_interrupt_enable(uint32_t can_periph, uint32_t interrupt)
|
||||
\param[out] none
|
||||
\retval none
|
||||
*/
|
||||
/**
|
||||
* @brief can_interrupt_disable 函数
|
||||
* @param[in] can_periph 参数
|
||||
* @param[in] interrupt 参数
|
||||
* @return void
|
||||
*/
|
||||
void can_interrupt_disable(uint32_t can_periph, uint32_t interrupt)
|
||||
{
|
||||
CAN_INTEN(can_periph) &= ~interrupt;
|
||||
@@ -1354,6 +1422,12 @@ void can_interrupt_disable(uint32_t can_periph, uint32_t interrupt)
|
||||
\param[out] none
|
||||
\retval FlagStatus: SET or RESET
|
||||
*/
|
||||
/**
|
||||
* @brief can_flag_get 函数
|
||||
* @param[in] can_periph 参数
|
||||
* @param[in] flag 参数
|
||||
* @return FlagStatus 返回值
|
||||
*/
|
||||
FlagStatus can_flag_get(uint32_t can_periph, can_flag_enum flag)
|
||||
{
|
||||
FlagStatus retval;
|
||||
@@ -1394,6 +1468,12 @@ FlagStatus can_flag_get(uint32_t can_periph, can_flag_enum flag)
|
||||
\param[out] none
|
||||
\retval none
|
||||
*/
|
||||
/**
|
||||
* @brief can_flag_clear 函数
|
||||
* @param[in] can_periph 参数
|
||||
* @param[in] flag 参数
|
||||
* @return void
|
||||
*/
|
||||
void can_flag_clear(uint32_t can_periph, can_flag_enum flag)
|
||||
{
|
||||
CAN_REG_VAL(can_periph, flag) |= BIT(CAN_BIT_POS(flag));
|
||||
@@ -1424,6 +1504,12 @@ void can_flag_clear(uint32_t can_periph, can_flag_enum flag)
|
||||
\param[out] none
|
||||
\retval FlagStatus: SET or RESET
|
||||
*/
|
||||
/**
|
||||
* @brief can_interrupt_flag_get 函数
|
||||
* @param[in] can_periph 参数
|
||||
* @param[in] flag 参数
|
||||
* @return FlagStatus 返回值
|
||||
*/
|
||||
FlagStatus can_interrupt_flag_get(uint32_t can_periph, can_interrupt_flag_enum flag)
|
||||
{
|
||||
FlagStatus retval;
|
||||
@@ -1469,6 +1555,12 @@ FlagStatus can_interrupt_flag_get(uint32_t can_periph, can_interrupt_flag_enum f
|
||||
\param[out] none
|
||||
\retval none
|
||||
*/
|
||||
/**
|
||||
* @brief can_interrupt_flag_clear 函数
|
||||
* @param[in] can_periph 参数
|
||||
* @param[in] flag 参数
|
||||
* @return void
|
||||
*/
|
||||
void can_interrupt_flag_clear(uint32_t can_periph, can_interrupt_flag_enum flag)
|
||||
{
|
||||
CAN_REG_VALS(can_periph, flag) |= BIT(CAN_BIT_POS0(flag));
|
||||
|
||||
Reference in New Issue
Block a user