久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5900|回復: 8
打印 上一主題 下一主題
收起左側(cè)

STC8G1K08單片機的PWM為什么沒有輸出,在定時器0定義IO取反,但是占空比不管用

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:807182 發(fā)表于 2021-5-24 13:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
30黑幣
/************************ 定時器配置 ****************************/
void        Timer_config(void)
{
        TIM_InitTypeDef                TIM_InitStructure;                                                //結(jié)構(gòu)定義
        TIM_InitStructure.TIM_Mode      = TIM_16BitAutoReload;        //指定工作模式,   TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMask
        TIM_InitStructure.TIM_Polity    = Polity_0;                        //指定中斷優(yōu)先級(低到高) Polity_0,Polity_1,Polity_2,Polity_3
        TIM_InitStructure.TIM_Interrupt = ENABLE;                                        //中斷是否允許,   ENABLE或DISABLE
        TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T;                //指定時鐘源,     TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
        TIM_InitStructure.TIM_ClkOut    = ENABLE;                                //是否輸出高速脈沖, ENABLE或DISABLE
        TIM_InitStructure.TIM_Value     = 65536UL - (MAIN_Fosc / 1000);                //中斷頻率, 1000次/秒
        TIM_InitStructure.TIM_Run       = ENABLE;                                        //是否初始化后啟動定時器, ENABLE或DISABLE
        Timer_Inilize(Timer0,&TIM_InitStructure);                                        //初始化Timer0          Timer0,Timer1,Timer2,Timer3,Timer4
}

/***************  串口初始化函數(shù) *****************/
void        PWM_config(void)
{
        PWMx_InitDefine                PWMx_InitStructure;
        
        PWMx_InitStructure.PWM1_Mode    =        CCMRn_PWM_MODE1;        //模式,                CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
        PWMx_InitStructure.PWM2_Mode    =        CCMRn_PWM_MODE1;        //模式,                CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
        PWMx_InitStructure.PWM3_Mode    =        CCMRn_PWM_MODE1;        //模式,                CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
        PWMx_InitStructure.PWM4_Mode    =        CCMRn_PWM_MODE1;        //模式,                CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2

        PWMx_InitStructure.PWM1_SetPolity  = Polity_0;                        //指定中斷優(yōu)先級(低到高) Polity_0,Polity_1,Polity_2,Polity_3
        PWMx_InitStructure.PWM2_SetPolity  = Polity_0;                        //指定中斷優(yōu)先級(低到高) Polity_0,Polity_1,Polity_2,Polity_3
        PWMx_InitStructure.PWM3_SetPolity  = Polity_0;                        //指定中斷優(yōu)先級(低到高) Polity_0,Polity_1,Polity_2,Polity_3
        PWMx_InitStructure.PWM4_SetPolity  = Polity_0;                        //指定中斷優(yōu)先級(低到高) Polity_0,Polity_1,Polity_2,Polity_3
        
        PWMx_InitStructure.PWM_Period   = 1024;                                                        //周期時間,   0~65535
        PWMx_InitStructure.PWM1_Duty    = PWMA_Duty.PWM1_Duty;        //PWM1占空比時間, 0~Period
        PWMx_InitStructure.PWM2_Duty    = PWMA_Duty.PWM2_Duty;        //PWM2占空比時間, 0~Period
        PWMx_InitStructure.PWM3_Duty    = PWMA_Duty.PWM3_Duty;        //PWM3占空比時間, 0~Period
        PWMx_InitStructure.PWM4_Duty    = PWMA_Duty.PWM4_Duty;        //PWM4占空比時間, 0~Period
        PWMx_InitStructure.PWM_DeadTime = 0;                                                                //死區(qū)發(fā)生器設(shè)置, 0~255
        
        PWMx_InitStructure.PWM_EnoSelect   = ENO1P | ENO1N  ;        //輸出通道選擇,        ENO1P,ENO1N,ENO2P,ENO2N,ENO3P,ENO3N,ENO4P,ENO4N / ENO5P,ENO6P,ENO7P,ENO8P
        PWMx_InitStructure.PWM_PS_SW       = PWM1_SW_P10_P11 ;        //切換端口,                PWM1_SW_P10_P11,PWM1_SW_P20_P21,PWM1_SW_P60_P61
                                                                                                                                                                                                                        //                                                PWM2_SW_P12_P13,PWM2_SW_P22_P23,PWM2_SW_P62_P63
                                                                                                                                                                                                                        //                                                PWM3_SW_P14_P15,PWM3_SW_P24_P25,PWM3_SW_P64_P65
                                                                                                                                                                                                                        //                                                PWM4_SW_P16_P17,PWM4_SW_P26_P27,PWM4_SW_P66_P67,PWM4_SW_P34_P33

        PWMx_InitStructure.PWM_CC1Enable   = ENABLE;                                //開啟PWM1P輸入捕獲/比較輸出,  ENABLE,DISABLE
        PWMx_InitStructure.PWM_CC1NEnable  = ENABLE;                                //開啟PWM1N輸入捕獲/比較輸出,  ENABLE,DISABLE
        PWMx_InitStructure.PWM_CC2Enable   = ENABLE;                                //開啟PWM2P輸入捕獲/比較輸出,  ENABLE,DISABLE
        PWMx_InitStructure.PWM_CC2NEnable  = ENABLE;                                //開啟PWM2N輸入捕獲/比較輸出,  ENABLE,DISABLE
        PWMx_InitStructure.PWM_CC3Enable   = ENABLE;                                //開啟PWM3P輸入捕獲/比較輸出,  ENABLE,DISABLE
        PWMx_InitStructure.PWM_CC3NEnable  = ENABLE;                                //開啟PWM3N輸入捕獲/比較輸出,  ENABLE,DISABLE
        PWMx_InitStructure.PWM_CC4Enable   = ENABLE;                                //開啟PWM4P輸入捕獲/比較輸出,  ENABLE,DISABLE
        PWMx_InitStructure.PWM_CC4NEnable  = ENABLE;                                //開啟PWM4N輸入捕獲/比較輸出,  ENABLE,DISABLE
        
        PWMx_InitStructure.PWM_MainOutEnable= ENABLE;                                //主輸出使能, ENABLE,DISABLE
        PWMx_InitStructure.PWM_CEN_Enable   = ENABLE;                                //使能計數(shù)器, ENABLE,DISABLE
        PWM_Configuration(PWMA, &PWMx_InitStructure);                                //初始化PWM,  PWMA,PWMB
}







定時器中斷里面是這樣寫的

if(!PWM1_Flag)
        {
                PWMA_Duty.PWM1_Duty++;
                if(PWMA_Duty.PWM1_Duty >= 2047) PWM1_Flag = 1;
        }
        else
        {
                PWMA_Duty.PWM1_Duty--;
                if(PWMA_Duty.PWM1_Duty <= 0) PWM1_Flag = 0;
        }

        if(!PWM2_Flag)
        {
                PWMA_Duty.PWM2_Duty++;
                if(PWMA_Duty.PWM2_Duty >= 2047) PWM2_Flag = 1;
        }
        else
        {
                PWMA_Duty.PWM2_Duty--;
                if(PWMA_Duty.PWM2_Duty <= 0) PWM2_Flag = 0;
        }

        if(!PWM3_Flag)
        {
                PWMA_Duty.PWM3_Duty++;
                if(PWMA_Duty.PWM3_Duty >= 2047) PWM3_Flag = 1;
        }
        else
        {
                PWMA_Duty.PWM3_Duty--;
                if(PWMA_Duty.PWM3_Duty <= 0) PWM3_Flag = 0;
        }

        if(!PWM4_Flag)
        {
                PWMA_Duty.PWM4_Duty++;
                if(PWMA_Duty.PWM4_Duty >= 2047) PWM4_Flag = 1;
        }
        else
        {
                PWMA_Duty.PWM4_Duty--;
                if(PWMA_Duty.PWM4_Duty <= 0) PWM4_Flag = 0;
        }
        
        UpdatePwm(PWMA, &PWMA_Duty);





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:584814 發(fā)表于 2021-5-26 09:28 | 只看該作者
STC網(wǎng)站或工具中找個程例就可以。
回復

使用道具 舉報

板凳
ID:188720 發(fā)表于 2022-8-4 16:37 | 只看該作者
STC8G1K08一個PWM有兩個引腳可以輸出,但是怎么選擇哪一個引腳怎么設(shè)置呢?文檔里有嗎?
回復

使用道具 舉報

地板
ID:1034262 發(fā)表于 2022-8-4 17:49 | 只看該作者
紅燒魚頭 發(fā)表于 2022-8-4 16:37
STC8G1K08一個PWM有兩個引腳可以輸出,但是怎么選擇哪一個引腳怎么設(shè)置呢?文檔里有嗎?

手冊第3章“功能腳切換”
回復

使用道具 舉報

5#
ID:1034262 發(fā)表于 2022-8-4 17:51 | 只看該作者
樓主,PWM輸出的IO有沒有設(shè)置為準雙向口或推挽輸出?
回復

使用道具 舉報

6#
ID:213173 發(fā)表于 2022-8-4 21:08 | 只看該作者
//適用于STC8G1K08-16/20PIN
#include <STC8.H>

void main()
{
        P1M0 = 0x02;           //P1.1推挽模式
        P1M1 = 0x00;           //P1.1推挽模式
        P3M0 = 0x00;
        P3M1 = 0x00;
        P5M0 = 0x00;
        P5M1 = 0x00;
       
        CCON = 0x00;
        CMOD = 0x08;           //PCA時鐘為系統(tǒng)時鐘
        CL = 0x00;
        CH = 0x00;
       
        CCAPM0 = 0x42;         //PCA模塊0為PWM工作模式
        PCA_PWM0 = 0x00;       //PCA模塊0輸出8位PWM     
        CCAP0H=CCAP0L=0x80;    //PWM占空比為50%
        //默認P1.1輸出PWM,改變CCAP0H值即改變占空比(0xff~0x00=0%~100%)
        while (1);
}
回復

使用道具 舉報

7#
ID:631012 發(fā)表于 2022-9-8 10:07 來自手機 | 只看該作者
最初接MOS管,發(fā)現(xiàn)沒有輸出,量了一下輸出電壓1.15v,換成三極管后正常輸出,就是頻率不能調(diào)低了嗎。
回復

使用道具 舉報

8#
ID:1034262 發(fā)表于 2022-9-8 15:55 | 只看該作者
MOS管輸入電容較大,PWM頻率高時,由于IO有內(nèi)阻,則等效RC濾波了。
回復

使用道具 舉報

9#
ID:999824 發(fā)表于 2022-9-8 19:37 | 只看該作者
有沖突應(yīng)該是,會有問題的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费人成在线观看网站 | 国产在线一区观看 | 国产精品欧美一区二区三区不卡 | 亚洲三级视频 | 五月精品视频 | 国产在线视频在线观看 | 澳门永久av免费网站 | 一区二区av | 国产精品乱码一区二区三区 | 国产成人免费视频网站高清观看视频 | 欧美国产视频 | 日韩在线精品强乱中文字幕 | 最新中文字幕第一页视频 | 午夜欧美 | 国产成人精品在线 | 日韩一区二区三区视频在线观看 | 婷婷五月色综合 | 在线色网 | 久久久久久免费观看 | 亚洲一区二区久久 | 日本一道本视频 | 国产综合精品 | 国产小视频在线观看 | 亚洲精品字幕 | 欧美激情视频网站 | 亚欧精品 | av天天干 | 中文字幕一区在线观看视频 | 国产va| 国产精品久久久久久久久久久久 | 亚洲不卡在线观看 | 中文字幕在线网 | 午夜精品一区二区三区三上悠亚 | 在线国产小视频 | 国产精品99视频 | 欧美毛片免费观看 | 日本视频中文字幕 | 91av国产在线视频 | 玖玖玖在线观看 | 国产精品久久久久永久免费观看 | 日韩欧美二区 |