日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Doxygen生成注释文档

發(fā)布時(shí)間:2025/4/16 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Doxygen生成注释文档 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最終效果

最終通過文件的注釋,生成一個(gè)幫助文檔。

軟件安裝

需要安裝3個(gè)軟件
1.Doxygen
2.graphviz(可以根據(jù)文件的引用關(guān)系生成調(diào)用關(guān)系圖)
3.htmlhelp(生成windos脫機(jī)可用的幫助文檔)
打包地址 鏈接:.
提取碼:c98c

自行默認(rèn)安裝即可

注釋規(guī)范

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

/*!* @file LQ_CTIME.h** @brief CTIME驅(qū)動文件** @company 北京龍邱智能科技** @author LQ-005** @note LPC55S69有5個(gè)32位的CTIME ** @version V1.1 2019/12/06 優(yōu)化注釋 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

生成的效果圖

結(jié)構(gòu)體、枚舉體注釋

/** * @brief CTIMER模塊 脈沖計(jì)數(shù)通道* @note CTIMER 模塊 脈沖捕獲通道 * @note CTIMER 模塊的輸入管腳并不是直接CTIMER連接的 而是通過INPUTMUX模塊連接的* @note CTIMER計(jì)數(shù)器 --- INPUTMUX輸入多路復(fù)用模塊17路通道 ---- 芯片外部管腳* @note 簡單說 就是CTIMER的捕獲通道每個(gè)都可以與 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[];

生成的效果圖

函數(shù)注釋

/*!* @brief 初始化CTIMER為PWM輸出功能** @param matchChannel : CTIMER通道 LQ_CTIMER.h中枚舉體* @param duty : 占空比 * CMTER_PWM_MAX* @param pwmFreq_Hz : 頻率** @return 無** @note 一個(gè)CTIMER模塊只能用作脈沖計(jì)數(shù)和PWM輸出的一種* @note 一個(gè)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.首先我們新建一個(gè)文件夾,將按上面規(guī)則注釋的代碼文件放里面(注意,需要所有的代碼保持一樣的編碼方式,這里用的是GB2312)

/*!* @file LQ_CTIME.c** @brief CTIME驅(qū)動文件** @company 北京龍邱智能科技** @author LQ-005** @note LPC55S69有5個(gè)32位的CTIME ** @version V1.1 2019/12/06 優(yōu)化注釋 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 一個(gè)CTIMER模塊只能用作脈沖計(jì)數(shù)和PWM輸出的一種* @note 一個(gè)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; /* 選擇時(shí)鐘源 */CLOCK_AttachClk((clock_attach_id_t)(kMAIN_CLK_to_CTIMER0 + index));if ((channel_temp) == kCTIMER_Match_3){return ; //周期通道}/* 防止重復(fù)初始化 */if(flag[index] < 1){flag[index]++;/* 初始化 CTIMER */CTIMER_GetDefaultConfig(&cconfig);CTIMER_Init(base, &cconfig); }/* 初始化對應(yīng)管腳 */CTIME_PWMPinInit(matchChannel);pwmFreq_Hz = (CLOCK_GetCTimerClkFreq(index) / pwmFreq_Hz) - 1;/* 使能PWM模式 */base->PWMC |= (1U << (channel_temp));/* 清除標(biāo)志位 */reg = base->MCR;reg &= ~((CTIMER_MCR_MR0R_MASK | CTIMER_MCR_MR0S_MASK | CTIMER_MCR_MR0I_MASK) << ((channel_temp) * 3));/* 設(shè)置周期通道 */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)); /* 清除標(biāo)志位 */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 使用前請先初始化對應(yīng)通道** @see CTIMER_SetDuty(CT0Outpute0_P0_0, 4000); //設(shè)置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 作為脈沖計(jì)數(shù)功能** @param base : CTIMER0 - CTIMER4* @param channel : 輸入脈沖計(jì)數(shù)通道** @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) {/* 開啟多路復(fù)用器時(shí)鐘 */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;}/* 選擇時(shí)鐘源 */CLOCK_AttachClk((clock_attach_id_t)(kMAIN_CLK_to_CTIMER0 + index));/* 將多路復(fù)用器通道和CTIMER輸入捕獲通道連接起來 */INPUTMUX_AttachSignal(INPUTMUX, 0U, (inputmux_connection_t)((channel >> 8)+temp));/* 將對應(yīng)管腳 復(fù)用為輸入捕獲通道 */CTIMER_CAPPinInit(channel);ctimer_config_t CTimerConfigStruct;// 配置CTimer為輸入捕捉模式、計(jì)數(shù)器模式,下降沿捕捉 CTimerConfigStruct.mode = kCTIMER_IncreaseOnFallEdge;CTimerConfigStruct.input= kCTIMER_Capture_0; CTimerConfigStruct.prescale = 0U; // 設(shè)置分頻因子 CTIMER_Init(base, &CTimerConfigStruct);CTIMER_StartTimer(base); }/*!* @brief CTIMER 得到計(jì)數(shù)值** @param base : CTIMER0 - CTIMER4* @param pin : 方向管腳 DIR** @return 脈沖計(jì)數(shù)值** @note 使用前需要對CTMIE初始化 方向管腳也需要初始化** @see CTIMER_GetCounter(CTIMER0, P1_11); //獲取CTIMER0脈沖計(jì)數(shù)值 P1_11接編碼器方向管腳(DIR)** @date 2019/5/7 星期二*/ uint32_t CTIMER_GetCounter(CTIMER_Type *base, GPIO_Name_t pin) { /* 獲取脈沖計(jì)數(shù)值 */uint32_t temp = CTIMER_GetTimerCountValue(base);/* 清除對應(yīng)計(jì)數(shù)器 */CTIMER_Reset(base);if(PIN_Read(pin) == 0)return -temp;elsereturn temp;}/*!* @brief CTIMER 清除計(jì)數(shù)器** @param base : CTIMER0 - CTIMER4** @return 脈沖計(jì)數(shù)值** @note 使用前需要對CTMIE初始化** @see CTIMER_ClearCounter(CTIMER0); //清除CTIMER0脈沖計(jì)數(shù)值** @date 2019/5/7 星期二*/ void CTIMER_ClearCounter(CTIMER_Type *base) { CTIMER_Reset(base); }/*!* @brief CTIMER PWM輸出管腳初始化** @param CTn_CHn : PWM通道** @return 無** @note 內(nèi)部調(diào)用** @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;/* 開啟 時(shí)鐘 */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 脈沖計(jì)數(shù)管腳初始化** @param channel : 脈沖捕獲通道** @return 無** @note 內(nèi)部調(diào)用** @see CTIMER_CAPPinInit(CTInput0_P0_1); //初始化P0_1 管腳復(fù)用為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;/* 開啟 時(shí)鐘 */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驅(qū)動文件** @company 北京龍邱智能科技** @author LQ-005** @note LPC55S69有5個(gè)32位的CTIME ** @version V1.1 2019/12/06 優(yōu)化注釋 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輸出通道 一個(gè)CTIMER模塊只能用作脈沖計(jì)數(shù)和PWM輸出中的一種*/ typedef enum {//CTIMER PWM通道 ,一行最多選一個(gè)(一個(gè)CT最多輸出3路周期相同的PWM,四個(gè)通道中通道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模塊 脈沖計(jì)數(shù)通道* @note CTIMER 模塊 脈沖捕獲通道 * @note CTIMER 模塊的輸入管腳并不是直接CTIMER連接的 而是通過INPUTMUX模塊連接的* @note CTIMER計(jì)數(shù)器 --- INPUTMUX輸入多路復(fù)用模塊17路通道 ---- 芯片外部管腳* @note 簡單說 就是CTIMER的捕獲通道每個(gè)都可以與 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模塊 結(jié)束 ***************************************//*! 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 一個(gè)CTIMER模塊只能用作脈沖計(jì)數(shù)和PWM輸出的一種* @note 一個(gè)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 使用前請先初始化對應(yīng)通道** @see CTIMER_SetDuty(CT0Outpute0_P0_0, 4000); //設(shè)置P0_0 通道 PWM占空比 百分之 百分之(4000/CMTER_PWM_MAX)*100 ** @date 2019/5/7 星期二*/ void CTIMER_SetDuty(CTIMER_OutputChannel_t matchChannel, uint32_t duty);/*!* @brief 初始化CTIMER 作為脈沖計(jì)數(shù)功能** @param base : CTIMER0 - CTIMER4* @param channel : 輸入脈沖計(jì)數(shù)通道** @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 得到計(jì)數(shù)值** @param base : CTIMER0 - CTIMER4* @param pin : 方向管腳 DIR** @return 脈沖計(jì)數(shù)值** @note 使用前需要對CTMIE初始化 方向管腳也需要初始化** @see CTIMER_GetCounter(CTIMER0, P1_11); //獲取CTIMER0脈沖計(jì)數(shù)值 P1_11接編碼器方向管腳(DIR)** @date 2019/5/7 星期二*/ uint32_t CTIMER_GetCounter(CTIMER_Type *base, GPIO_Name_t pin);/*!* @brief CTIMER 清除計(jì)數(shù)器** @param base : CTIMER0 - CTIMER4** @return 脈沖計(jì)數(shù)值** @note 使用前需要對CTMIE初始化** @see CTIMER_ClearCounter(CTIMER0); //清除CTIMER0脈沖計(jì)數(shù)值** @date 2019/5/7 星期二*/ void CTIMER_ClearCounter(CTIMER_Type *base);/*!* @brief CTIMER PWM輸出管腳初始化** @param CTn_CHn : PWM通道** @return 無** @note 內(nèi)部調(diào)用** @see CTIME_PWMPinInit(CT0Output0_P0_0); //初始化P0_0 為CTIMER0 的通道0** @date 2019/10/21 星期一*/ void CTIME_PWMPinInit(CTIMER_OutputChannel_t CTn_CHn);/*!* @brief CTIMER 脈沖計(jì)數(shù)管腳初始化** @param channel : 脈沖捕獲通道** @return 無** @note 內(nèi)部調(diào)用** @see CTIMER_CAPPinInit(CTInput0_P0_1); //初始化P0_1 管腳復(fù)用為CTIMER輸入管教* * @date 2019/10/21 星期一*/ void CTIMER_CAPPinInit(CTIMER_InputChannel_t channel); #endif

設(shè)置Doxygen














重新編譯OK

總結(jié)

以上是生活随笔為你收集整理的Doxygen生成注释文档的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。