一本一道AV无码中文字幕,久久久国产一区二区三区四区小说,国产a√精品区二区三区四区,国产精品人人妻人色五月

行業產品

  • 行業產品

沈陽芯碩科技有限公司


當前位置:沈陽芯碩科技有限公司>>單片機/芯片>>華大單片機高級定時器輸出0-100占空比方法

華大單片機高級定時器輸出0-100占空比方法

返回列表頁

參   考   價: 10

訂  貨  量: ≥1  個

具體成交價以合同協議為準

產品型號

品       牌

廠商性質代理商

所  在  地沈陽市

聯系方式:宣女士查看聯系方式

更新時間:2021-09-09 13:27:49瀏覽次數:384次

聯系我時,請告知來自 智慧城市網

經營模式:代理商

商鋪產品:94條

所在地區:遼寧沈陽市

聯系人:宣女士 (經理)

產品簡介
顏色 黑色    

華大單片機可以通過種方式進行PWM輸出,工程師反應使用高級定時器輸出PWM的時候,不能輸出占空比為0或100的波形。這時由于高級定時器輸出PWM時設置會比較特殊,下面進行相關的介紹。

詳細介紹

華大單片機可以通過種方式進行PWM輸出,工程師反應使用高級定時器輸出PWM的時候,不能輸出占空比為0100的波形。這時由于高級定時器輸出PWM時設置會比較特殊,下面進行相關的介紹。

高級定時器進行PWM輸出時,波形主要由下面幾個寄存器的值來決定:
PCONR.PERCx(x=A/B) CHACHB的周期匹配時,輸出電平狀態,設置的是PWM周期結束后電平狀態;
PCONR.CMPCx(x=A/B) CHACHB的比較匹配時,輸出電平狀態,設置的是計數到計數點后電平的狀態;
PCONR.STASTPSx(x=A/B)CHACHB的起始和停止電平選擇;
PCONR.STACx(x=A/B) 計數開始時CHACHB電平狀態,PWM開始前端口的電平狀態;
PCONR.STPCx(x=A/B):計數結束時CHACHB電平狀態,PWM停止后端口的電平狀態;
前兩個寄存器用來設置PWM輸出周期的波形,后三個寄存器用來設置PWM開始和結束時端口的電平。

本文開頭提到的問題通過設置前兩個寄存器就可以實現。下面以起始低電平,計數匹配后高電平的PWM波形來說明。起始低電平說明PWM周期匹配后,新的周期開始時端口的電平為低電平,需要把PCONR.PERCx設置為低電平;計數匹配后為高電平,把PCONR.CMPCx設置為高電平就可以。這樣的設置可以輸出0~<100)占空比的波形。100這點需要始終是高電平,也就是說周期匹配的時候不能輸出低電平,設置為低電平的話,當周期匹配的時候會立刻輸出一個低電平,再進行比較匹配的判斷,匹配分輸出高電平,這樣就存在一個很小的低電平脈沖,不是我們所需要的。

當要輸出100占空比的時候,要把PCONR.PERCx設置為高電平,這樣就周期匹配的時候會輸出高電平,不會再有低電平脈沖。當占空比不是100
的時候,再把PCONR.PERCx設置回低電平就可以。

以華大單片機HC32F003芯片TIM4定時器CHA通道為例,每一秒改變增加10%占空比,輸出100
后,占空比改為0輸出。代碼部分如下:

int32_t main(void)

{

       float fPwmDyty = 0.0;

   en_adt_unit_t enAdt;

   uint16_t u16Period;

   en_adt_compare_t enAdtCompare;

   uint16_t u16Compare;

   stc_adt_basecnt_cfg_t stcAdtBaseCntCfg;

   stc_adt_CHxX_port_cfg_t stcAdtTIM4ACfg;

   DDL_ZERO_STRUCT(stcAdtBaseCntCfg);

   DDL_ZERO_STRUCT(stcAdtTIM4ACfg);

   Clk_SetPeripheralGate(ClkPeripheralGpio, TRUE);                       //端口外設時鐘使能

   

   Gpio_SetFunc_TIM4_CHA_P23();

   Clk_SetPeripheralGate(ClkPeripheralAdt, TRUE);                         //ADT外設時鐘使能

   enAdt = AdTIM4;

   Adt_StopCount(enAdt);

   Adt_ClearCount(enAdt);

   stcAdtBaseCntCfg.enCntMode = AdtSawtoothMode;                    //ADT載波為三角波

   stcAdtBaseCntCfg.enCntDir = AdtCntUp;                                               //向上計數

   stcAdtBaseCntCfg.enCntClkDiv = AdtClkPClk0Div8;                    //PCLK8分頻

   Adt_Init(enAdt, &stcAdtBaseCntCfg);                                                       //ADT載波、計數模式、時鐘配置

   

   u16Period = 0xEEEE;

   Adt_SetPeriod(enAdt, u16Period);                                                              //設置PWM周期

   enAdtCompare = AdtCompareA;

   u16Compare = 0xEEEE;

   Adt_SetCompareValue(enAdt, enAdtCompare, u16Compare);       //設置CHA通道PWM低電平時間

   

   enAdtCompare = AdtCompareC;

   u16Compare = 0xEEEE;

   Adt_SetCompareValue(enAdt, enAdtCompare, u16Compare);      //設置CHA通道比較緩存值

   Adt_EnableValueBuf(enAdt, AdtCHxA, TRUE);                                           //使能CHA通道緩存輸出

   stcAdtTIM4ACfg.enCap = AdtCHxCompareOutput;                              //比較輸出

   stcAdtTIM4ACfg.bOutEn = TRUE;                                                                        //端口輸出使能

   stcAdtTIM4ACfg.enPerc = AdtCHxPeriodLow;                                         //周期匹配時輸出低電平

   stcAdtTIM4ACfg.enCmpc = AdtCHxCompareHigh;                               //比較匹配時輸出高電平

   stcAdtTIM4ACfg.enStaStp = AdtCHxStateSelSS;                                 //計數開始或停止時,CHA端口輸出由STACBSTPCB決定

   stcAdtTIM4ACfg.enStaOut = AdtCHxPortOutLow;                               //計數開始時CHA端口輸出設定為低電平

   stcAdtTIM4ACfg.enStpOut = AdtCHxPortOutLow;                               //計數停止時CHA端口輸出設定為低電平

   Adt_CHxXPortConfig(enAdt, AdtCHxA, &stcAdtTIM4ACfg);       //端口CHA配置

   

   Adt_StartCount(enAdt);                                                                                             //開啟ADT

   

   while(1)

       {

               

                  delay1ms(1000);

                  if(fPwmDyty < 1)                                                                                          //占空比小于100,將占空比加10%

                 {

                           fPwmDyty += 0.1;

                 }

                 else                                                                                                                          //占空比大于等于100,將占空比設置為0%

                 {

                           fPwmDyty = 0;

                 }

                 if (fPwmDyty < 1)                                                                                     //占空比小于100,將計數周期結束時輸出設置為低

                 {

                            M0P_ADT0->PCONR_f.PERCA = 0;  

                 }

                 else                                                                                                                       //占空比大于等于100,將計數周期結束時輸出設置為高

                 {

                           M0P_ADT0->PCONR_f.PERCA = 1;

                 }

               

                 Adt_SetCompareValue(AdTIM4, AdtCompareC, (1-fPwmDyty)*u16Period);

               

         }

}




感興趣的產品PRODUCTS YOU ARE INTERESTED IN

智慧城市網 設計制作,未經允許翻錄必究 .? ? ? Copyright(C)?2021 http://cchxqp518.com,All rights reserved.

以上信息由企業自行提供,信息內容的真實性、準確性和合法性由相關企業負責,智慧城市網對此不承擔任何保證責任。 溫馨提示:為規避購買風險,建議您在購買產品前務必確認供應商資質及產品質量。

會員登錄

×

請輸入賬號

請輸入密碼

=

請輸驗證碼

收藏該商鋪

登錄 后再收藏

提示

您的留言已提交成功!我們將在第一時間回復您~