📄 pwm_driver.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 + -