久久久久久久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
|
国产精品看片
|
久久久久久久久综合
|
精品久久久久久久久久久下田
|
日韩精品在线观看一区二区
|
久久久久久久久久久久久久久久久久久久
|
精品久久久一区二区
|
国产精品伦一区二区三级视频
|
欧美日韩高清一区
|
国产乱码一二三区精品
|
国产伦一区二区三区四区
|
久久涩涩
|
国产日韩精品久久
|
天天草狠狠干
|
欧洲精品一区
|