zl_pwm.c

来自「2812设计源码 ADC 模块编程必须首先设置时钟」· C语言 代码 · 共 26 行

C
26
字号
   #include "DSP28_Device.h"

   void pwm(void){
   // EVA 配置 T1PWM, PWM1~PWM6
   //  (1)初始化定时器
   //  初始化 EVA Timer1
    EvaRegs.EXTCON.bit.INDCOE = 1;  //单独使能比较输出模式
    EvaRegs.ACTRA.all = 0x0aaa;     //空间矢量不动作
    EvaRegs.DBTCONA.all = 0x08ec;   //死区定时器启动
    EvaRegs.CMPR1 = 50;
    EvaRegs.CMPR2 = 100;
    EvaRegs.CMPR3 = 200;
    EvaRegs.COMCONA.all = 0x0A6E0;   //空间向量禁止,全比较使能,陷阱禁止

    EvaRegs.EVAIMRA.bit.T1UFINT = 1; //T1下溢中断使能
    EvaRegs.EVAIFRA.bit.T1UFINT = 1; //清零定时器1下溢中断位,增减计数时每2*102.4=204.8us中断一次
    EvaRegs.GPTCONA.bit.T1TOADC = 1; //周期寄存器下溢启动AD
    
    EvaRegs.EXTCON.bit.INDCOE = 1;  //单独使能比较输出模式
    EvaRegs.GPTCONA.all = 0x0012;   //GP定时器1比较输出低有效
    EvaRegs.T1PR = 0x0100;      // 定时周期为5.12us*(T1PR+1)=5.12*20=102.4us
    EvaRegs.T1CMPR = 0x0010;    // GP定时器的比较寄存器
    EvaRegs.T1CNT = 0x0000;     // 定时器初值
    EvaRegs.T1CON.all = 0x0F42;//连续增减计数,128分频,使能比较,打开定时器,
                               //128分频后得到195310Hz,即周期5.12us
    }

⌨️ 快捷键说明

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