|
#include "P33ep32mc202.h"
/** CONFIGURATION **************************************************/
_FGS(0xff);//写保护关闭
_FOSCSEL(0xfb);//双速振荡器启动使能 PWM锁定 带PLL的主振荡器
_FOSC(0xdd);//禁止时钟切换 外设引脚多次配置 SOC2数字IO XT晶振模式
_FWDT(0x7f);//看门狗禁止
_FPOR(0xff);//I2C1被映射到SAD1/SCL1引脚 欠压复位_
_FICD(0x03);//禁止JTAG 通过PGEC1 PGED1通讯
//振荡器配置
void System_Colck(void)
{
//产生Fosc = 140MHz 70MIPS
CLKDIVbits.PLLPRE = 0;//N1 = 2 7.3728MHz/2= 2MHz
PLLFBDbits.PLLDIV = 74;//M = 76 3.6864*76 = 279.68MHz
CLKDIVbits.PLLPOST = 0;//N2 = 2 279.68/2 = 139.84MHz
while (OSCCONbits.COSC!= 0b011)
while (OSCCONbits.LOCK!= 1) {};//PLL 处于锁定状态
}
void System_Init(void)
{
TRISB &= ~0xfc00;//RB10-RB15 清零
IOCON1 = 0x0000;//GPIO 模块控制 PWMxH PWMxL引脚
}
void Timer3_Timing_Init(void)//定时器模式
{
T3CONbits.TON = 0;//禁止16位Timer3
T3CONbits.TCS = 0;//内部时钟Fosc/2
T3CONbits.TGATE = 0;//门控时间累加位 禁止
T3CONbits.TCKPS = 0x00;//输入时钟预分频比1:1
T3CONbits.TSIDL = 0;//空闲模式继续工作
T2CONbits.T32 = 0;//TMR2和TMR C类构成独立的16位定时器
TMR3 = 0x0000;//初始值
PR3 = 5535;//周期值
IPC2bits.T3IP = 0x03; // 优先级1
IFS0bits.T3IF = 0; // Timer3中断标志状态位 清零
IEC0bits.T3IE = 1; // Timer3中断允许位 允许
T3CONbits.TON = 1;//启动使能16位Timer3
}
void OC1_Init(void)
{
RPOR4bits.RP43R = 0b010000;//RP43连接到输出比较 1 输出 OC1映射到RP引脚
RPOR4bits.RP42R = 0b010001;//RP43连接到输出比较 1 输出
OC1CON1bits.OCM = 0b000;//禁止输出比较
OC1CON1bits.OCSIDL = 0;//空闲模式继续
OC1CON1bits.OCTSEL = 0b001;//比较Timer3的时钟源
OC1R = 0;//输出比较寄存器
OC1RS =2520;
OC2CON1bits.OCM = 0b000;//禁止输出比较
OC2CON1bits.OCSIDL = 0;//空闲模式继续
OC2CON1bits.OCTSEL = 0b001;//比较Timer3的时钟源
OC2R = 0;//输出比较寄存器
OC2RS = 5535;
IPC0bits.OC1IP = 0x02;// 中断优先级2
IFS0bits.OC1IF = 0;// 清中断
IEC0bits.OC1IE = 1;// 允许中断
IPC1bits.OC2IP = 0x01;// 中断优先级2
IFS0bits.OC2IF = 0;// 清中断
IEC0bits.OC2IE = 1;// 允许中断
OC1CON1bits.OCM = 0b101;//将OC1引脚初始化为低电平,在OCx引脚上产生连续输出脉冲
OC2CON1bits.OCM = 0b101;//将OC1引脚初始化为低电平,在OCx引脚上产生连续输出脉冲
}
int main()
{
System_Colck();
System_Init();
Timer3_Timing_Init();
OC1_Init();
while(1)
{
}
}
/* 定时器3中断*/
void __attribute__((__interrupt__, auto_psv)) _T3Interrupt(void)
{
int T;
IFS0bits.T3IF = 0; //清中断
T ++;
if( T == 1089)
{
T = 0;
_RB15 =~_RB15;
}
}
/********(C) COPYRIGHT 2015 TaobaoID:paifeng253625 *****END OF FILE********/
/* OC1中断*/
void __attribute__((__interrupt__, auto_psv)) _OC1Interrupt(void)
{
IFS0bits.OC1IF = 0;// 清中断
}
/* OC1中断*/
void __attribute__((__interrupt__, auto_psv)) _OC2Interrupt(void)
{
IFS0bits.OC2IF = 0;// 清中断
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|