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:
cbb
2026-05-23 22:46:32 +08:00
parent bec7c11b87
commit 4c4e47e9e3
62 changed files with 10367 additions and 126 deletions
@@ -35,6 +35,7 @@ OF SUCH DAMAGE.
#include "gd32c10x_timer.h"
/* TIMER init parameter mask */
/** @brief ALIGNEDMODE_MASK 宏定义 */
#define ALIGNEDMODE_MASK ((uint32_t)0x00000060U) /*!< TIMER init parameter aligne dmode mask */
#define COUNTERDIRECTION_MASK ((uint32_t)0x00000010U) /*!< TIMER init parameter counter direction mask */
#define CLOCKDIVISION_MASK ((uint32_t)0x00000300U) /*!< TIMER init parameter clock division value mask */
@@ -154,6 +155,12 @@ void timer_struct_para_init(timer_parameter_struct* initpara)
\param[out] none
\retval none
*/
/**
* @brief timer_init 函数
* @param[in] timer_periph 参数
* @param[in] initpara 参数
* @return void
*/
void timer_init(uint32_t timer_periph, timer_parameter_struct* initpara)
{
/* configure the counter prescaler value */
@@ -431,6 +438,12 @@ void timer_update_source_config(uint32_t timer_periph, uint32_t update)
\param[out] none
\retval none
*/
/**
* @brief timer_dma_enable 函数
* @param[in] timer_periph 参数
* @param[in] dma 参数
* @return void
*/
void timer_dma_enable(uint32_t timer_periph, uint16_t dma)
{
TIMER_DMAINTEN(timer_periph) |= (uint32_t) dma;
@@ -451,6 +464,12 @@ void timer_dma_enable(uint32_t timer_periph, uint16_t dma)
\param[out] none
\retval none
*/
/**
* @brief timer_dma_disable 函数
* @param[in] timer_periph 参数
* @param[in] dma 参数
* @return void
*/
void timer_dma_disable(uint32_t timer_periph, uint16_t dma)
{
TIMER_DMAINTEN(timer_periph) &= (~(uint32_t)(dma));
@@ -507,6 +526,13 @@ void timer_channel_dma_request_source_select(uint32_t timer_periph, uint32_t dma
\param[out] none
\retval none
*/
/**
* @brief timer_dma_transfer_config 函数
* @param[in] timer_periph 参数
* @param[in] dma_baseaddr 参数
* @param[in] dma_lenth 参数
* @return void
*/
void timer_dma_transfer_config(uint32_t timer_periph, uint32_t dma_baseaddr, uint32_t dma_lenth)
{
TIMER_DMACFG(timer_periph) &= (~(uint32_t)(TIMER_DMACFG_DMATA | TIMER_DMACFG_DMATC));
@@ -529,6 +555,12 @@ void timer_dma_transfer_config(uint32_t timer_periph, uint32_t dma_baseaddr, uin
\param[out] none
\retval none
*/
/**
* @brief timer_event_software_generate 函数
* @param[in] timer_periph 参数
* @param[in] event 参数
* @return void
*/
void timer_event_software_generate(uint32_t timer_periph, uint16_t event)
{
TIMER_SWEVG(timer_periph) |= (uint32_t)event;
@@ -566,6 +598,12 @@ void timer_break_struct_para_init(timer_break_parameter_struct* breakpara)
\param[out] none
\retval none
*/
/**
* @brief timer_break_config 函数
* @param[in] timer_periph 参数
* @param[in] breakpara 参数
* @return void
*/
void timer_break_config(uint32_t timer_periph, timer_break_parameter_struct* breakpara)
{
TIMER_CCHP(timer_periph) = (uint32_t)(((uint32_t)(breakpara->runoffstate)) |
@@ -710,6 +748,13 @@ void timer_channel_output_struct_para_init(timer_oc_parameter_struct* ocpara)
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] ocpara 参数
* @return void
*/
void timer_channel_output_config(uint32_t timer_periph, uint16_t channel, timer_oc_parameter_struct* ocpara)
{
switch(channel){
@@ -852,6 +897,13 @@ void timer_channel_output_config(uint32_t timer_periph, uint16_t channel, timer_
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_mode_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] ocmode 参数
* @return void
*/
void timer_channel_output_mode_config(uint32_t timer_periph, uint16_t channel, uint16_t ocmode)
{
switch(channel){
@@ -893,6 +945,13 @@ void timer_channel_output_mode_config(uint32_t timer_periph, uint16_t channel, u
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_pulse_value_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] pulse 参数
* @return void
*/
void timer_channel_output_pulse_value_config(uint32_t timer_periph, uint16_t channel, uint32_t pulse)
{
switch(channel){
@@ -933,6 +992,13 @@ void timer_channel_output_pulse_value_config(uint32_t timer_periph, uint16_t cha
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_shadow_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] ocshadow 参数
* @return void
*/
void timer_channel_output_shadow_config(uint32_t timer_periph, uint16_t channel, uint16_t ocshadow)
{
switch(channel){
@@ -977,6 +1043,13 @@ void timer_channel_output_shadow_config(uint32_t timer_periph, uint16_t channel,
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_fast_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] ocfast 参数
* @return void
*/
void timer_channel_output_fast_config(uint32_t timer_periph, uint16_t channel, uint16_t ocfast)
{
switch(channel){
@@ -1021,6 +1094,13 @@ void timer_channel_output_fast_config(uint32_t timer_periph, uint16_t channel, u
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_clear_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] occlear 参数
* @return void
*/
void timer_channel_output_clear_config(uint32_t timer_periph, uint16_t channel, uint16_t occlear)
{
switch(channel){
@@ -1065,6 +1145,13 @@ void timer_channel_output_clear_config(uint32_t timer_periph, uint16_t channel,
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_polarity_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] ocpolarity 参数
* @return void
*/
void timer_channel_output_polarity_config(uint32_t timer_periph, uint16_t channel, uint16_t ocpolarity)
{
switch(channel){
@@ -1108,6 +1195,13 @@ void timer_channel_output_polarity_config(uint32_t timer_periph, uint16_t channe
\param[out] none
\retval none
*/
/**
* @brief timer_channel_complementary_output_polarity_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] ocnpolarity 参数
* @return void
*/
void timer_channel_complementary_output_polarity_config(uint32_t timer_periph, uint16_t channel, uint16_t ocnpolarity)
{
switch(channel){
@@ -1147,6 +1241,13 @@ void timer_channel_complementary_output_polarity_config(uint32_t timer_periph, u
\param[out] none
\retval none
*/
/**
* @brief timer_channel_output_state_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] state 参数
* @return void
*/
void timer_channel_output_state_config(uint32_t timer_periph, uint16_t channel, uint32_t state)
{
switch(channel){
@@ -1190,6 +1291,13 @@ void timer_channel_output_state_config(uint32_t timer_periph, uint16_t channel,
\param[out] none
\retval none
*/
/**
* @brief timer_channel_complementary_output_state_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] ocnstate 参数
* @return void
*/
void timer_channel_complementary_output_state_config(uint32_t timer_periph, uint16_t channel, uint16_t ocnstate)
{
switch(channel){
@@ -1248,6 +1356,13 @@ void timer_channel_input_struct_para_init(timer_ic_parameter_struct* icpara)
\param[out] none
\retval none
*/
/**
* @brief timer_input_capture_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] icpara 参数
* @return void
*/
void timer_input_capture_config(uint32_t timer_periph, uint16_t channel, timer_ic_parameter_struct* icpara)
{
switch(channel){
@@ -1353,6 +1468,13 @@ void timer_input_capture_config(uint32_t timer_periph, uint16_t channel, timer_i
\param[out] none
\retval none
*/
/**
* @brief timer_channel_input_capture_prescaler_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] prescaler 参数
* @return void
*/
void timer_channel_input_capture_prescaler_config(uint32_t timer_periph, uint16_t channel, uint16_t prescaler)
{
switch(channel){
@@ -1436,6 +1558,13 @@ uint32_t timer_channel_capture_value_register_read(uint32_t timer_periph, uint16
\param[out] none
\retval none
*/
/**
* @brief timer_input_pwm_capture_config 函数
* @param[in] timer_periph 参数
* @param[in] channel 参数
* @param[in] icpwm 参数
* @return void
*/
void timer_input_pwm_capture_config(uint32_t timer_periph, uint16_t channel, timer_ic_parameter_struct* icpwm)
{
uint16_t icpolarity = 0x0U;
@@ -1570,6 +1699,12 @@ void timer_hall_mode_config(uint32_t timer_periph, uint32_t hallmode)
\param[out] none
\retval none
*/
/**
* @brief timer_input_trigger_source_select 函数
* @param[in] timer_periph 参数
* @param[in] intrigger 参数
* @return void
*/
void timer_input_trigger_source_select(uint32_t timer_periph, uint32_t intrigger)
{
TIMER_SMCFG(timer_periph) &= (~(uint32_t)TIMER_SMCFG_TRGS);
@@ -1592,6 +1727,12 @@ void timer_input_trigger_source_select(uint32_t timer_periph, uint32_t intrigger
\param[out] none
\retval none
*/
/**
* @brief timer_master_output_trigger_source_select 函数
* @param[in] timer_periph 参数
* @param[in] outrigger 参数
* @return void
*/
void timer_master_output_trigger_source_select(uint32_t timer_periph, uint32_t outrigger)
{
TIMER_CTL1(timer_periph) &= (~(uint32_t)TIMER_CTL1_MMC);
@@ -1615,6 +1756,12 @@ void timer_master_output_trigger_source_select(uint32_t timer_periph, uint32_t o
\retval none
*/
/**
* @brief timer_slave_mode_select 函数
* @param[in] timer_periph 参数
* @param[in] slavemode 参数
* @return void
*/
void timer_slave_mode_select(uint32_t timer_periph, uint32_t slavemode)
{
TIMER_SMCFG(timer_periph) &= (~(uint32_t)TIMER_SMCFG_SMC);
@@ -1659,6 +1806,14 @@ void timer_master_slave_mode_config(uint32_t timer_periph, uint32_t masterslave)
\param[out] none
\retval none
*/
/**
* @brief timer_external_trigger_config 函数
* @param[in] timer_periph 参数
* @param[in] extprescaler 参数
* @param[in] extpolarity 参数
* @param[in] extfilter 参数
* @return void
*/
void timer_external_trigger_config(uint32_t timer_periph, uint32_t extprescaler, uint32_t extpolarity, uint32_t extfilter)
{
TIMER_SMCFG(timer_periph) &= (~(uint32_t)(TIMER_SMCFG_ETP | TIMER_SMCFG_ETPSC | TIMER_SMCFG_ETFC));
@@ -1685,6 +1840,14 @@ void timer_external_trigger_config(uint32_t timer_periph, uint32_t extprescaler,
\param[out] none
\retval none
*/
/**
* @brief timer_quadrature_decoder_mode_config 函数
* @param[in] timer_periph 参数
* @param[in] decomode 参数
* @param[in] ic0polarity 参数
* @param[in] ic1polarity 参数
* @return void
*/
void timer_quadrature_decoder_mode_config(uint32_t timer_periph, uint32_t decomode, uint16_t ic0polarity, uint16_t ic1polarity)
{
/* configure the quadrature decoder mode */
@@ -1745,6 +1908,14 @@ void timer_internal_trigger_as_external_clock_config(uint32_t timer_periph, uint
\param[out] none
\retval none
*/
/**
* @brief timer_external_trigger_as_external_clock_config 函数
* @param[in] timer_periph 参数
* @param[in] extrigger 参数
* @param[in] extpolarity 参数
* @param[in] extfilter 参数
* @return void
*/
void timer_external_trigger_as_external_clock_config(uint32_t timer_periph, uint32_t extrigger, uint16_t extpolarity, uint32_t extfilter)
{
if(TIMER_SMCFG_TRGSEL_CI1FE1 == extrigger){
@@ -1807,6 +1978,14 @@ void timer_external_trigger_as_external_clock_config(uint32_t timer_periph, uint
\param[out] none
\retval none
*/
/**
* @brief timer_external_clock_mode0_config 函数
* @param[in] timer_periph 参数
* @param[in] extprescaler 参数
* @param[in] extpolarity 参数
* @param[in] extfilter 参数
* @return void
*/
void timer_external_clock_mode0_config(uint32_t timer_periph, uint32_t extprescaler, uint32_t extpolarity, uint32_t extfilter)
{
/* configure TIMER external trigger input */
@@ -1834,6 +2013,14 @@ void timer_external_clock_mode0_config(uint32_t timer_periph, uint32_t extpresca
\param[out] none
\retval none
*/
/**
* @brief timer_external_clock_mode1_config 函数
* @param[in] timer_periph 参数
* @param[in] extprescaler 参数
* @param[in] extpolarity 参数
* @param[in] extfilter 参数
* @return void
*/
void timer_external_clock_mode1_config(uint32_t timer_periph, uint32_t extprescaler, uint32_t extpolarity, uint32_t extfilter)
{
/* configure TIMER external trigger input */
@@ -1910,6 +2097,12 @@ void timer_output_value_selection_config(uint32_t timer_periph, uint16_t outsel)
\param[out] none
\retval none
*/
/**
* @brief timer_interrupt_enable 函数
* @param[in] timer_periph 参数
* @param[in] interrupt 参数
* @return void
*/
void timer_interrupt_enable(uint32_t timer_periph, uint32_t interrupt)
{
TIMER_DMAINTEN(timer_periph) |= (uint32_t) interrupt;
@@ -1931,6 +2124,12 @@ void timer_interrupt_enable(uint32_t timer_periph, uint32_t interrupt)
\param[out] none
\retval none
*/
/**
* @brief timer_interrupt_disable 函数
* @param[in] timer_periph 参数
* @param[in] interrupt 参数
* @return void
*/
void timer_interrupt_disable(uint32_t timer_periph, uint32_t interrupt)
{
TIMER_DMAINTEN(timer_periph) &= (~(uint32_t)interrupt);
@@ -1952,6 +2151,12 @@ void timer_interrupt_disable(uint32_t timer_periph, uint32_t interrupt)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief timer_interrupt_flag_get 函数
* @param[in] timer_periph 参数
* @param[in] interrupt 参数
* @return FlagStatus 返回值
*/
FlagStatus timer_interrupt_flag_get(uint32_t timer_periph, uint32_t interrupt)
{
uint32_t val;
@@ -1981,6 +2186,12 @@ FlagStatus timer_interrupt_flag_get(uint32_t timer_periph, uint32_t interrupt)
\param[out] none
\retval none
*/
/**
* @brief timer_interrupt_flag_clear 函数
* @param[in] timer_periph 参数
* @param[in] interrupt 参数
* @return void
*/
void timer_interrupt_flag_clear(uint32_t timer_periph, uint32_t interrupt)
{
TIMER_INTF(timer_periph) = (~(uint32_t)interrupt);
@@ -2006,6 +2217,12 @@ void timer_interrupt_flag_clear(uint32_t timer_periph, uint32_t interrupt)
\param[out] none
\retval FlagStatus: SET or RESET
*/
/**
* @brief timer_flag_get 函数
* @param[in] timer_periph 参数
* @param[in] flag 参数
* @return FlagStatus 返回值
*/
FlagStatus timer_flag_get(uint32_t timer_periph, uint32_t flag)
{
FlagStatus ret;
@@ -2037,6 +2254,12 @@ FlagStatus timer_flag_get(uint32_t timer_periph, uint32_t flag)
\param[out] none
\retval none
*/
/**
* @brief timer_flag_clear 函数
* @param[in] timer_periph 参数
* @param[in] flag 参数
* @return void
*/
void timer_flag_clear(uint32_t timer_periph, uint32_t flag)
{
TIMER_INTF(timer_periph) = (~(uint32_t)flag);