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

📄 pwm_driver.c

📁 交流异步电机直接转矩控制程序
💻 C
字号:
/****************************************************************************
* 文 件 名:PWM_Driver.c
* 版    本: V1.0
* 连    接:
* 功    能:PWM驱动函数os版本,使用FIQ中断

*   作者:黄振升
*   日期:2007/8/20
*---------------历史版本信息-------------------------------------------------
*  修 改 人: 黄振升
*  版    本: 
*  日   期: 2007/8/20
*  描   述:
****************************************************************************/
/***********************************************************************
							包含文件
***********************************************************************/

#include "config.h"

#define  INIT_FREQUENCY  3000      				//原始PWM拼率值
#define  INIT_DUTY	 100								//原始占空比
/***********************************************************************
* 名    称:void IRQ_SPS()
* 功    能:PWM中断服务程序
* 入口参数:
* 出口参数:
* 说明    :试用
***********************************************************************/
void IRQ_SPS(void)
{
	//while(0);
	PWMIR = 0x01;
}
/***********************************************************************
* 名    称:void PWM_Init(void)
* 功    能:PWM初始化函数
* 入口参数:
* 出口参数:
* 说明    :使能一个通道单边沿输出
***********************************************************************/
void PWM_Init(void)
{
		/***********************************************************************
							通用部分
		***********************************************************************/	
		PINSEL0 = (PINSEL0&~(0x3F<<14))|(0X2A<<14);	//使用PWM2,4,6
		PWMPR = 0x00;								//不分频
		PWMMCR = 0x03;								//PWMMR0与PWMTC匹配复位PWMTC,PWMMR1与PWMTC匹配产生中断
		
		/***********************************************************************
							差别部分
		***********************************************************************/	
		PWMPCR |= 1<<10;							//PWM2单边沿输出
		PWMMR0 = Fpclk /INIT_FREQUENCY;				//频率初值为10000
		PWMMR2 = (uint32)(PWMMR0 /INIT_DUTY);		//占空比为0.01
		PWMLER = 0x7f;								//匹配输出
		/***********************************************************************
								中断初始化
		***********************************************************************/
		PWMIR = 0x01;
		VICIntSelect = 1 << 0x08;
		VICIntEnable = 1 << 0x08;						//使能PWM中断
		
		
		/***********************************************************************
							通用部分
		***********************************************************************/	
		PWMTCR = 0x02;								//复位PWMTC
		PWMTCR = 0x09;								//启动PWM输出
}
/***********************************************************************
* 名    称: void FC_Stop(void )
* 功    能:变频器停止
* 入口参数:无
* 出口参数: 无
* 说    明: 无
***********************************************************************/
void PWM_Stop(void)
{
	
	PINSEL0 = (PINSEL0&~(0x3F<<14));	//变回GPIO
	IO0DIR = IO0DIR|(3<<7);
	IO0CLR = IO0CLR |(3<<7);
	IO0SET = IO0SET |(1<<21);
	PWMMCR = 0;									
	PWMPCR = 0;
	PWMTCR = 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -