?? simplepwmp.c
字號:
/*************************************************
** 功能描述: 帶故障保護輸入引腳的PWM,空比49.27%**
*************************************************/
#include "p30f6014.h"
//系統初始化子程序,放在程序首部
void InitializeSys()
{
INTCON1 = 0x0000; //關中斷
INTCON2 = 0x0000;
IEC0 = 0x0000; //IECx中斷禁止
IEC1 = 0x0000;
IEC2 = 0x0000;
}
//輸出比較模塊初始化子程序
void ConfigOC8()
{
OC4CON = 0x0000; //Timer2是比較4的時鐘源
T2CON = 0x0000; //預分頻1,16位定時器,使用內部時鐘
TMR2 = 0x0044;
OC8RS = 0x0022; //賦值OC8R值為0x0022
PR2 = 0x0044; //設置PWM周期0x0044
IFS2bits.OC8IF = 0; //清除輸出比較中斷標志位
IEC2bits.OC8IE = 1; //使能輸出8比較中斷
IPC8bits.OC8IP = 6; //設置輸出比較8中斷優先級7
IFS0bits.T2IF = 0; //清除定時器2中斷標志位
IPC1bits.T2IP = 7; //設置定時器2中斷優先級7
IEC0bits.T2IE = 1; //使能Timer2定時器中斷
}
//中斷子程序:定時器2中斷
void __attribute__((__interrupt__)) _T2Interrupt()
{
IFS0bits.T2IF = 0; //清除定時器2中斷標志位
}
//中斷子程序:輸出比較8中斷,OCFA腳檢測到邏輯“0”,OC8IF置位,
//進入中斷服務程序
void __attribute__((__interrupt__)) _OC8Interrupt()
{
IFS2bits.OC8IF = 0; //清除輸出比較4中斷標志位
OC8CONbits.OCM = 6; //重新寫入OCM <2:0>,重新使能PWM模式
}
main()
{
InitializeSys();
ConfigOC8();
T2CONbits.TON = 1; //打開定時器2
OC8CONbits.OCM = 7; //OC8處于帶故障保護輸入引腳的PWM模式,當OCFB引腳檢測到低電平
//PWM通道被關閉。
while(1)
{
; //可編寫其它程序
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -