?? pwm_driver.c
字號:
/****************************************************************************
* 文 件 名:PWM_Driver.c
* 版 本: V1.0
* 連 接:
* 功 能:PWM驅動函數
* 作者:黃振升
* 日期:2007/8/20
*---------------歷史版本信息-------------------------------------------------
* 修 改 人: 黃振升
* 版 本:
* 日 期: 2007/8/20
* 描 述:
****************************************************************************/
/***********************************************************************
包含文件
***********************************************************************/
#include "config.h"
#define INIT_FREQUENCY 30000 //原始PWM拼率值
#define INIT_DUTY 100 //原始占空比
/***********************************************************************
* 名 稱:void PWM_Init_1(void)
* 功 能:PWM初始化函數1
* 入口參數:
* 出口參數:
* 說明 :使能一個通道單邊沿輸出
***********************************************************************/
void PWM_Init_1(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; //匹配輸出
/***********************************************************************
中斷初始化
***********************************************************************/
IRQEnable();
VICIntSelect = 0x00; //所有設成IRQ中斷
VICVectCntl1 = (0x20|0x08); //設成PWM中斷
//VICVectAddr1 = (uint32)IRQ_SPS ; //中斷服務程序
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 + -