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

2019-11-06来源: eefocus关键字:MSP432E401Y  单片机  智能小车  测速功能

 * MSP432E401Y

 * Description:本函数实现定时和测速功能  

 * 引脚:PD0->编码器输入信号

 *        

 * Author: Robin.J

***************************************************************************/


/* DriverLib Includes */

#include


/* Standard Includes */

#include


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************/


关键字:MSP432E401Y  单片机  智能小车  测速功能 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479131.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:MSP432学习笔记:IAR的环境配置(官方demo程序的测试)
下一篇:MSP432时钟系统CS

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

怎么用keil5实现MSP432E401Y点灯
**第一步**先去官网下载芯片包在keil这个序列中选择TI公司相对应的芯片包下载后在pack installer->import->I agree ->finish出现绿色图标,就代表成功。第二步下载模板模板链接打开工程,选择正确的芯片出现下载失败或者没法编译时选择正确的编译器版本插好线接下来Debug的配置是选择正确的芯片flash然后点击编译下载就好了第三步下面两个网站可以下载资料开发板资料芯片资料从开发板原理图可以知道LED灯的引脚接下来是简单流水灯
发表于 2019-11-06
怎么用keil5实现MSP432E401Y点灯
MSP432E401Y-PWM的生成和占空比的调整
 * MSP432E4 Empty Project * * Description: An empty project that uses DriverLib * *                MSP432E401Y *             ------------------ *         /||          
发表于 2019-11-06
AVR单片机测温基于DS18B20
#include<iom16v.h>#include<macros.h>#include<delay.h>#define uint unsigned int#define uchar unsigned char#define dula_set PORTA |=BIT(3) //数码管段选#define dula_clr PORTA &=~BIT(3)#define wale_set PORTA |=BIT(4)//数码管位选#define wale_clr PORTA &=~BIT(4) #define DQ_IN DDRA&=~BIT(5)#define DQ_
发表于 2019-11-20
AVR单片机控制继电器
#include "macros.h"#define uchar unsigned char#define uint  unsigned intvoid delay_ms(uchar i){uchar a,b;for(a=1;a<i;a++)   for(b=1;b<141;b++)   {;}}void main(void){DDRA=0X80;PORTA=0X80;DDRB=0XFF;PORTB=0XFF;DDRC=0X01;PORTC=0X01;DDRD=0X00;PORTD=0XFF;while(1)  {&nbs
发表于 2019-11-20
AVR单片机控制继电器
PIC16F877A单片机的PWM输出程序
模块为PWM 工作方式,且其工作循环PR2=0XFF;       //设置PWM 的工作周期TRISC=0XFB;      //设置CCP1 引脚为输出方式while(1){  k++;  CCPR1L=k;  delay();  if(k>253)k=1;} }////////////////////////////////////////////////////////////////////////////////////////////下面的是AVR单片机ATMEGA16的PWM信号输出程序GCC编译
发表于 2019-11-20
LCD1602在PIC单片机中的使用程序
#include<pic.h>__CONFIG(0x1832);        //芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡#define rs RA1#define rw RA2#define e  RA3const char web[ ]={' ','W','W','W','.','P','I','C','1','6','.','C',&#
发表于 2019-11-20
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved