MSP432E401Y单片机智能小车测速功能

 * MSP432E401Y
 * Description:本函数实现定时和测速功能  
 * 引脚:PD0->编码器输入信号
 *        
 * Author: Robin.J
***************************************************************************/

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

/* Standard Includes */
#include <common.h>

uint32_t count = 0;
//uint32_t count1 = 0;
//uint32_t count2 = 0;

uint32_t CNT1 = 0;
uint32_t CNT2 = 0;
int speed = 0;
uint32_t time1 = 0;

void TIMER2A_IRQHandler(void)
{
    uint32_t getTimerInterrupt;

    count++;//脉冲计数,高电平触发
//    count1 = MAP_TimerValueGet(TIMER2_BASE,TIMER_B);
//    count2 = MAP_TimerLoadGet(TIMER2_BASE,TIMER_B);   
    /* Get timer interrupt status  and clear the same */
    getTimerInterrupt = MAP_TimerIntStatus(TIMER2_BASE, true);
    MAP_TimerIntClear(TIMER2_BASE, getTimerInterrupt);
}

void TIMER1A_IRQHandler(void)
{
    uint32_t getTimerInterrupt;

//    CNT1 = count;
//    CNT2 = CNT1;
//    speed = ((CNT1 - CNT2)/506) * 6000;
//    count = 0;

    time1++;//计时,每10ms增1
    if(time1 == 10){  
      CNT1 = count;
    }if(time1 == 20){

      CNT2 = count;
      //count1 = CNT2 -  CNT1;
      speed = (int)(((CNT2 - CNT1)/506.0) * 600);
      //count = 0;
      time1 = 0;
      count = 0;
    }

//    s_r = speed;
//    pid_r = IncPIDCalc_r(s_r);
//    pid_r *= 0.01;
//    pwm_pidr += pid_r;
//    if(pwm_pidr > 0.99){
//      
//      pwm_pidr = 0.99;
//      
//    }
//    
//    PWM_init(pwm_pidl,0.8);   
    /* Get timer interrupt status  and clear the same */
    getTimerInterrupt = MAP_TimerIntStatus(TIMER1_BASE, true);
    MAP_TimerIntClear(TIMER1_BASE, getTimerInterrupt);

}


void GPT_init(void)
{

    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);

        while(!(SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOA)))
    {
    }

    MAP_GPIOPinConfigure(GPIO_PA4_T2CCP0);
    MAP_GPIOPinTypeTimer(GPIO_PORTA_BASE, GPIO_PIN_4);
    MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER2);
    while(!(SysCtlPeripheralReady(SYSCTL_PERIPH_TIMER2)))
    {
    }

     MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1);
    while(!(SysCtlPeripheralReady(SYSCTL_PERIPH_TIMER1)))
    {
    }

    MAP_TimerConfigure(TIMER2_BASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_CAP_TIME_UP);
    MAP_TimerIntEnable(TIMER2_BASE, TIMER_CAPA_EVENT);
    MAP_TimerControlEvent(TIMER2_BASE, TIMER_A, TIMER_EVENT_POS_EDGE);


    MAP_TimerConfigure(TIMER1_BASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_PERIODIC);
    MAP_TimerIntEnable(TIMER1_BASE, TIMER_TIMA_TIMEOUT);

    /* Since the 16-bit timer can count only 65536 value, we use the pre
     * scaler of 256 to divide down the count rate by 256. Thus the actual
     * count load is16e6/256 = 62500. Now when to count at 0.1 sec the
     * load value in the timer would be 62500 * 0.1 =6250. */
    MAP_TimerPrescaleSet(TIMER1_BASE, TIMER_A, 255);
    MAP_TimerLoadSet(TIMER1_BASE, TIMER_A, 625);//10ms
    /* Enable Timer Interrupt */
    MAP_IntEnable(INT_TIMER2A);

    MAP_IntEnable(INT_TIMER1A);

    /* Enable the timer count */
    MAP_TimerEnable(TIMER2_BASE, TIMER_A);

    MAP_TimerEnable(TIMER1_BASE, TIMER_A);


}
/******************* (C) COPYRIGHT 2018 DY EleTe *****END OF FILE************/
  • 8
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: MSP432E401Y是一款高性能的低功耗微控制器,适用于各种嵌入式应用。学习MSP432E401Y可以使我们了解到如何开发和设计各种应用程序。 首先,我们可以学习MSP432E401Y的架构和硬件功能。该微控制器具有强大的处理能力和多种接口,包括串口、SPI、I2C和GPIO,可以与其他外部设备进行通信。此外,它还具有LCD控制器和触摸屏接口,方便我们与用户界面进行交互。 其次,我们可以学习如何使用MSP432E401Y进行编程。它支持多种编程语言,如C和汇编语言,并提供了丰富的软件开发工具和库,如代码编辑器、编译器和调试器。通过学习如何编写代码并调试程序,我们可以实现各种功能,如控制外部设备、处理数据和实现算法。 另外,学习MSP432E401Y还可以了解到如何进行电源管理和低功耗设计。它具有多种节能模式,可以根据应用需求进行灵活配置,从而延长电池寿命和降低功耗。此外,它还支持外部功耗管理接口,可以与其他电源管理器件进行通信,实现更高效的功耗管理。 最后,通过学习MSP432E401Y的应用案例和开发方案,我们可以掌握如何将它应用于实际项目中。无论是物联网、智能家居还是工业自动化,MSP432E401Y都可以为我们提供强大且可靠的解决方案。 总之,学习MSP432E401Y可以让我们掌握嵌入式系统设计和开发领域的知识和技能,为我们未来的职业发展和创新提供了基础。 ### 回答2: MSP432E401Y是一款现代微控制器,由德州仪器(Texas Instruments)公司设计和生产。它基于Cortex-M4内核,并具备低功耗特性。那么,如何进行MSP432E401Y的学习呢? 首先,要深入了解MSP432E401Y的硬件特性和技术规格。可以查阅官方文档和技术手册,并关注官方社区和论坛,以便获取更多有关该微控制器的信息。 其次,熟悉MSP432E401Y的软件开发环境。Texas Instruments提供了MSP432软件开发工具包(SDK)和集成开发环境(IDE)。学习使用这些工具,编写、调试和测试MSP432E401Y的应用程序。可以通过阅读相关文档和教程,动手实践来提高自己的技能。 与此同时,可以尝试各种不同的实际应用场景。可以选择一些简单的项目,并逐步增加复杂度。通过实践深入了解如何使用MSP432E401Y来解决不同类型的问题。 此外,参与社区和论坛活动也是学习MSP432E401Y的好方式。与其他开发者分享经验和知识,提出问题并讨论解决方案。 最后,不断学习并保持热情。MSP432E401Y是一款功能强大且灵活的微控制器,但要掌握它需要持续的学习和实践。通过不断挑战自己,研究新的应用和技术,可以不断提升自己的技能水平。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值