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_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);
|
||||
|
||||
Reference in New Issue
Block a user