1732|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

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)
    {

    }
}

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表