基于CCS8环境下的自制库,快速上手MSP430F5529开发板教程

快速上手MSP430F5529开发板教程(基于CCS8环境下的自制库)

  • 一、前言
  • 二、准备工作
  • 三、快速了解CCS8的使用
  • 1、目录
  • 2、Debug界面
  • 3、添加文件(设置文件路径)
  • 四、基本操作
  • 1、开发板图样
  • 2、打开工程
  • 3、程序烧入
  • 五、基本使用
  • 1、LED闪烁
  • 2、串口操作
  • 3、按键中断
  • 4、定时器中断
  • 5、PWM输出
  • 6、IIC驱动OLED 0.96
  • 一、前言

    MSP430单片机的学习难度介于51与STM32之间,推荐使用寄存器开发,因为MSP430的寄存器操作真的比库函数操作要简易许多。在学习MSP430的时候,建议直接看中文手册(重点)和原理图学习。

    二、准备工作

  • CCS8环境搭建
  • MSP430F5529开发板
  • 中文手册与原理图
  • 关于下载及安装CCS大家可以参考这篇文章:CCSv9.3安装与搭建msp430F5529LP库函数环境
    关于中文手册与原理图我已上传至网盘:https://pan.baidu.com/s/1IGjVHhveqcF5FDBrkbMl4g
    密码:fbss
    自制库是根据Black Helo这位博主的库修改而来,大家可以看他的这篇文章:备战TI系列 — 五分钟内玩转MSP430F5529开发板几大重要功能及常用模块(基于CCS8环境下自制函数库)

    三、快速了解CCS8的使用

    1、目录


    2、Debug界面

    3、添加文件(设置文件路径)

    与keil5一样,在工程中添加的.c文件,需要添加头文件路径
    步骤如下图所示:

  • 右键文件目录下的工程,点击Properties。

  • 点击Include Options增加文件路径。(路径不要带中文

  • 点击File Search Path,增加文件路径。(路径不要带中文

    点击Apply and Close结束

  • 四、基本操作

    1、开发板图样

    2、打开工程

  • 点击File,打开我上传文件里的程序(将程序文件复制到桌面)。


  • 3、程序烧入

  • 添加文件路径


  • 双击左边目录的main.c,打开main.c。

  • 点击编译

    没有错误,没有警告。
    用USB线连接电脑与开发板,烧入程序。

  • 五、基本使用

    1、LED闪烁

  • LED原理图

  • Define.h配置

  • 操作程序
  • #include "All.h"
    
    
    void main(void)
    {
         Init();
        LED0_STATE(0);//操作led0 灭
        LED1_STATE(0);//操作led1 灭
            while(1)
            {
                LED0_STATE(2);//操作led0 状态翻转
                LED1_STATE(2);//操作led1 状态翻转
                delay(500);   //延时
            }
    }
    

  • 实验效果
  • 2、串口操作

    开发板上的USB接口是串口1,串口0在开发板的引脚上。

  • Define.h配置

  • 串口中断函数
  • #if USART1_switch
    #pragma vector = USCI_A1_VECTOR
    __interrupt void USCI_A1_ISR()
    {
        switch(_even_in_range(UCA1IV,4))
        {
            case 0:break;                             // Vector 0 - No interrupt
            case 2:                                   // Vector 2 - RXIFG
            UCA1TXBUF = UCA1RXBUF;                // 发送接收到的数据
            break;
            case 4:break;                             // Vector 4 - TXIFG
            default: break;
        }
    }
    #endif
    

    在USART.c文件里,打开串口时默认打开。


  • 操作程序
  • #include "All.h"
    
    
    void main(void)
    {
         Init();
            while(1)
            {
                send1_buf("发送成功\r\n");
                delay(500);   //延时
            }
    }
    

  • 实验效果

  • 删除send1_buf,打开总中断,再次烧入程序,验证串口中断。
  • #include "All.h"
    
    
    void main(void)
    {
         Init();
         _EINT();
            while(1)
            {
                delay(500);   //延时
            }
    }
    

  • 实验效果
  • 3、按键中断

  • 按键原理图

  • Define.h配置

  • 使用按键控制LED0亮灭,程序为:
  • #include "All.h"
    
    
    void main(void)
    {
         Init();
         LED0_STATE(0);
         LED0_STATE(0);
         IN_Config(1,1);   //打开按键1的中断
         IN_Config(2,1);   //打开按键2的中断
            while(1)
            {
    
            }
    }
    
    //中断函数
    #pragma vector = PORT1_VECTOR
    __interrupt void P1_ISR()
    {
        if(P1IFG & BIT1)
        {
            while((P1IN & BIT1)==0);
            LED0_STATE(1);
        }
        P1IFG &=~ BIT1;
    }
    #pragma vector = PORT2_VECTOR
    __interrupt void P2_ISR()
    {
        if(P2IFG & BIT1)
        {
            while((P2IN & BIT1)==0);
            LED0_STATE(0);
        }
        P2IFG &=~ BIT1;
    }
    

  • 实验效果
  • 4、定时器中断

  • Define.h配置

  • 定时器中断程序(打开定时器是默认打开),这里让其控制LED灯闪烁。
  • #if TIME_A1
    /*定时器1的中断函数回调*/
    #pragma vector=TIMER1_A0_VECTOR
    __interrupt void TIMER1_A0_ISR(void)
    {
        LED0_STATE(2);
        LED1_STATE(2);
        send1_buf("定时器打开\r\n");
    }
    #endif
    
  • 主函数
  • void main(void)
    {
         Init();
            while(1)
            {
    
            }
    }
    

  • 实验效果


  • 5、PWM输出

  • Defien.h配置
  • 主函数
  • #include "All.h"
    
    
    void main(void)
    {
         Init();
         PWM0_State(50);
            while(1)
            {
    
            }
    }
    

  • 实验效果
  • 6、IIC驱动OLED 0.96

  • Defien.h配置
  • 主函数
  • #include "All.h"
    
    
    void main(void)
    {
         Init();
         OLED_Clear();//OLED清屏
            while(1)
            {
                OLED_ShowString(60,1,"Hello",8); //按照x,y坐标来显示字符串,最后一位是字体大小
            }
    }
    

  • 实验效果

    到这里就结束啦
  • 物联沃分享整理
    物联沃-IOTWORD物联网 » 基于CCS8环境下的自制库,快速上手MSP430F5529开发板教程

    发表评论