MSP430系列教程之流水灯
嵌入式系统(Embedded System),是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。
MSP430 是德州仪器生产的16位混合信号单片机系列。该系列的单片机专为低成本、特别是低功耗[1]的嵌入式应用设计。
MSP430FR6989系列教程之流水灯
MSP430FR6989系列教程之串口通信
MSP430FR6989系列教程之定时器
MSP430FR6989系列教程之PWM波
MSP430FR6989系列教程之LCD
前言
这次学习MSP430主要是为了备战电赛,虽然不确信一定会用到MSP430FR6989这块板子,但还是想尝试一下,毕竟未来的事谁也说不准。
MSP430系列教程之流水灯
一、MSP430FR6989的介绍
开发板的主要资源如下
- 高达 16MHz 的 16 位 RISC 架构
- 优化的超低功耗模式
- 高达128KB的FRAM
- 五个16位定时器,7个捕捉/比较
- 日历和闹钟功能的 RTC
- 16位和32位CRC校验(CRC16、CRC32)
- 16个外部通道的12位ADC
- 集成LCD 驱动器
- 增强型串行通信(UART、IIC、SPI)
- 灵活的时钟系统(DCO、VLO、LFXT、HFXT)
- AES安全加密、ESI等
二、使用步骤
1.开发环境配置
常用的开发环境有3种
1.CCS(Code Composer Studio)
2.IAR(IAR for MSP430)
3.Keil对MSP430没有官方支持,使用体验不行,所以就不推荐这种方式了
2.CCS的使用
在安装好CCS之后,首先需要自行设置一个工作区空间,建议在你空间余量比较大的盘下新建一个文件夹专门用于存储各个工作空间,并在该文件夹下新建每一个工作区的文件夹,以便后期的使用和整理。
比如,我这里的E:\CCS\1就是以1为空间名且建立在CCS这一文件夹下的工作空间
切换工作空间也比较方便
好了不说废话了,直接进入下一步,这里以大家最为熟悉的点亮两盏LED灯为例来展开
1.新建工程
2.选择芯片型号
3.设置工程名(这里以adc为例,因为我的工作区下已经有一个名为led的工程)
4.点击Finish,在你的工作区下就会新建好一个名为adc的新工程。
5.操作技巧Tips
这里为大家补充一个快速查看变量、函数体、头文件定义的方式:按下键盘上的Ctrl键,同时用鼠标右击需要查看的变量,就可以快速切换到包含的头文件,函数这些也是可以的。
6.编译工程
点击这个锤子样子的按钮就能对工程进行编译,可以看到工程编译成功,生成了led.out文件。
7.烧录工程
连接好下载usb线,usb接口既可以进行工程的烧录,也可以进行串口的发送
点击锤子右边的按钮,选择Select Program to Load,然后点击Browse Project,找到led工程下生成的led.out,点击OK即可导入,然后等待烧录过程完成即可。
点亮两盏LED灯的代码如下
#include <msp430.h>
/**
* main.c
*/
void Initial_Led(void);
void led(void);
//*****************************************************************************
//
// Blink the on-board LED.
//
//*****************************************************************************
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
Initial_Led();
led();
return 0;
}
void Initial_Led(void)
{
P1DIR |= BIT0; // 设置P10方向为输出
P1OUT &= ~BIT0; // P10输出为0,熄灭LED1
P9DIR |= BIT7; // 设置P97方向为输出
P9OUT &= ~BIT7; // P97输出为0,熄灭LED2
}
void led(void)
{
// Configure GPIO
P1DIR |= BIT0; // Clear P1.0 output latch for a defined power-on state
P1OUT |= BIT0; // Set P1.0 to output direction
P9DIR |= BIT7; // Clear P9.7 output latch for a defined power-on state
P9OUT |= BIT7; // Set P9.7 to output direction
PM5CTL0 &= ~LOCKLPM5; // Disable the GPIO power-on default high-impedance mode
// to activate previously configured port settings
while(1)
{
P1OUT ^= BIT0; // Toggle LED
P9OUT ^= BIT7;
__delay_cycles(100000);
}
}
这里就不对代码进行讲解了,如需要源代码,可以私信我。
(1)与 & :与 相当于“乘”,任何数乘以0,都等于0,
只有1与1才是1与是拉成0;a & 0x1f 就是把高三位拉成0,
别的位不变。与0 会拉成0 , 与1不变
(2)或 | :或 相当于“加”,任何数加上1,都等于1,
只有0或0才是0或是拉成1;a | 0x1f 就是把第五位
拉成1,别的位不变。或1会拉成1 , 或0不变
(3)取反~:所有的位都进行 非 运算
(4)左移 右移:移位填0