亚洲欧美日本韩国_久久久久亚洲AV片无码V_亚洲AV片不卡无码一_H漫全彩纯肉无码网站

您的瀏覽器版本過低,為保證更佳的瀏覽體驗,請點擊更新高版本瀏覽器

以后再說X
歡迎來到沈陽芯碩科技有限公司
服務熱線
024-85718900
產(chǎn)品分類
  • 暫無分類
站內(nèi)搜索
 
友情鏈接
  • 暫無鏈接
首頁 > 供應產(chǎn)品 > 華大單片機高級定時器輸出0~100%占空比方法
華大單片機高級定時器輸出0~100%占空比方法
點擊圖片查看原圖
產(chǎn)品: 瀏覽次數(shù):133華大單片機高級定時器輸出0~100%占空比方法 
品牌: 華大
單價: 面議
最小起訂量:
供貨總量:
發(fā)貨期限: 自買家付款之日起 3 天內(nèi)發(fā)貨
有效期至: 長期有效
最后更新: 2022-03-03 14:36
  詢價
詳細信息

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

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

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

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

以華大單片機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);                       //端口外設(shè)時鐘使能

 

   

    Gpio_SetFunc_TIM4_CHA_P23();

 

 

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

 

    enAdt = AdTIM4;

    Adt_StopCount(enAdt);

    Adt_ClearCount(enAdt);

 

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

    stcAdtbaseCntCfg.enCntDir = AdtCntUp;                                               //向上計數(shù)

    stcAdtbaseCntCfg.enCntClkDiv = AdtClkPClk0Div8;                    //PCLK8分頻

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

   

    u16Period = 0xEEEE;

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

 

    enAdtCompare = AdtCompareA;

    u16Compare = 0xEEEE;

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

   

    enAdtCompare = AdtCompareC;

    u16Compare = 0xEEEE;

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

 

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

 

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

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

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

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

    stcAdtTIM4ACfg.enStaStp = AdtCHxStateSelSS;                                  //計數(shù)開始或停止時,CHA端口輸出由STACB、STPCB決定

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

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

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

   

    Adt_StartCount(enAdt);                                                                                             //開啟ADT

   

    while(1)

        {

               

                   delay1ms(1000);

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

                  {

                            fPwmDyty += 0.1;

                  }

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

                  {

                            fPwmDyty = 0;

                  }

 

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

                  {

                             M0P_ADT0->PCONR_f.PERCA = 0; 

                  }

                  else                                                                                                                       //占空比大于等于100%,將計數(shù)周期結(jié)束時輸出設(shè)置為高

                  {

                            M0P_ADT0->PCONR_f.PERCA = 1;

                  }

               

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

               

          }

}


詢價單
0條  相關(guān)評論
国产v亚洲v天堂无码久久久| 欧美三级午夜理伦三级| 国产成人亚洲综合无码精品| 久久狠狠爱亚洲综合影院| 伊人精品久久久久中文字幕| 黑人巨大av在线播放无码| 人妻少妇精品中文字幕av蜜桃| www夜片内射视频日韩精品成人| 日木强大喷奶水av片| 在线观看av网站永久| 大又大又粗又硬又爽少妇毛片| 少妇av射精精品蜜桃专区| 97久久精品午夜一区二区| 国产又粗又猛又爽又黄的视频在线观看动漫 | 国产亚洲av夜间福利香蕉149| 全免费a级毛片免费看视频 | 亚洲av成人片色在线观看 | 人妻av无码系列一区二区三区| 大伊香蕉在线精品视频75| 久久av老司机精品网站导航| 日本高清视频wwww色| 久久人人爽人人爽人人av东京热| 国产精品亚洲аv无码播放| 国产美女精品一区二区三区| www插插插无码免费视频网站| 国产免费av片在线看| 国产无吗一区二区三区在线欢| 日日碰狠狠丁香久燥| 80s国产成年女人毛片| 久久中文字幕无码专区| 韩国三级在线观看久| 久久久久国产一区二区三区| 插插射啊爱视频日a级| 爱情岛永久地址www成人| 精品无码中出一区二区| 久久久久亚洲av片无码下载蜜桃| 日韩欧美群交p内射捆绑| 爱性久久久久久久久| 国产乱人伦无无码视频试看| 免费黄色电影在线观看| 97人人模人人爽人人喊电影|