MSP432E401Y电机编码器QEI模块

/* DriverLib Includes */
#include <ti/devices/msp432e4/driverlib/driverlib.h>

/* Standard Includes */
#include <stdint.h>
#include <stdio.h>
#include <stdbool.h>

unsigned long  COUNT = 0;
unsigned long  POS = 0;
int  s;
int d;



//********************************************************************
//QEI0初始化

int
QEIInit (void)
{
    QEIConfigure(QEI0_BASE,(QEI_CONFIG_CAPTURE_A_B |QEI_CONFIG_NO_RESET|
    QEI_CONFIG_QUADRATURE|QEI_CONFIG_NO_SWAP),10000000);//使用A,B通道共4个边沿计算位置

   /* GPIOPadConfigSet(GPIO_PORTL_BASE, GPIO_PIN_1,
    GPIO_STRENGTH_4MA,
    GPIO_PIN_TYPE_STD);

    GPIOPadConfigSet(GPIO_PORTL_BASE, GPIO_PIN_2,
    GPIO_STRENGTH_4MA,
    GPIO_PIN_TYPE_STD);

    GPIOPadConfigSet(GPIO_PORTL_BASE, GPIO_PIN_3,
    GPIO_STRENGTH_4MA,
    GPIO_PIN_TYPE_STD);
  */
    GPIOPinTypeQEI(GPIO_PORTL_BASE,GPIO_PIN_1|GPIO_PIN_2);//配置PL1,PL2为PhA1,PhB1
    QEIVelocityConfigure(QEI0_BASE, QEI_VELDIV_1, 120000000/100);//10ms

    //使能速度计算,使能QEI
    QEIVelocityEnable(QEI0_BASE);
    QEIEnable(QEI0_BASE);

    //速度计时器计时完成时触发中断
    QEIIntEnable(QEI0_BASE,QEI_INTTIMER);
    IntEnable(INT_QEI0);


    return(0); 
}

void QEI0_IRQHandler(void)
{


  QEIIntClear(QEI0_BASE, QEI_INTTIMER);
  POS = QEIPositionGet(QEI0_BASE);
  d = QEIDirectionGet(QEI0_BASE);

    COUNT = QEIVelocityGet(QEI0_BASE);
    s = (COUNT*6000)/2024;
    printf("The Speed is %d .Velocity is %d.Direction is %d.\n",s,COUNT /4,d);
    COUNT = 0;




}

 int main(void)
{

    /* Configure the system clock for 120 MHz */
    MAP_SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN |
                                          SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480),
                                          120000000);

    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_QEI0);//使能QEI0外设
    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOL);/*enable L port*/
    MAP_IntEnable(INT_GPIOL);

    GPIOPinConfigure(GPIO_PL1_PHA0);
    GPIOPinConfigure(GPIO_PL2_PHB0);



    QEIEnable(QEI0_BASE);//使能正交编码器QEI0

    QEIInit();
    while(1)
    {

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值