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

標題: STC8G1K08單片機的PWM為什么沒有輸出,在定時器0定義IO取反,但是占空比不管用 [打印本頁]

作者: 暖西夏    時間: 2021-5-24 13:26
標題: STC8G1K08單片機的PWM為什么沒有輸出,在定時器0定義IO取反,但是占空比不管用
/************************ 定時器配置 ****************************/
void        Timer_config(void)
{
        TIM_InitTypeDef                TIM_InitStructure;                                                //結構定義
        TIM_InitStructure.TIM_Mode      = TIM_16BitAutoReload;        //指定工作模式,   TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMask
        TIM_InitStructure.TIM_Polity    = Polity_0;                        //指定中斷優先級(低到高) 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
}

/***************  串口初始化函數 *****************/
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;                        //指定中斷優先級(低到高) Polity_0,Polity_1,Polity_2,Polity_3
        PWMx_InitStructure.PWM2_SetPolity  = Polity_0;                        //指定中斷優先級(低到高) Polity_0,Polity_1,Polity_2,Polity_3
        PWMx_InitStructure.PWM3_SetPolity  = Polity_0;                        //指定中斷優先級(低到高) Polity_0,Polity_1,Polity_2,Polity_3
        PWMx_InitStructure.PWM4_SetPolity  = Polity_0;                        //指定中斷優先級(低到高) 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;                                                                //死區發生器設置, 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;                                //使能計數器, 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);






作者: man1234567    時間: 2021-5-26 09:28
STC網站或工具中找個程例就可以。
作者: 紅燒魚頭    時間: 2022-8-4 16:37
STC8G1K08一個PWM有兩個引腳可以輸出,但是怎么選擇哪一個引腳怎么設置呢?文檔里有嗎?
作者: coody_sz    時間: 2022-8-4 17:49
紅燒魚頭 發表于 2022-8-4 16:37
STC8G1K08一個PWM有兩個引腳可以輸出,但是怎么選擇哪一個引腳怎么設置呢?文檔里有嗎?

手冊第3章“功能腳切換”
作者: coody_sz    時間: 2022-8-4 17:51
樓主,PWM輸出的IO有沒有設置為準雙向口或推挽輸出?
作者: wulin    時間: 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時鐘為系統時鐘
        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);
}
作者: 2314942018@qq.c    時間: 2022-9-8 10:07
最初接MOS管,發現沒有輸出,量了一下輸出電壓1.15v,換成三極管后正常輸出,就是頻率不能調低了嗎。
作者: coody_sz    時間: 2022-9-8 15:55
MOS管輸入電容較大,PWM頻率高時,由于IO有內阻,則等效RC濾波了。
作者: XCYYLX    時間: 2022-9-8 19:37
有沖突應該是,會有問題的




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产精品一区一区 | 亚洲欧洲色视频 | 国产精品亚洲二区 | 国产一区久久久 | 亚洲成av | 久久99精品久久 | 亚洲97| 在线观看中文字幕av | 中文字幕亚洲精品 | 黑人成人网 | 中文av字幕 | 久久久久国 | 九九热在线视频观看这里只有精品 | 激情欧美日韩一区二区 | 国产精品久久久久久久久免费高清 | 蜜桃av鲁一鲁一鲁一鲁 | 国产精品久久一区二区三区 | 一区观看 | 99精品视频一区二区三区 | 最新黄色在线观看 | 夜夜骚视频 | 亚洲精品一区二区三区四区高清 | 成年男女免费视频网站 | 久久成人精品视频 | 久草免费在线 | 免费久久网 | 嫩呦国产一区二区三区av | 国产精品看片 | 久久久久久久久综合 | 精品久久久久久久久久久下田 | 日韩精品在线观看一区二区 | 久久久久久久久久久久久久久久久久久久 | 精品久久久一区二区 | 国产精品伦一区二区三级视频 | 欧美日韩高清一区 | 国产乱码一二三区精品 | 国产伦一区二区三区四区 | 久久涩涩| 国产日韩精品久久 | 天天草狠狠干 | 欧洲精品一区 |