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

📄 pwm.c

📁 这是一个车用电机调速器的AVR单片机的整套C语言的源代码
💻 C
字号:
/********************************************************************************************************
* 文 件 名 : PWM.c
* 程 序 员 : (CaiJie) hnclcj@gmail.com
*                             (c) Copyright 2007-2007, CaiJie
*                                  All Rights Reserved
* 创建日期 : 2007-10-15
* 说    明 : 
* 修改日期 :
* 修改版本 :
* 说    明 :
********************************************************************************************************/



#define  PWM_GLOBALS
#include "includes.h"

#if PWM_MODULES_EN > 0

/********************************************************************************************************
* 功 能 : 初始PWM
* 入 口 : 无
* 出 口 : 无
* 说 明 : 
*         1) 快速PWM模式,OCR1A为TOP
*         2) 比较匹配清零,在TOP时置位
*         3) 时钟1分频
*         4) 关T1匹配中断,
********************************************************************************************************/

void PWMInit (void)
{
    if(ESCBuf.Dm.PWMMode == 0){
        OCR1A = 999;
        ESCBuf.Dm.PWMTop = 999;
    }else{
        OCR1A = 499;
        ESCBuf.Dm.PWMTop = 499;
    }
    PWMSetDucy(999,0);

    TCCR1A = MASKBIT( TCCR1A,BIT(COM1A1)|BIT(COM1A0)|BIT(COM1B1)|BIT(COM1B0),
             BIT(WGM11)|BIT(WGM10));                                          // OCR1A为TOP 先清多个位再置多个位
    TCCR1B = MASKBIT( TCCR1B,BIT(CS12)|BIT(CS11)|BIT(CS10),
             BIT(CS10)|BIT(WGM13)|BIT(WGM12));
    CLRMASK( TIMSK1, BIT(OCIE1B)|BIT(OCIE1A));                                // 关匹配中断,溢出中断,输入捕获中断

    PWMStop();
}


/********************************************************************************************************
* 功 能 : 打开PWM输出
* 入 口 : 无
* 出 口 : 无
********************************************************************************************************/

void PWMOpen (void)
{
    SETMASK( TCCR1A, (BIT(COM1B0)|BIT(COM1B1)));
}

/**************************************************************************************************
* 功    能 : 停止PWM
* 入口参数 : 无
* 出口参数 : 无
* 说    明 :
********************************************************************************************************/

void PWMStop (void)
{
    CLRMASK( TCCR1A, (BIT(COM1B0)|BIT(COM1B1)));
}


/**************************************************************************************************
* 功    能 : 设置PWM占空比
* 入口参数 : 无
* 出口参数 : 无
* 说    明 :
********************************************************************************************************/

void PWMSetDucy (INT16U Top, INT16U DutyCycle)
{   
    DutyCycle = (INT16U)(((INT32U)DutyCycle*OCR1A)/Top);
    OCR1B = DutyCycle;
}

#endif
/********************************************************************************************************
*                                             End of File
********************************************************************************************************/


⌨️ 快捷键说明

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