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

一、前言

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坐标来显示字符串,最后一位是字体大小
        }
}

  • 实验效果
    在这里插入图片描述
    到这里就结束啦
    在这里插入图片描述
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修成真

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值