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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

STC8G1K08單片機(jī)的PWM為什么沒(méi)有輸出,在定時(shí)器0定義IO取反,但是占空比不管用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:807182 發(fā)表于 2021-5-24 13:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
30黑幣
/************************ 定時(shí)器配置 ****************************/
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)先級(jí)(低到高) Polity_0,Polity_1,Polity_2,Polity_3
        TIM_InitStructure.TIM_Interrupt = ENABLE;                                        //中斷是否允許,   ENABLE或DISABLE
        TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T;                //指定時(shí)鐘源,     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;                                        //是否初始化后啟動(dòng)定時(shí)器, 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)先級(jí)(低到高) Polity_0,Polity_1,Polity_2,Polity_3
        PWMx_InitStructure.PWM2_SetPolity  = Polity_0;                        //指定中斷優(yōu)先級(jí)(低到高) Polity_0,Polity_1,Polity_2,Polity_3
        PWMx_InitStructure.PWM3_SetPolity  = Polity_0;                        //指定中斷優(yōu)先級(jí)(低到高) Polity_0,Polity_1,Polity_2,Polity_3
        PWMx_InitStructure.PWM4_SetPolity  = Polity_0;                        //指定中斷優(yōu)先級(jí)(低到高) Polity_0,Polity_1,Polity_2,Polity_3
        
        PWMx_InitStructure.PWM_Period   = 1024;                                                        //周期時(shí)間,   0~65535
        PWMx_InitStructure.PWM1_Duty    = PWMA_Duty.PWM1_Duty;        //PWM1占空比時(shí)間, 0~Period
        PWMx_InitStructure.PWM2_Duty    = PWMA_Duty.PWM2_Duty;        //PWM2占空比時(shí)間, 0~Period
        PWMx_InitStructure.PWM3_Duty    = PWMA_Duty.PWM3_Duty;        //PWM3占空比時(shí)間, 0~Period
        PWMx_InitStructure.PWM4_Duty    = PWMA_Duty.PWM4_Duty;        //PWM4占空比時(shí)間, 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;                                //開(kāi)啟PWM1P輸入捕獲/比較輸出,  ENABLE,DISABLE
        PWMx_InitStructure.PWM_CC1NEnable  = ENABLE;                                //開(kāi)啟PWM1N輸入捕獲/比較輸出,  ENABLE,DISABLE
        PWMx_InitStructure.PWM_CC2Enable   = ENABLE;                                //開(kāi)啟PWM2P輸入捕獲/比較輸出,  ENABLE,DISABLE
        PWMx_InitStructure.PWM_CC2NEnable  = ENABLE;                                //開(kāi)啟PWM2N輸入捕獲/比較輸出,  ENABLE,DISABLE
        PWMx_InitStructure.PWM_CC3Enable   = ENABLE;                                //開(kāi)啟PWM3P輸入捕獲/比較輸出,  ENABLE,DISABLE
        PWMx_InitStructure.PWM_CC3NEnable  = ENABLE;                                //開(kāi)啟PWM3N輸入捕獲/比較輸出,  ENABLE,DISABLE
        PWMx_InitStructure.PWM_CC4Enable   = ENABLE;                                //開(kāi)啟PWM4P輸入捕獲/比較輸出,  ENABLE,DISABLE
        PWMx_InitStructure.PWM_CC4NEnable  = ENABLE;                                //開(kāi)啟PWM4N輸入捕獲/比較輸出,  ENABLE,DISABLE
        
        PWMx_InitStructure.PWM_MainOutEnable= ENABLE;                                //主輸出使能, ENABLE,DISABLE
        PWMx_InitStructure.PWM_CEN_Enable   = ENABLE;                                //使能計(jì)數(shù)器, ENABLE,DISABLE
        PWM_Configuration(PWMA, &PWMx_InitStructure);                                //初始化PWM,  PWMA,PWMB
}







定時(shí)器中斷里面是這樣寫的

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ù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

手冊(cè)第3章“功能腳切換”
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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時(shí)鐘為系統(tǒng)時(shí)鐘
        CL = 0x00;
        CH = 0x00;
       
        CCAPM0 = 0x42;         //PCA模塊0為PWM工作模式
        PCA_PWM0 = 0x00;       //PCA模塊0輸出8位PWM     
        CCAP0H=CCAP0L=0x80;    //PWM占空比為50%
        //默認(rèn)P1.1輸出PWM,改變CCAP0H值即改變占空比(0xff~0x00=0%~100%)
        while (1);
}
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99在线免费观看视频 | 欧美中文字幕一区二区 | 日韩欧美在线精品 | 亚洲精品久久久久久宅男 | 亚州春色| 日韩中文一区二区三区 | 久久久www成人免费精品 | 99福利视频 | 欧美成视频| 日韩免费一区 | 国产一级片一区二区 | 国产一区三区视频 | 午夜三级在线观看 | 久久精品无码一区二区三区 | 久久精品视频免费看 | 精品国产一区二区三区免费 | 中文字幕国 | 伊人伊人伊人 | 亚洲精品一区二区在线观看 | 一区二区三区亚洲 | 午夜影院网站 | 做a网站 | 欧美日韩综合一区 | 特一级黄色毛片 | 国产在线永久免费 | 日韩欧美精品在线 | 国产综合久久 | 91麻豆精品国产91久久久更新资源速度超快 | 日本天天操| 国产精品久久久久久婷婷天堂 | 天天操网| 国产免费av在线 | 国产免费一区二区 | 在线视频一区二区三区 | 91精品国产91久久久久久吃药 | 在线视频成人 | 欧美日本在线 | 国产精品黄色 | 不卡的av电影 | 久久久久久亚洲精品 | 国产色|