一、前言
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在开发板的引脚上。文章来源:https://www.toymoban.com/news/detail-572936.html
- 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文件里,打开串口时默认打开。文章来源地址https://www.toymoban.com/news/detail-572936.html
- 操作程序
#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坐标来显示字符串,最后一位是字体大小
}
}
- 实验效果
到这里就结束啦
到了这里,关于快速上手MSP430F5529开发板教程(基于CCS8环境下的自制库)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!