zl_qepcap.c

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

C
33
字号
#include "DSP28_Device.h"

void qepcap(void){
	 //增量式编码器每转产生1024个脉冲,A,B接入QEP4,QEP5,Z接入CAP6
   //QEP正交编码器A,B
   //定时器2
   //初始化
   	EvaRegs.CAP3FIFO = 0x0000;
   	EvaRegs.CAP3FBOT = 0x0000;
   	EvaRegs.CAPFIFO.all = 0x0000;
    EvaRegs.T2PR = 0x0FFFF;       //  Timer2周期寄存器
    //EvaRegs.T2CMPR = 0x0000;     //  Timer2比较寄存器
    EvaRegs.T2CNT = 0x0000;      //  Timer2计数寄存器 转角信息存在此处
    EvaRegs.T2CON.all = 0x9870;  //  TMODE=定向增/减计数模式,禁止比较
    //EvaRegs.T2CON.TMODE(12-11) = 3, 定向增/减计数模式
    //EvaRegs.T2CON.TCLKS10(5-4) = 3; 时钟源选择正交脉冲编码电路,对输入四倍频
    EvaRegs.CAPCON.bit.CAPQEPN = 0;   //禁止捕获单元1和2
    
    EvaRegs.EVAIMRC.bit.CAP3INT = 1;
    EvaRegs.EVAIFRC.bit.CAP3INT = 1;


    //捕获
    EvaRegs.CAPCON.bit.CAP3EN   = 1;   //允许捕获单元3
    EvaRegs.CAPCON.bit.CAP3TSEL = 0;   //捕捉单元3的定时器选择定时器2
    EvaRegs.CAPCON.bit.CAP3EDGE = 2;   //检测下降沿,记录

    EALLOW;
    GpioMuxRegs.GPAMUX.bit.CAP1Q1_GPIOA8   = 1; //使能CAP1引脚 A
    GpioMuxRegs.GPAMUX.bit.CAP2Q2_GPIOA9   = 1; //使能CAP2引脚 B
    GpioMuxRegs.GPAMUX.bit.CAP3QI1_GPIOA10 = 1; //使能CAP3引脚 Z
    EDIS;
  }

⌨️ 快捷键说明

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