Doxygen生成注释文档
生活随笔
收集整理的這篇文章主要介紹了
Doxygen生成注释文档
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最終效果
最終通過文件的注釋,生成一個幫助文檔。
軟件安裝
需要安裝3個軟件
1.Doxygen
2.graphviz(可以根據文件的引用關系生成調用關系圖)
3.htmlhelp(生成windos脫機可用的幫助文檔)
打包地址 鏈接:.
提取碼:c98c
自行默認安裝即可
注釋規范
想要生成注釋文檔,首先你的注釋要符合Doxygen的要求
文件注釋
生成的效果圖
宏定義注釋
/*! 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;生成的效果圖
全局變量
生成的效果圖
函數注釋
/*!* @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生成注释文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: coremark 官网对各种单片机的测评
- 下一篇: 判断是否是2的N次方