最终效果

最终通过文件的注释,生成一个帮助文档。

软件安装

需要安装3个软件
1.Doxygen
2.graphviz(可以根据文件的引用关系生成调用关系图)
3.htmlhelp(生成windos脱机可用的帮助文档)
打包地址 链接:.
提取码:c98c

自行默认安装即可

注释规范

想要生成注释文档,首先你的注释要符合Doxygen的要求
文件注释

/*!* @file     LQ_CTIME.h** @brief    CTIME驱动文件** @company  北京龙邱智能科技** @author   LQ-005** @note     LPC55S69有5个32位的CTIME ** @version  V1.1  2019/12/06 优化注释 Doxygen** @Software IAR8.32 or MDK5.28** @par URL  http://shop36265907.taobao.com*           http://www.lqist.cn** @date     2019/10/18 星期五*/

生成的效果图

宏定义注释

/*! CTIMER 最大占空比 可自行修改 */
#define  CMTER_PWM_MAX    10000

生成的效果图

结构体、枚举体注释

/** * @brief CTIMER模块 脉冲计数通道* @note  CTIMER 模块 脉冲捕获通道 * @note  CTIMER 模块的输入管脚并不是直接CTIMER连接的  而是通过INPUTMUX模块连接的* @note  CTIMER计数器 ---  INPUTMUX输入多路复用模块17路通道  ----  芯片外部管脚* @note  简单说 就是CTIMER的捕获通道每个都可以与 INPUTMUX模块的17路通道相链接* @note  INPUTMUX模块的17路通道相链接的管脚如下*/
typedef enum
{CTInput0_P0_1  = 0x0000 + 1,  CTInput0_P0_13 = 0x0000 + 2,     /*!< INPUTMUX—CTIMER 输入通道0管脚  */  CTInput1_P0_14 = 0x0100 + 1,  CTInput1_P0_2  = 0x0100 + 2,     /*!< INPUTMUX—CTIMER 输入通道1管脚  */  CTInput2_P1_0  = 0x0200 + 1,  CTInput2_P1_28 = 0x0200 + 2,     /*!< INPUTMUX—CTIMER 输入通道2管脚  */  CTInput3_P1_1  = 0x0300 + 1,  CTInput3_P1_26 = 0x0300 + 2,     /*!< INPUTMUX—CTIMER 输入通道3管脚  */  CTInput4_P1_9  = 0x0400 + 1,  CTInput4_P0_16 = 0x0400 + 2,     /*!< INPUTMUX—CTIMER 输入通道4管脚  */  CTInput5_P1_11 = 0x0500 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道5管脚  */  CTInput6_P1_13 = 0x0600 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道6管脚  */  CTInput7_P1_15 = 0x0700 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道7管脚  */  CTInput8_P0_24 = 0x0800 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道8管脚  */  CTInput9_P0_25 = 0x0900 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道9管脚  */  CTInput10_P0_10= 0x0A00 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道10管脚  */  CTInput11_P0_28= 0x0B00 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道11管脚  */  CTInput12_P0_4 = 0x0C00 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道12管脚  */  CTInput13_P0_6 = 0x0D00 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道13管脚  */  CTInput14_P1_20= 0x0E00 + 1,  CTInput14_P0_26= 0x0E00 + 2,     /*!< INPUTMUX—CTIMER 输入通道14管脚  */  CTInput15_P0_20= 0x0F00 + 1,  CTInput15_P0_22= 0x0F00 + 2,     /*!< INPUTMUX—CTIMER 输入通道15管脚  */  CTInput16_P0_15= 0x1000 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道16管脚  */  } CTIMER_InputChannel_t;

生成的效果图

全局变量

/** DMA link传输描述符 */
extern dma_descriptor_t s_dma_descriptor_table0[];

生成的效果图

函数注释

/*!* @brief    初始化CTIMER为PWM输出功能** @param    matchChannel   :    CTIMER通道  LQ_CTIMER.h中枚举体* @param    duty           :    占空比 * CMTER_PWM_MAX* @param    pwmFreq_Hz     :    频率** @return   无** @note     一个CTIMER模块只能用作脉冲计数和PWM输出的一种* @note     一个CTIMER模块最多只能输出3路PWM频率相同的PWM波** @see      CTIMER_InitPwmConfig(CT0Outpute0_P0_0, 5000, 100);//初始化P0_0 作为CTIMER0的通道0 的PWM输出口 频率100Hz 占空比 百分之(5000/CMTER_PWM_MAX)*100** @date     2019/5/7 星期二*/
void CTIMER_InitPwmConfig(CTIMER_OutputChannel_t matchChannel,uint32_t duty,uint32_t pwmFreq_Hz);

生成的效果图

Doxygen配置

1.首先我们新建一个文件夹,将按上面规则注释的代码文件放里面(注意,需要所有的代码保持一样的编码方式,这里用的是GB2312)

/*!* @file     LQ_CTIME.c** @brief    CTIME驱动文件** @company  北京龙邱智能科技** @author   LQ-005** @note     LPC55S69有5个32位的CTIME ** @version  V1.1  2019/12/06 优化注释 Doxygen** @Software IAR8.32 or MDK5.28** @par URL  http://shop36265907.taobao.com*           http://www.lqist.cn** @date     2019/10/18 星期五*/
#include "fsl_inputmux.h"
#include "fsl_iocon.h"
#include "fsl_ctimer.h"
#include "LQ_CTIME.h"
#include "LQ_GPIO.h"/*!* @brief    初始化CTIMER为PWM输出功能** @param    matchChannel   :    CTIMER通道  LQ_CTIMER.h中枚举体* @param    duty           :    占空比 * CMTER_PWM_MAX* @param    pwmFreq_Hz     :    频率** @return   无** @note     一个CTIMER模块只能用作脉冲计数和PWM输出的一种* @note     一个CTIMER模块最多只能输出3路PWM频率相同的PWM波** @see      CTIMER_InitPwmConfig(CT0Outpute0_P0_0, 5000, 100);//初始化P0_0 作为CTIMER0的通道0 的PWM输出口 频率100Hz 占空比 百分之(5000/CMTER_PWM_MAX)*100** @date     2019/5/7 星期二*/
void CTIMER_InitPwmConfig(CTIMER_OutputChannel_t matchChannel, uint32_t duty, uint32_t pwmFreq_Hz)
{static uint8_t flag[5];uint8_t index = matchChannel >> 12;uint8_t channel_temp = (matchChannel&0x0F00)>>8;CTIMER_Type     * TIMERN[] = CTIMER_BASE_PTRS;CTIMER_Type     * base = TIMERN[index];assert(pwmFreq_Hz > 0);uint32_t reg;   ctimer_config_t cconfig;  /* 选择时钟源 */CLOCK_AttachClk((clock_attach_id_t)(kMAIN_CLK_to_CTIMER0 + index));if ((channel_temp) == kCTIMER_Match_3){return ;   //周期通道}/* 防止重复初始化 */if(flag[index] < 1){flag[index]++;/* 初始化 CTIMER */CTIMER_GetDefaultConfig(&cconfig);CTIMER_Init(base, &cconfig); }/* 初始化对应管脚 */CTIME_PWMPinInit(matchChannel);pwmFreq_Hz = (CLOCK_GetCTimerClkFreq(index) / pwmFreq_Hz) - 1;/* 使能PWM模式 */base->PWMC |= (1U << (channel_temp));/* 清除标志位 */reg = base->MCR;reg &= ~((CTIMER_MCR_MR0R_MASK | CTIMER_MCR_MR0S_MASK | CTIMER_MCR_MR0I_MASK) << ((channel_temp) * 3));/* 设置周期通道  */reg |= CTIMER_MCR_MR3R_MASK;base->MCR = reg;  /* 配置PWM频率 */base->MR[kCTIMER_Match_3] = pwmFreq_Hz;/* 配置占空比 */base->MR[(channel_temp)] = (uint32_t)(pwmFreq_Hz * ((float)(CMTER_PWM_MAX - duty)/CMTER_PWM_MAX)); /* 清除标志位 */CTIMER_ClearStatusFlags(base, CTIMER_IR_MR0INT_MASK << (channel_temp));CTIMER_StartTimer(base);return;
}/*!* @brief    CTIMER 更新PWM占空比** @param    matchChannel   :    CTIMER通道* @param    duty           :    占空比 * CMTER_PWM_MAX** @return   无** @note     使用前请先初始化对应通道** @see      CTIMER_SetDuty(CT0Outpute0_P0_0, 4000); //设置P0_0 通道 PWM占空比 百分之 百分之(4000/CMTER_PWM_MAX)*100 ** @date     2019/5/7 星期二*/
void CTIMER_SetDuty(CTIMER_OutputChannel_t matchChannel, uint32_t duty)
{ CTIMER_Type     * TIMERN[] = CTIMER_BASE_PTRS;CTIMER_Type     * base = TIMERN[matchChannel >> 12];uint32_t pulsePeriod = 0, period;/* 获取周期 */period = base->MR[kCTIMER_Match_3];if (duty == 0){pulsePeriod = period + 1;}else{pulsePeriod = (uint32_t)(period * ((float)(CMTER_PWM_MAX - duty)/CMTER_PWM_MAX));}/* 更新占空比 */base->MR[((matchChannel&0x0F00)>>8)] = pulsePeriod;
}/*!* @brief    初始化CTIMER 作为脉冲计数功能** @param    base     : CTIMER0 - CTIMER4* @param    channel  : 输入脉冲计数通道** @return   无** @note     LPC55S69只能用带方向编码器  ** @see      CTIMER_InitCapConfig(CTIMER0, CTInput0_P0_1);//初始化CTIMER0 为脉冲捕获功能 使用P0_1管脚捕获脉冲** @date     2019/10/21 星期一*/
void CTIMER_InitCapConfig(CTIMER_Type *base, CTIMER_InputChannel_t channel)
{/* 开启多路复用器时钟 */CLOCK_EnableClock(kCLOCK_InputMux);uint8_t index = CTIMER_GetInstance(base);int32_t temp = 0;switch(index){case 0:temp = (TIMER0CAPTSEL0 << PMUX_SHIFT);break;case 1:temp = (TIMER1CAPTSEL0 << PMUX_SHIFT);break;case 2:temp = (TIMER2CAPTSEL0 << PMUX_SHIFT);break;case 3:temp = (TIMER3CAPTSEL0 << PMUX_SHIFT);break;case 4:temp = (TIMER4CAPTSEL0 << PMUX_SHIFT);break;}/* 选择时钟源 */CLOCK_AttachClk((clock_attach_id_t)(kMAIN_CLK_to_CTIMER0 + index));/* 将多路复用器通道和CTIMER输入捕获通道连接起来 */INPUTMUX_AttachSignal(INPUTMUX, 0U, (inputmux_connection_t)((channel >> 8)+temp));/* 将对应管脚 复用为输入捕获通道 */CTIMER_CAPPinInit(channel);ctimer_config_t CTimerConfigStruct;// 配置CTimer为输入捕捉模式、计数器模式,下降沿捕捉 CTimerConfigStruct.mode = kCTIMER_IncreaseOnFallEdge;CTimerConfigStruct.input= kCTIMER_Capture_0;  CTimerConfigStruct.prescale = 0U; // 设置分频因子 CTIMER_Init(base, &CTimerConfigStruct);CTIMER_StartTimer(base);
}/*!* @brief    CTIMER 得到计数值** @param    base        : CTIMER0 - CTIMER4* @param    pin         : 方向管脚 DIR** @return   脉冲计数值** @note     使用前需要对CTMIE初始化 方向管脚也需要初始化** @see      CTIMER_GetCounter(CTIMER0, P1_11); //获取CTIMER0脉冲计数值 P1_11接编码器方向管脚(DIR)** @date     2019/5/7 星期二*/
uint32_t CTIMER_GetCounter(CTIMER_Type *base, GPIO_Name_t pin)
{          /* 获取脉冲计数值 */uint32_t temp = CTIMER_GetTimerCountValue(base);/* 清除对应计数器 */CTIMER_Reset(base);if(PIN_Read(pin) == 0)return -temp;elsereturn temp;}/*!* @brief    CTIMER 清除计数器** @param    base        : CTIMER0 - CTIMER4** @return   脉冲计数值** @note     使用前需要对CTMIE初始化** @see      CTIMER_ClearCounter(CTIMER0); //清除CTIMER0脉冲计数值** @date     2019/5/7 星期二*/
void CTIMER_ClearCounter(CTIMER_Type *base)
{    CTIMER_Reset(base);
}/*!* @brief    CTIMER PWM输出管脚初始化** @param    CTn_CHn  : PWM通道** @return   无** @note     内部调用** @see      CTIME_PWMPinInit(CT0Output0_P0_0); //初始化P0_0 为CTIMER0 的通道0** @date     2019/10/21 星期一*/
void CTIME_PWMPinInit(CTIMER_OutputChannel_t CTn_CHn)
{    uint32_t PIOFun2_config = FUNC2|MODE_Up|MODE_GPIO|INVERT_Disable|DIGIMODE_Digital|FILTER_Disable;uint32_t PIOFun3_config = FUNC3|MODE_Up|MODE_GPIO|INVERT_Disable|DIGIMODE_Digital|FILTER_Disable;uint32_t PIOFun4_config = FUNC4|MODE_Up|MODE_GPIO|INVERT_Disable|DIGIMODE_Digital|FILTER_Disable;/* 开启 时钟 */CLOCK_EnableClock(kCLOCK_Iocon);switch(CTn_CHn){case  CT0Output0_P0_0:       IOCON_PinMuxSet(IOCON, 0, 0, PIOFun3_config);break;case  CT0Output0_P0_30:       IOCON_PinMuxSet(IOCON, 0,30, PIOFun4_config);          break;     case CT0Output1_P0_3:        IOCON_PinMuxSet(IOCON, 0, 3, PIOFun2_config);break;case CT0Output1_P0_31:IOCON_PinMuxSet(IOCON, 0,31, PIOFun4_config);break;     case  CT0Output2_P0_19:        IOCON_PinMuxSet(IOCON, 0,19, PIOFun3_config);break;case CT0Output2_P1_31:IOCON_PinMuxSet(IOCON, 1,31, PIOFun4_config);break; case CT1Output0_P0_18:       IOCON_PinMuxSet(IOCON, 0, 18, PIOFun3_config);break;case CT1Output0_P1_10:IOCON_PinMuxSet(IOCON, 1,10, PIOFun3_config);break;    case CT1Output1_P0_20:        IOCON_PinMuxSet(IOCON, 0, 20, PIOFun2_config);break;case CT1Output1_P1_12:IOCON_PinMuxSet(IOCON, 1,12, PIOFun3_config);break; case CT1Output2_P0_23: IOCON_PinMuxSet(IOCON, 0,23, PIOFun2_config);break;case CT1Output2_P1_14:IOCON_PinMuxSet(IOCON, 1,14, PIOFun3_config);  break;      case CT2Output0_P0_10: IOCON_PinMuxSet(IOCON, 0,10, PIOFun3_config);break;case CT2Output0_P1_5:IOCON_PinMuxSet(IOCON, 1, 5, PIOFun3_config);    break;     case CT2Output1_P1_4: IOCON_PinMuxSet(IOCON, 1, 4, PIOFun3_config);break;case CT2Output1_P1_6:IOCON_PinMuxSet(IOCON, 1, 6, PIOFun3_config);  break;      case CT2Output2_P0_11: IOCON_PinMuxSet(IOCON, 0,11, PIOFun2_config);break;case CT2Output2_P1_7:IOCON_PinMuxSet(IOCON, 1,7, PIOFun3_config);break;      case CT3Output0_P0_5: IOCON_PinMuxSet(IOCON, 0, 5, PIOFun3_config);break;      case CT3Output1_P1_19: IOCON_PinMuxSet(IOCON, 1, 19, PIOFun3_config); break;      case CT3Output2_P0_27: IOCON_PinMuxSet(IOCON, 0,27, PIOFun3_config);break;case CT3Output2_P1_21:IOCON_PinMuxSet(IOCON, 1,21, PIOFun3_config);break;   case CT4Output0_P0_6: IOCON_PinMuxSet(IOCON, 0, 6, PIOFun3_config);break;      default:break;}
}/*!* @brief    CTIMER 脉冲计数管脚初始化** @param    channel  : 脉冲捕获通道** @return   无** @note     内部调用** @see      CTIMER_CAPPinInit(CTInput0_P0_1); //初始化P0_1 管脚复用为CTIMER输入管教* * @date     2019/10/21 星期一*/
void CTIMER_CAPPinInit(CTIMER_InputChannel_t channel)
{uint32_t PIOFun2_config = FUNC2|MODE_Up|MODE_GPIO|INVERT_Disable|DIGIMODE_Digital|FILTER_Disable;uint32_t PIOFun3_config = FUNC3|MODE_Up|MODE_GPIO|INVERT_Disable|DIGIMODE_Digital|FILTER_Disable;/* 开启 时钟 */CLOCK_EnableClock(kCLOCK_Iocon);switch(channel){case  CTInput0_P0_1:        IOCON_PinMuxSet(IOCON, 0, 1, PIOFun3_config);     break;     case  CTInput4_P1_9:       IOCON_PinMuxSet(IOCON, 1, 9, PIOFun3_config);break;      case  CTInput6_P1_13:       IOCON_PinMuxSet(IOCON, 1,13, PIOFun3_config);break;      case  CTInput14_P1_20:       IOCON_PinMuxSet(IOCON, 1,20, PIOFun3_config);break;     case  CTInput2_P1_0:       IOCON_PinMuxSet(IOCON, 1, 0, PIOFun3_config);break;      case  CTInput4_P0_16:       IOCON_PinMuxSet(IOCON, 0,16, PIOFun3_config);break;      case  CTInput10_P0_10:       IOCON_PinMuxSet(IOCON, 0,10, PIOFun2_config);break;case  CTInput16_P0_15:       IOCON_PinMuxSet(IOCON, 0,15, PIOFun3_config);break;case  CTInput3_P1_1:       IOCON_PinMuxSet(IOCON, 1,1,  PIOFun3_config);break;case  CTInput14_P0_26:       IOCON_PinMuxSet(IOCON, 0,26, PIOFun3_config);break;case  CTInput11_P0_28:       IOCON_PinMuxSet(IOCON, 0,28, PIOFun3_config);break;  case  CTInput3_P1_26:       IOCON_PinMuxSet(IOCON, 1,26, PIOFun3_config);break;case  CTInput8_P0_24:       IOCON_PinMuxSet(IOCON, 0,24, PIOFun3_config);break;case  CTInput0_P0_13:       IOCON_PinMuxSet(IOCON, 0,13, PIOFun3_config);break;case  CTInput1_P0_14:       IOCON_PinMuxSet(IOCON, 0,14, PIOFun3_config);break;case  CTInput2_P1_28:       IOCON_PinMuxSet(IOCON, 1,28, PIOFun3_config);break;case  CTInput15_P0_20:       IOCON_PinMuxSet(IOCON, 0,20, PIOFun3_config);break;case  CTInput15_P0_22:       IOCON_PinMuxSet(IOCON, 0,22, PIOFun3_config);break;case  CTInput1_P0_2:       IOCON_PinMuxSet(IOCON, 0, 2, PIOFun2_config);break;case  CTInput7_P1_15:       IOCON_PinMuxSet(IOCON, 1,15, PIOFun3_config);case  CTInput12_P0_4:       IOCON_PinMuxSet(IOCON, 0, 4, PIOFun3_config);case  CTInput13_P0_6:       IOCON_PinMuxSet(IOCON, 0, 6, PIOFun2_config);case  CTInput5_P1_11:       IOCON_PinMuxSet(IOCON, 1,11, PIOFun3_config);break;default:break;}   }
/*!* @file     LQ_CTIME.h** @brief    CTIME驱动文件** @company  北京龙邱智能科技** @author   LQ-005** @note     LPC55S69有5个32位的CTIME ** @version  V1.1  2019/12/06 优化注释 Doxygen** @Software IAR8.32 or MDK5.28** @par URL  http://shop36265907.taobao.com*           http://www.lqist.cn** @date     2019/10/18 星期五*/
#ifndef __LQ_CTIME_H
#define __LQ_CTIME_H#include "stdint.h"
#include "LQ_GPIO.h"/** * @brief CTIMER模块 PWM输出通道* @note  CTIMER 用做PWM输出通道 一个CTIMER模块只能用作脉冲计数和PWM输出中的一种*/
typedef enum
{//CTIMER PWM通道 ,一行最多选一个(一个CT最多输出3路周期相同的PWM,四个通道中通道3用作周期通道)     CT0Output0_P0_0 = 1 + 0x0000, CT0Output0_P0_30 = 2 + 0x0000,  /*!< CTIME0 PWM输出通道0管脚  */    CT0Output1_P0_3 = 1 + 0x0100, CT0Output1_P0_31 = 2 + 0x0100,  /*!< CTIME0 PWM输出通道1管脚  */       CT0Output2_P0_19= 1 + 0x0200, CT0Output2_P1_31 = 2 + 0x0200,  /*!< CTIME0 PWM输出通道2管脚  */       CT1Output0_P0_18= 1 + 0x1000, CT1Output0_P1_10 = 2 + 0x1000,  /*!< CTIME1 PWM输出通道0管脚  */   CT1Output1_P0_20= 1 + 0x1100, CT1Output1_P1_12 = 2 + 0x1100,  /*!< CTIME1 PWM输出通道1管脚  */   CT1Output2_P0_23= 1 + 0x1200, CT1Output2_P1_14 = 2 + 0x1200,  /*!< CTIME1 PWM输出通道2管脚  */   CT2Output0_P0_10= 1 + 0x2000, CT2Output0_P1_5  = 2 + 0x2000,  /*!< CTIME2 PWM输出通道0管脚  */  CT2Output1_P1_6 = 1 + 0x2100, CT2Output1_P1_4  = 2 + 0x2100,  /*!< CTIME2 PWM输出通道1管脚  */  CT2Output2_P1_7 = 1 + 0x2200, CT2Output2_P0_11 = 2 + 0x2200,  /*!< CTIME2 PWM输出通道2管脚  */CT3Output0_P0_5 = 1 + 0x3000,                                 /*!< CTIME3 PWM输出通道0管脚  */CT3Output1_P1_19= 1 + 0x3100,                                 /*!< CTIME3 PWM输出通道1管脚  */CT3Output2_P0_27= 1 + 0x3200, CT3Output2_P1_21 = 2 + 0x3200,  /*!< CTIME3 PWM输出通道2管脚  */CT4Output0_P0_6= 1 + 0x4000,                                  /*!< CTIME4 PWM输出通道0管脚  */} CTIMER_OutputChannel_t;/** * @brief CTIMER模块 脉冲计数通道* @note  CTIMER 模块 脉冲捕获通道 * @note  CTIMER 模块的输入管脚并不是直接CTIMER连接的  而是通过INPUTMUX模块连接的* @note  CTIMER计数器 ---  INPUTMUX输入多路复用模块17路通道  ----  芯片外部管脚* @note  简单说 就是CTIMER的捕获通道每个都可以与 INPUTMUX模块的17路通道相链接* @note  INPUTMUX模块的17路通道相链接的管脚如下*/
typedef enum
{CTInput0_P0_1  = 0x0000 + 1,  CTInput0_P0_13 = 0x0000 + 2,     /*!< INPUTMUX—CTIMER 输入通道0管脚  */  CTInput1_P0_14 = 0x0100 + 1,  CTInput1_P0_2  = 0x0100 + 2,     /*!< INPUTMUX—CTIMER 输入通道1管脚  */  CTInput2_P1_0  = 0x0200 + 1,  CTInput2_P1_28 = 0x0200 + 2,     /*!< INPUTMUX—CTIMER 输入通道2管脚  */  CTInput3_P1_1  = 0x0300 + 1,  CTInput3_P1_26 = 0x0300 + 2,     /*!< INPUTMUX—CTIMER 输入通道3管脚  */  CTInput4_P1_9  = 0x0400 + 1,  CTInput4_P0_16 = 0x0400 + 2,     /*!< INPUTMUX—CTIMER 输入通道4管脚  */  CTInput5_P1_11 = 0x0500 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道5管脚  */  CTInput6_P1_13 = 0x0600 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道6管脚  */  CTInput7_P1_15 = 0x0700 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道7管脚  */  CTInput8_P0_24 = 0x0800 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道8管脚  */  CTInput9_P0_25 = 0x0900 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道9管脚  */  CTInput10_P0_10= 0x0A00 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道10管脚  */  CTInput11_P0_28= 0x0B00 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道11管脚  */  CTInput12_P0_4 = 0x0C00 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道12管脚  */  CTInput13_P0_6 = 0x0D00 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道13管脚  */  CTInput14_P1_20= 0x0E00 + 1,  CTInput14_P0_26= 0x0E00 + 2,     /*!< INPUTMUX—CTIMER 输入通道14管脚  */  CTInput15_P0_20= 0x0F00 + 1,  CTInput15_P0_22= 0x0F00 + 2,     /*!< INPUTMUX—CTIMER 输入通道15管脚  */  CTInput16_P0_15= 0x1000 + 1,                                   /*!< INPUTMUX—CTIMER 输入通道16管脚  */  } CTIMER_InputChannel_t;/**********************************  CTIMER模块 结束 ***************************************//*! CTIMER 最大占空比 可自行修改 */
#define  CMTER_PWM_MAX    10000/*!* @brief    初始化CTIMER为PWM输出功能** @param    matchChannel   :    CTIMER通道  LQ_CTIMER.h中枚举体* @param    duty           :    占空比 * CMTER_PWM_MAX* @param    pwmFreq_Hz     :    频率** @return   无** @note     一个CTIMER模块只能用作脉冲计数和PWM输出的一种* @note     一个CTIMER模块最多只能输出3路PWM频率相同的PWM波** @see      CTIMER_InitPwmConfig(CT0Outpute0_P0_0, 5000, 100);//初始化P0_0 作为CTIMER0的通道0 的PWM输出口 频率100Hz 占空比 百分之(5000/CMTER_PWM_MAX)*100** @date     2019/5/7 星期二*/
void CTIMER_InitPwmConfig(CTIMER_OutputChannel_t matchChannel,uint32_t duty,uint32_t pwmFreq_Hz);/*!* @brief    CTIMER 更新PWM占空比** @param    matchChannel   :    CTIMER通道* @param    duty           :    占空比 * CMTER_PWM_MAX** @return   无** @note     使用前请先初始化对应通道** @see      CTIMER_SetDuty(CT0Outpute0_P0_0, 4000); //设置P0_0 通道 PWM占空比 百分之 百分之(4000/CMTER_PWM_MAX)*100 ** @date     2019/5/7 星期二*/
void CTIMER_SetDuty(CTIMER_OutputChannel_t matchChannel, uint32_t duty);/*!* @brief    初始化CTIMER 作为脉冲计数功能** @param    base     : CTIMER0 - CTIMER4* @param    channel  : 输入脉冲计数通道** @return   无** @note     LPC55S69只能用带方向编码器  ** @see      CTIMER_InitCapConfig(CTIMER0, CTInput0_P0_1);//初始化CTIMER0 为脉冲捕获功能 使用P0_1管脚捕获脉冲** @date     2019/10/21 星期一*/
void CTIMER_InitCapConfig(CTIMER_Type *base, CTIMER_InputChannel_t channel);/*!* @brief    CTIMER 得到计数值** @param    base        : CTIMER0 - CTIMER4* @param    pin         : 方向管脚 DIR** @return   脉冲计数值** @note     使用前需要对CTMIE初始化 方向管脚也需要初始化** @see      CTIMER_GetCounter(CTIMER0, P1_11); //获取CTIMER0脉冲计数值 P1_11接编码器方向管脚(DIR)** @date     2019/5/7 星期二*/
uint32_t CTIMER_GetCounter(CTIMER_Type *base, GPIO_Name_t pin);/*!* @brief    CTIMER 清除计数器** @param    base        : CTIMER0 - CTIMER4** @return   脉冲计数值** @note     使用前需要对CTMIE初始化** @see      CTIMER_ClearCounter(CTIMER0); //清除CTIMER0脉冲计数值** @date     2019/5/7 星期二*/
void CTIMER_ClearCounter(CTIMER_Type *base);/*!* @brief    CTIMER PWM输出管脚初始化** @param    CTn_CHn  : PWM通道** @return   无** @note     内部调用** @see      CTIME_PWMPinInit(CT0Output0_P0_0); //初始化P0_0 为CTIMER0 的通道0** @date     2019/10/21 星期一*/
void CTIME_PWMPinInit(CTIMER_OutputChannel_t CTn_CHn);/*!* @brief    CTIMER 脉冲计数管脚初始化** @param    channel  : 脉冲捕获通道** @return   无** @note     内部调用** @see      CTIMER_CAPPinInit(CTInput0_P0_1); //初始化P0_1 管脚复用为CTIMER输入管教* * @date     2019/10/21 星期一*/
void CTIMER_CAPPinInit(CTIMER_InputChannel_t channel);
#endif

设置Doxygen














重新编译OK

Doxygen生成注释文档相关推荐

  1. Python快速生成注释文档

    Python为我们生成基本满足的说明文档,一来可以提高代码整体阅读性,二来可以将代码的整体结构看着也更清晰. 注意:注释的地方和函数名类名都是与__all__内相关联的 简单的代码格式: #!/usr ...

  2. Android Studio javadoc 生成注释文档

    相信大家刚开始写代码的时候就被前辈告知了要养成写注释的好习惯,今天我们来了解一下如何利用我们平时写的注释生成文档,一起来看看吧! 其实注释格式一般如下两种:  /*  *普通多行  *注释  */ / ...

  3. java注释文档如何生成_Eclipse中java生成注释文档

    使用eclipse生成文档(javadoc)主要有三种方法: 1.  在项目列表中按右键,选择Export(导出),然后在Export(导出)对话框中选择java下的javadoc,提交到下一步. 在 ...

  4. 名词解释(容器、并发,插件,脚本)及程序对象的创建和注释文档

    一.专有名词 1' 容器 创建一种对象类型,持有对其他对象的引用,被称为容器的新对象.在任何时候都可以扩充自己以容纳置于其中的所有东西. java在其标准类库中包含了大量的容器.在某些类库中,一两个通 ...

  5. C#.NET必备工具GhostDoc为代码生成注释文档

    使用GhostDoc为代码生成注释文档 [转自www.bitsCN.com] 介绍:     GhostDoc是Visual Studio的一个免费插件,可以帮助开发人员编写XML格式的注释文档.   ...

  6. doxygen 命令_学习用 doxygen 生成源码文档

    学习用 doxygen 生成源码文档 Arpan Sen 2008 年 10 月 13 日发布 维护用 C/C++ 开发的遗留系统并添加新特性是一项艰难的任务.这涉及几方面的问题:理解现有的类层次结构 ...

  7. 学习用 doxygen 生成源码文档

    学习用 doxygen 生成源码文档 Arpan Sen, 资深工程师, Studio B Productions 简介: 维护用 C/C++ 开发的遗留系统并添加新特性是一项艰难的任务.幸运的是,d ...

  8. python注释文档

    Python有一种独一无二的的注释方式:使用文档字符串,文档字符串是包.模块.类或函数里的第一个语句,这些字符串可以通过对象的__doc__成员被自动提取,并且被pydoc所用. 1.注释文档 2.查 ...

  9. python注释文档,以注释生成文档说明

    Python有一种独一无二的的注释方式:使用文档字符串,文档字符串是包.模块.类或函数里的第一个语句,这些字符串可以通过对象的__doc__成员被自动提取,并且被pydoc所用. 目录 1.注释文档 ...

最新文章

  1. JAVA垃圾回收机制概要
  2. 验证url 地址是否是图片
  3. 我从吴恩达AI For Everyone中学到的十个重要AI观
  4. 弹性地基梁板实用计算_强夯地基承载力原理及测试方法
  5. 秒杀系统 mysql_秒杀系统-介绍
  6. Scala 知识点掌握1
  7. Linux C编程如何使用联机帮助来解决编程问题?
  8. redis aof持久化
  9. 设计一个60T数据仓库及大数据分析平台,医院数字化该怎么做?
  10. python怎么样算安装好了_如何将安装好的Python
  11. Fineui 添加打印控件
  12. 计算 KL距离 (相对熵)
  13. 华佗穿越来教程序员睡觉
  14. 计算机组成与体系结构——计算机系统概述、数据表示方法
  15. 杀不死的人狼——我读《人月神话》(五)
  16. 叠片过滤器和叠片式过滤器以及盘式过滤器的区别介绍
  17. tf.convert_to_tensor()
  18. 天啦撸!打印日志竟然只晓得 Log4j?
  19. pytesseract 测试获取查策网编码字体
  20. 通用mapper 根据条件修改、查询

热门文章

  1. javascript的函数定义的区别
  2. windows自动更新安装后遗留文件或文件夹的删除
  3. Xml,XPath,XSLTxue 学习方法
  4. [转帖]不要迷失在技术的海洋中
  5. Redhat7修改默认运行级别方法
  6. LCD 显示异常定位分析方法
  7. ppi 各代iphone_算算你的手机 高PPI屏幕显示强机推荐
  8. 尚硅谷spring和spring boot笔记_手机标准内存达12G,比笔记本电脑还高!可为何系统总能占一半?...
  9. 企业网站制作要以简约为主
  10. Flex 主窗体给弹出窗体传值