精华内容
下载资源
问答
  • msp432e401y MDK keil5 开发所需要的驱动,另外附一个点灯程序
  • TI 的MSP432E401Y工程Keil5模板
  • 基于Keil5开发环境的TI-MSP432E401Y工程模板,其中包含了完整的官方库文件方便开发按需添加。
  • User'sGuide_MSP432E401Y_LainchPad,里面包含MSP432E401Y原理图及使用手册
  • MSP432E401Y代码

    2021-09-23 14:46:22
    E401Y做智能车的代码,在一个工程里,包含: 1、精确的延时函数(毫秒和微秒级别); 2、基于定时器的四路编码器脉冲捕获; 3、IIC读取陀螺仪(JY901S)的角度信息; 4、驱动OLED显示; 5、三个串口,包括打印字符...
  • 这个程序为什么下载不上?MSP432E401Y用keil5编程的教学视频也找不到
  • MSP432E401Y学习笔记(一)

    千次阅读 多人点赞 2019-07-03 13:14:55
    因参加2019年全国电子设计大赛,申请到一块MSP432E401Y开发板,今天开始学习如何使用,因为资料较少,自己也是摸索了很久才搭建好环境,今天就和大家分享一下,也记录一下自己的学习过程。 首先我们需要准备这套...

    因参加2019年全国电子设计大赛,申请到一块MSP432E401Y开发板,今天开始学习如何使用,因为资料较少,自己也是摸索了很久才搭建好环境,今天就和大家分享一下,也记录一下自己的学习过程。

        下载完成后,直接安装。安装完成后会生成这样两个文件夹.

    • CCS IDE的下载与安装

    下载地址:CCS IDE下载

    安装:路径可更改

    确保选择了SimpleLink MSP432低功耗+高性能MCU。可以根据需要选择其他处理器支持选项。

    要使用调试探针,默认情况下,MSP-EXP432E401Y Launchpad使用TI XDS调试探针。 

    通过检查帮助→检查更新下的更新,确保已安装MSP432工具链。

    最后重启CCS。到目前为止我们的开发环境已经搭建完成,接下来就是导入模板,看效果了。

    • 运行第一个例子

    通过CCS IDE导入

    • 打开CCS
    • 看到开始界面,点击Import CCS Projects
    • 在“导入CCS项目”对话框中选择“浏览”按钮,然后选择目录如下图所示:

    这里可以选择我们要使用的任何代码示例。在此示例中,选择了如图所示示例:

    点击Finish。

    • 选择目标配置

    双击MSP432E401Y.ccxml

    • 要在CCS中使用FreeRTOS,必须指定FreeRTOS安装的位置
    • 下载地址:FreeRTOS下载

    • 构建和下载

    插入启动板,单击CCS中的生成和下载图标。RTOS构建首次需要一点时间。

    现在已经将程序下载到板子上,点击如图所示图标,运行程序

    右边两个黄色箭头是两个按键,控制两个LED灯,GIF不制作了。

    欢迎大家批评与改正!

    展开全文
  • MSP432E401Y-PWM的生成和占空比的调整

    千次阅读 2018-05-21 15:35:05
    * MSP432E4 Empty Project * * Description: An empty project that uses DriverLib * * MSP432E401Y * ------------------ * /|\| | * | | ...
     * MSP432E4 Empty Project
     *
     * Description: An empty project that uses DriverLib
     *
     *                MSP432E401Y
     *             ------------------
     *         /|\|                  |
     *          | |                  |
     *          --|RST               |
     *            |                  |
     *            |             PF2  |--->25%PWM
     *            |             PF3  |--->75%PWM
     *            |                  |
     *            |                  |
     * Author: 
    *******************************************************************************/
    /* DriverLib Includes */
    #include <ti/devices/msp432e4/driverlib/driverlib.h>
    
    /* Standard Includes */
    #include <stdint.h>
    #include <stdbool.h>
    
    /* Global variable for system clock */
    uint32_t getSystemClock;
    
    /* PWM ISR */
    void PWM0_0_IRQHandler(void)
    {
        uint32_t getIntStatus;
    
        getIntStatus = MAP_PWMGenIntStatus(PWM0_BASE, PWM_GEN_1, true);
    
        MAP_PWMGenIntClear(PWM0_BASE, PWM_GEN_1, getIntStatus);
    
    }
    
    
    int main(void)
    {
    
       /* Configure the system clock for 16 MHz internal oscillator */
        getSystemClock = MAP_SysCtlClockFreqSet((SYSCTL_OSC_INT |
                                                 SYSCTL_USE_OSC), 16000000);
    
        /* The PWM peripheral must be enabled for use. */
        MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
        while(!(MAP_SysCtlPeripheralReady(SYSCTL_PERIPH_PWM0)));
    
        /* Set the PWM clock to the system clock. */
        MAP_PWMClockSet(PWM0_BASE,PWM_SYSCLK_DIV_1);
    
        /* Enable the clock to the GPIO Port F for PWM pins */
        MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
        while(!MAP_SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOF));
    
        MAP_GPIOPinConfigure(GPIO_PF2_M0PWM2);
        MAP_GPIOPinConfigure(GPIO_PF3_M0PWM3);
        MAP_GPIOPinTypePWM(GPIO_PORTF_BASE, (GPIO_PIN_2 | GPIO_PIN_3));
    
        /* Configure the PWM0 to count up/down without synchronization. */
        MAP_PWMGenConfigure(PWM0_BASE, PWM_GEN_1, PWM_GEN_MODE_UP_DOWN |
                            PWM_GEN_MODE_NO_SYNC);
    
        /* Set the PWM period to 250Hz.  To calculate the appropriate parameter
         * use the following equation: N = (1 / f) * SysClk.  Where N is the
         * function parameter, f is the desired frequency, and SysClk is the
         * system clock frequency.
         * In this case you get: (1 / 250Hz) * 16MHz = 64000 cycles.  Note that
         * the maximum period you can set is 2^16 - 1. */
        MAP_PWMGenPeriodSet(PWM0_BASE, PWM_GEN_1, 64000);
    
        /* Set PWM0 PF0 to a duty cycle of 25%.  You set the duty cycle as a
         * function of the period.  Since the period was set above, you can use the
         * PWMGenPeriodGet() function.  For this example the PWM will be high for
         * 25% of the time or 16000 clock cycles (64000 / 4). */
        MAP_PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2,
                         MAP_PWMGenPeriodGet(PWM0_BASE, PWM_GEN_1) / 4);
    
        /* Set PWM0 PF1 to a duty cycle of 75%.  You set the duty cycle as a
         * function of the period.  Since the period was set above, you can use the
         * PWMGenPeriodGet() function.  For this example the PWM will be high for
         * 7% of the time or 16000 clock cycles 3*(64000 / 4). */
        MAP_PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3,
                         MAP_PWMGenPeriodGet(PWM0_BASE, PWM_GEN_1) / 4);
    
        MAP_IntMasterEnable();
    
        /* This timer is in up-down mode.  Interrupts will occur when the
         * counter for this PWM counts to the load value (64000), when the
         * counter counts up to 64000/4 (PWM A Up), counts down to 64000/4
         * (PWM A Down), and counts to 0. */
        MAP_PWMGenIntTrigEnable(PWM0_BASE, PWM_GEN_1,
                                PWM_INT_CNT_ZERO | PWM_INT_CNT_LOAD |
                                PWM_INT_CNT_AU | PWM_INT_CNT_AD);
        MAP_IntEnable(INT_PWM0_1);
    
        MAP_PWMIntEnable(PWM0_BASE, PWM_INT_GEN_1);
    
        /* Enable the PWM0 Bit 0 (PF0) and Bit 1 (PF1) output signals. */
        MAP_PWMOutputState(PWM0_BASE, PWM_OUT_2_BIT | PWM_OUT_3_BIT, true);
    
        /* Enables the counter for a PWM generator block. */
        MAP_PWMGenEnable(PWM0_BASE, PWM_GEN_1);
    
        /* Loop forever while the PWM signals are generated. */
        while(1)
        {
    
        }
    }
    展开全文
  • 小型电路板尺寸为 4.95 英寸 × 3.45 英寸,采用具有集成以太网 PHY 和 MAC 的 MSP432E401Y MCU 2. MSP432E4 MCU 具有 120-MHz Arm Cortex-M4F CPU,1MB 闪存和 256kB SRAM 以及先进的加密加速器 3. 由反激式转换器...
  • MSP432E401Y单片机智能小车测速功能

    千次阅读 2018-06-19 17:10:20
    * MSP432E401Y * Description:本函数实现定时和测速功能 * 引脚:PD0-&gt;编码器输入信号 * * Author: Robin.J ***************************************************************************/ /* ...
     * 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************/
    展开全文
  • MSP432E401Y单片机智能小车PID调速代码

    千次阅读 2018-06-19 17:12:05
    * MSP432E401Y * Description:PID处理函数 * 引脚: * * Author: Robin.J ***************************************************************************/ #include &lt;PID.h&gt; #include "ti/...
     * MSP432E401Y
     * Description:PID处理函数
     * 引脚:
     *       
     * Author: Robin.J
    ***************************************************************************/
    #include <PID.h>
    #include "ti/devices/msp432e4/driverlib/driverlib.h"
    
    
    float iError_l , iIncpid_l; //当前误差
    float iError_r , iIncpid_r; //当前误差
    
    float variable_l;
    float variable_r;
    extern int ch_l,ch_r;
    //extern float ch;
    //PID初始化
    void IncPIDInit(void)
    {
        sptr->SetPoint_l    = 30.0; 
            sptr->SetPoint_r    = 30.0;         //设定值
    
        sptr->LastError_l = 0;      //前1次误差值
        sptr->PrevError_l = 0;      //前2次误差值
    
            sptr->LastError_r = 0;      //前1次误差值
        sptr->PrevError_r = 0;      //前2次误差值
    
        sptr->Proportion_r = 0.4;//0.5;//0.8;       //比例
        sptr->Integral_r     = 0.024;//0.026;//0.15;    //积分
        sptr->Derivative_r = 0.0;       //微分
    
            sptr->Proportion_l = 0.8;       //比例
        sptr->Integral_l     = 0.15;    //积分
        sptr->Derivative_l = 0.0;       //微分
    
            sptr->A_r = sptr->Proportion_r + sptr->Integral_r + sptr->Derivative_r;
            sptr->B_r = -(2*sptr->Derivative_r + sptr->Proportion_r);
            sptr->C_r = sptr->Derivative_r;
    
            sptr->A_l = sptr->Proportion_l + sptr->Integral_l + sptr->Derivative_l;
            sptr->B_l= -(2*sptr->Derivative_l + sptr->Proportion_l);
            sptr->C_l = sptr->Derivative_l;
    
        sptr->iError_l = 0;     //当前误差
            sptr->iError_r = 0;
    
        sptr->iIncpid_l=0;          //增量误差
            sptr->iIncpid_r=0;
    
            sptr->limit = 49;
    
    }
    /* 左轮PID控制*/
    float IncPIDCalc_l(float NextPoint)
    {
      if(ch_l != 0){
        sptr->SetPoint_l = ch_l;
        iError_l = sptr->SetPoint_l - NextPoint; //增量计算
      }else{
        return 0;
      }
    
    //    iError_l = sptr->SetPoint_l - NextPoint; //增量计算
    
       sptr->iIncpid_l =(sptr->A_l * iError_l //E[k]项
                 + sptr->B_l * sptr->LastError_l //E[k-1]项
                 + sptr->C_l * sptr->PrevError_l); //E[k-2]项
    
       variable_l =iError_l -  sptr->LastError_l;
    
        sptr->PrevError_l = sptr->LastError_l;   //存储误差,用于下次计算
        sptr->LastError_l = iError_l;
    
    /*PWM limiting function, PWM value is 80, minimum is 0
    */
    //    if(sptr->iIncpid  >= 0)
    //    {
    //      if(sptr->iIncpid <= sptr->limit){
    //        
    //        sptr->iIncpid += (pwm_set*100);
    //      }
    //      else{
    //        sptr->iIncpid = (int)(sptr->limit + pwm_set * 100);
    //      }
    //    }
    //    else if(sptr->iIncpid < 0){
    //      
    //            if(sptr->iIncpid >= -sptr->limit){
    //        
    //               sptr->iIncpid += (pwm_set*100);
    //              }
    //            else{
    //            
    //              sptr->iIncpid =(int)(pwm_set-sptr->limit);
    //            }
    //      
    //    }
    
            if(sptr->iIncpid_l >= sptr->limit)
        {
          sptr->iIncpid_l = sptr->limit;
    
          }
          else if(sptr->iIncpid_l < -sptr->limit){
    
            sptr->iIncpid_l = -sptr->limit;
          }
    
      return(sptr->iIncpid_l);                         //返回增量值
    
    }
    
    /* 右轮PID控制*/
    float IncPIDCalc_r(float NextPoint)
    {
        if(ch_r != 0){
        sptr->SetPoint_r = ch_r;
        iError_r = sptr->SetPoint_r - NextPoint; //增量计算
      }else{
        return 0;
      }
    
        //iError_r = sptr->SetPoint_r - NextPoint; //增量计算
    
       sptr->iIncpid_r =(sptr->A_r * iError_r //E[k]项
                 + sptr->B_r * sptr->LastError_r //E[k-1]项
                 + sptr->C_r * sptr->PrevError_r); //E[k-2]项
       variable_r =iError_r -  sptr->LastError_r;
    
        sptr->PrevError_r = sptr->LastError_r;   //存储误差,用于下次计算
        sptr->LastError_r = iError_r;
    
        if(sptr->iIncpid_r >= sptr->limit)
        {
          sptr->iIncpid_r = sptr->limit;
    
          }
          else if(sptr->iIncpid_r < -sptr->limit){
    
            sptr->iIncpid_r = -sptr->limit;
          }
    
      return(sptr->iIncpid_r);                         //返回增量值
    
    }
    /******************* (C) COPYRIGHT 2018 DY EleTe *****END OF FILE************/
    展开全文
  • 最近在做毕设,想咨询一个问题,希望圈内大佬给予帮助。使用ccs进行msp432e401y与网页的信息传输,lwip栈ti官网给与例程,还需修改,实现udp通信</p>
  • 怎么基于lwip协议栈编写udp协议,使得msp432e401y能够以太网通信传输信号 求例程代码 急!!!</p>
  • MSP432E401Y开发攻略

    2021-06-15 11:54:57
    平平无奇MSP-432 新的改变 我们对432进行了一些功能拓展与模块开发,帮助你用它做东西: 同时在b站发布了前两期教学,等大家反馈后我们继续修改。 交流 一些资料以及文档都在QQ群和公众号可以找到 qq:866325871...
  • 怎么用keil5实现MSP432E401Y点灯

    千次阅读 2019-09-16 21:30:46
    ** 第一步 ** 先去官网下载芯片包 在keil这个序列中 选择TI公司相对应的芯片包 下载后在pack installer->import->I agree ->finish 出现绿色图标,就代表成功。...选择正确的芯片flash...
  • 不过因为已经做过MSP430以及STM32,我知道还有一步非常关键的操作手册里没说,那就是打开总中断!但是我翻了一下午的手册以及其他人的代码我都没找到怎么开总中断,无奈之下只能采取官方封装好的driverlib库里面的...
  • 刚接触TI的MSP432板子。 如图,板子可以供电。 ![图片说明](https://img-ask.csdn.net/upload/202009/13/1599994980_383617.jpg) 开发平台是keil5(暂时不想用CCS),使用的仿真器是xds510, 但是配置时发生...
  • 由于已经开发过一段时间的MSP430F5529,对于嵌入式开发有了一些了解。现在转来做432的开发却发现网上的资源非常少,尽管有一些但是都是基于driverlib库函数进行的编写。但是本人实在是用不惯库函数,只能自己研究...
  • MSP432E401Y电机编码器QEI模块

    千次阅读 2018-05-21 15:32:09
    ti/devices/msp432e4/driverlib/driverlib.h&gt; /* Standard Includes */ #include &lt;stdint.h&gt; #include &lt;stdio.h&gt; #include &lt;stdbool.h&gt; unsigned lon...
  • 四个寄存器下的子寄存器的用法也差不多,不做过多的描述,而且432的各种定义也是大同小异,实在不明白可以直接ctrl+鼠标左键进文件翻一下,相关的定义基本上都放在一起** 4.GPTM Interrupt Mask (GPTMIMR) 该寄存器...
  • 用IAR新建TexasInstruments MSP432E401Y工程

    千次阅读 2018-08-11 19:36:15
    在工作空间里面新建文件夹,命名为BlinkyForMSP432。 打开IAR for ARM 的IDE,新建工程。 点击File---&gt;New Workspace新建工作空间。 点击Project---&gt;Creat New Project...新建工程。弹出如下...
  • * MSP432E401Y* Description:PID处理函数* 引脚:** Author: Robin.J***************************************************************************/#include#include "ti/devices/msp432e4/driverlib/driverlib.h...
  • TI公司的芯片MSP432E401Y的一个keil MDK工程模板, 这个是ti的launchpad上跑的一个闪烁灯例程, 官方的, 然后我在keil上调通了. 你只需要双击打开工程文件, 硬件接好, 下载就能用了.
  • 目录常规项目安装CCS安装MSP432Ware 和432 SDK注意事项 常规项目 安装CCS 在这篇文章写的时候推荐安装CCS10,很奇怪为什么CCS不采用滚动更新,搞得切换很麻烦。CCS10有一些更方便的功能。 安装MSP432Ware 和432 SDK ...
  • MSP432E4工程.rar

    2019-09-16 21:37:08
    MSP432E401Y的KEIL模板,有所需要的库和启动文件,详情参考https://blog.csdn.net/weixin_43548213/article/details/100902570
  • MSP432E4-OLED-AD

    2021-07-29 09:33:27
    MSP432E401Y的iic屏幕和模数转换的例程
  • 目录API (机翻)上机实战引脚配置I2C引脚配置工作指示灯LED1引脚配置文件结构I2C 初始化、读写函数myI2C.cmyI2C.hOLED... MSP432P401R SimpleLink™ 微控制器 LaunchPad™ 开发套件 (MSP-EXP432P401R) API (机翻) v
  • 抽奖中了一个MSP432E401Y的开发板, 调试官方例程的时候发现, blinkLED的代码不会blink, 看起来只能常亮. 找了半天原因, 最后发现问题 keil编译的时候, 启用了代码优化, 把循环等待给优化掉了 解决: 魔术棒–c/c++...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,539
精华内容 615
关键字:

msp432e401y