⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm_test.c

📁 16位单片机dsPIC30F4013的PWM初始化及起的飞行控制系统中的应用
💻 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 + -