Doxygen生成注释文档
最终效果
最终通过文件的注释,生成一个帮助文档。
软件安装
需要安装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生成注释文档相关推荐
- Python快速生成注释文档
Python为我们生成基本满足的说明文档,一来可以提高代码整体阅读性,二来可以将代码的整体结构看着也更清晰. 注意:注释的地方和函数名类名都是与__all__内相关联的 简单的代码格式: #!/usr ...
- Android Studio javadoc 生成注释文档
相信大家刚开始写代码的时候就被前辈告知了要养成写注释的好习惯,今天我们来了解一下如何利用我们平时写的注释生成文档,一起来看看吧! 其实注释格式一般如下两种: /* *普通多行 *注释 */ / ...
- java注释文档如何生成_Eclipse中java生成注释文档
使用eclipse生成文档(javadoc)主要有三种方法: 1. 在项目列表中按右键,选择Export(导出),然后在Export(导出)对话框中选择java下的javadoc,提交到下一步. 在 ...
- 名词解释(容器、并发,插件,脚本)及程序对象的创建和注释文档
一.专有名词 1' 容器 创建一种对象类型,持有对其他对象的引用,被称为容器的新对象.在任何时候都可以扩充自己以容纳置于其中的所有东西. java在其标准类库中包含了大量的容器.在某些类库中,一两个通 ...
- C#.NET必备工具GhostDoc为代码生成注释文档
使用GhostDoc为代码生成注释文档 [转自www.bitsCN.com] 介绍: GhostDoc是Visual Studio的一个免费插件,可以帮助开发人员编写XML格式的注释文档. ...
- doxygen 命令_学习用 doxygen 生成源码文档
学习用 doxygen 生成源码文档 Arpan Sen 2008 年 10 月 13 日发布 维护用 C/C++ 开发的遗留系统并添加新特性是一项艰难的任务.这涉及几方面的问题:理解现有的类层次结构 ...
- 学习用 doxygen 生成源码文档
学习用 doxygen 生成源码文档 Arpan Sen, 资深工程师, Studio B Productions 简介: 维护用 C/C++ 开发的遗留系统并添加新特性是一项艰难的任务.幸运的是,d ...
- python注释文档
Python有一种独一无二的的注释方式:使用文档字符串,文档字符串是包.模块.类或函数里的第一个语句,这些字符串可以通过对象的__doc__成员被自动提取,并且被pydoc所用. 1.注释文档 2.查 ...
- python注释文档,以注释生成文档说明
Python有一种独一无二的的注释方式:使用文档字符串,文档字符串是包.模块.类或函数里的第一个语句,这些字符串可以通过对象的__doc__成员被自动提取,并且被pydoc所用. 目录 1.注释文档 ...
最新文章
- JAVA垃圾回收机制概要
- 验证url 地址是否是图片
- 我从吴恩达AI For Everyone中学到的十个重要AI观
- 弹性地基梁板实用计算_强夯地基承载力原理及测试方法
- 秒杀系统 mysql_秒杀系统-介绍
- Scala 知识点掌握1
- Linux C编程如何使用联机帮助来解决编程问题?
- redis aof持久化
- 设计一个60T数据仓库及大数据分析平台,医院数字化该怎么做?
- python怎么样算安装好了_如何将安装好的Python
- Fineui 添加打印控件
- 计算 KL距离 (相对熵)
- 华佗穿越来教程序员睡觉
- 计算机组成与体系结构——计算机系统概述、数据表示方法
- 杀不死的人狼——我读《人月神话》(五)
- 叠片过滤器和叠片式过滤器以及盘式过滤器的区别介绍
- tf.convert_to_tensor()
- 天啦撸!打印日志竟然只晓得 Log4j?
- pytesseract 测试获取查策网编码字体
- 通用mapper 根据条件修改、查询