?? pwm_test.c
字號:
#include<p30f4013.h>
void pwm_initial(int p)
{
//********初始化系統********//
//**************************//
INTCON1=0x0000; //使能中斷嵌套,禁止陷阱,
INTCON2=0x0000; //使用默認中斷向量表,外部中斷4,3,2,1,0都采用正邊沿處中斷
IEC0=0x0000;
IEC1=0x0000;
IEC2=0x0000; //禁止所有中斷請求
//****初始化輸出比較模塊***//
//**************************//
OC1CON=0x0000; //輸出比較1器將在CPU空閑模式下繼續工作,未產生PWM錯誤條件,使用Timer2為比較器1的時鐘源,輸出比較通道禁止
T2CON=0x0010; //停止16位定時器,在空閑模式定時器繼續工作,禁止定時器門控時間累加,Timer2預分頻設置為1:8,Timer2和Timer3為獨立的16位定時器,選用內部時鐘源
TMR2=0x0000; //設置timer2的初值,PWM周期為2ms,計算得到PR2的值為04E0H
OC1RS=P; //打滿舵,占空比為OC1RS的值,初始化時為0x0270,對應舵機的初始位置
PR2=0x04E0; //設置PWM周期=2ms
IFS0bits.OC1IF=0; //清除輸出比較1中斷標志
IEC0bits.OC1IE=1; //不使能輸出比較1中斷
IPC0bits.OC1IP=6; //設置輸出比較1中斷優先級為6
IFS0bits.T2IF=0; //清除定時器2的中斷標志
IPC1bits.T2IP=7; //設置定時器2的中斷優先級為7
IEC0bits.T2IE=1; //使能定時器2中斷
}
void __attribute__((__interrupt__)) _T2Interrupt()
{
IFS0bits.T2IF=0; //清除定時器中斷標志
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -