使用MSP430F149的开发板,首先对LED闪烁灯的例程进行讲解,然后下边是自己写的,将部分代码写入了新建的led.c程序中

#include  <msp430x14x.h>      // 这是程序都要包含的头文件,里边包含的很多寄存器和接口函数

void main(void)
{
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF;P1OUT = 0XFF;   //  P1DIR是P1端口的方向寄存器,DIR:direction register  当他为0的时候表示输入模式,1的时候为输出模式 。 0xff表示二进制的1111 1111,正好对应八个I/O口
P2DIR = 0XFF;P2OUT = 0XFF;   //  P1OUT是输出寄存器,OUT:output register  当他为0的时候表示输出低电平,1的时候为输出高电平    
P3DIR = 0XFF;P3OUT = 0XFF;
P4DIR = 0XFF;P4OUT = 0XFF;
P5DIR = 0XFF;P5OUT = 0XFF;
P6DIR = 0XFF;P6OUT = 0XFF;  //  以上是对板子的初始化,没有具体功能,在32中我们没有都进行配置是因为32最开始就是默认输出高电平

WDTCTL = WDTPW + WDTHOLD; //关闭看门狗     // MSP430板子是默认开启看门狗的,那为什么要关掉它呢,因为开启看门狗后,你要不定时的喂狗(计数清零),如果不喂狗,程序就会间隔着复位。
                       // WDTCTL是看门狗定时器寄存器,watch dog timer control register

                         // WDTHOLD 是看门狗停止位,当为0的时候是激活的,为1的时候是关闭的,WDTHOLD在头文件中是0x0080,低八位是1000 0000,所以就关闭了看门狗
P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换

CCTL0 = CCIE; //使能CCR0中断           // CCTL0是比较/捕获寄存器的控制器,当是0禁止中断,1开启中断,
CCR0 = 2047; //设定周期0.5S               // 这个是设置中断时长的,因为下边这个语句用的ACLK(辅助时钟且经过了八分频),本来是36768HZ,经过八分频,就是4096HZ

// 4096HZ的意思就是计数器每加1所需要的时间就是1/4096秒,如果CCR0等于4096,那么就是1s产生一个中断

TACTL = TASSEL_1 + ID_3 + MC_1;    // 定时器A的时钟源选择ACLK,增计数模式

// TACTL指的是timer a这个计数器寄存器的控制器,timer A control register 然后有多种模式可以选择。

// TASSEL:timer A source select   时钟源的选择,这里选择的是ACLK(辅助时钟源:Auxillary Cloclk)

// ID: input divider  分频器,,可以是1,2,4,8分频,这里选择的八分频

// MC:mode control  模式选择,这里选择的模式是从0开始计数,计到CCR0就会产生一次中断,然后继续从零开始

P2DIR = 0xff; //设置P2口方向为输出
P2OUT = 0xff;

_EINT(); //使能全局中断     // EINT :  enable  interrupt   使能中断,与他对应的是_DINT: disable interrupt
LPM3; //CPU进入LPM3模式         // LPM: low power mode 进入低功耗模式,现在只有ACLK时钟可以用
}

/*******************************************
函数名称:Timer_A
功 能:定时器A的中断服务函数
参 数:无
返回值 :无
********************************************/
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P2OUT ^= 0xff; //P2口输出取反     // ^表示异或,这里0 xor 1=1; 1 xor 1=0;可以起到取反。
}

*****************************************************下边是我自己写的,其实都差不多,不过我喜欢32那种,把初始化都独立起来**********************************************************************

main函数

#include <MSP430x14x.h>
#include "led.h"

void main( void )
{
LED_Init();
CCTL0=CCIE;//turn on the interrupt
CCR0=4096;// 1s
TACTL=TASSEL_1+ID_3+MC_1;//TASSEL: timer A source select
//ID: input divider
//MC: mode control
_EINT();
LPM3;
}

/**@brief timer A CCR0 interrupt
*@param no
*@retval no
*/
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A_CCR0 (void)
{
P2OUT ^= 0xff; //XOR
}

led.c

#include "led.h"
#include <MSP430x14x.h>

void LED_Init()
{
//make fority eight general-purpose i/o output high level
P1DIR=0xff; P1OUT=0xff;//DIR:direction register -- 0:input mode --1:output mode
P2DIR=0xff; P2OUT=0xff;//OUT:low or high output level --0:low --1:high
P3DIR=0xff; P3OUT=0xff;//eight bits represent eight pin
P4DIR=0xff; P4OUT=0xff;
P5DIR=0xff; P5OUT=0xff;
P6DIR=0xff; P6OUT=0xff;

// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;//WDTCTL:watch dog timer register --16 bits
//the 8th bit: --0: proper function --1:stop work

P6DIR |= BIT2;P6OUT |= BIT2;
}

led.h

#ifndef _LED_H

#define _LED_H

void LED_Init(void);

#endif

本人愚昧,上边如果有错误,还希望各位指正。

MSP430-LED中断闪烁代码详解的更多相关文章

  1. ARM Cortex-M底层技术(2)—启动代码详解

    杂谈 工作了一天,脑袋比较乱.一直想把底层的知识写成一个系列,希望可以坚持下去.为什么要写底层的东西呢?首先,工作用到了这部分内容,最近和内部Flash打交道比较多,自然而然会接触到一些底层的东西:第 ...

  2. BM算法  Boyer-Moore高质量实现代码详解与算法详解

    Boyer-Moore高质量实现代码详解与算法详解 鉴于我见到对算法本身分析非常透彻的文章以及实现的非常精巧的文章,所以就转载了,本文的贡献在于将两者结合起来,方便大家了解代码实现! 算法详解转自:h ...

  3. ASP.NET MVC 5 学习教程:生成的代码详解

    原文 ASP.NET MVC 5 学习教程:生成的代码详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 ...

  4. Github-karpathy/char-rnn代码详解

    Github-karpathy/char-rnn代码详解 zoerywzhou@gmail.com http://www.cnblogs.com/swje/ 作者:Zhouwan  2016-1-10 ...

  5. 代码详解:TensorFlow Core带你探索深度神经网络“黑匣子”

    来源商业新知网,原标题:代码详解:TensorFlow Core带你探索深度神经网络“黑匣子” 想学TensorFlow?先从低阶API开始吧~某种程度而言,它能够帮助我们更好地理解Tensorflo ...

  6. JAVA类与类之间的全部关系简述+代码详解

    本文转自: https://blog.csdn.net/wq6ylg08/article/details/81092056类和类之间关系包括了 is a,has a, use a三种关系(1)is a ...

  7. Java中String的intern方法,javap&cfr.jar反编译,javap反编译后二进制指令代码详解,Java8常量池的位置

    一个例子 public class TestString{ public static void main(String[] args){ String a = "a"; Stri ...

  8. Kaggle网站流量预测任务第一名解决方案:从模型到代码详解时序预测

    Kaggle网站流量预测任务第一名解决方案:从模型到代码详解时序预测 2017年12月13日 17:39:11 机器之心V 阅读数:5931   近日,Artur Suilin 等人发布了 Kaggl ...

  9. 基础 | batchnorm原理及代码详解

    https://blog.csdn.net/qq_25737169/article/details/79048516 https://www.cnblogs.com/bonelee/p/8528722 ...

随机推荐

  1. NIO(一):Buffer缓冲区

    一.NIO与IO: IO:  一般泛指进行input/output操作(读写操作),Java IO其核心是字符流(inputstream/outputstream)和字节流(reader/writer ...

  2. SpringBoot2 整合Ehcache组件,轻量级缓存管理

    本文源码:GitHub·点这里 || GitEE·点这里 一.Ehcache缓存简介 1.基础简介 EhCache是一个纯Java的进程内缓存框架,具有快速.上手简单等特点,是Hibernate中默认 ...

  3. C#LeetCode刷题之#58-最后一个单词的长度(Length of Last Word)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3927 访问. 给定一个仅包含大小写字母和空格 ' ' 的字符串, ...

  4. C#算法设计排序篇之04-选择排序(附带动画演示程序)

    选择排序(Selection Sort) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/681 访问. 选择排序是一种简 ...

  5. golang 浮点型

    目录 前言 1.三要素 2.表现形式 3.类型 4.精度 5.格式化 6.使用细节 跳转 前言 不做文字的搬运工,多做灵感性记录 这是平时学习总结的地方,用做知识库 平时看到其他文章的相关知识,也会增 ...

  6. Android 开发学习进程0.12 自定义view activity的属性

    设置类似钉钉或tel的圆形用户名首字母头像 设置有两种方法,一是使用已有的库或自定义的view组件,但如果确定只是文字头像,也可使用textview的backgrou属性,调整资源文件使textvie ...

  7. guice的能力简述

    guice这个google出的bean容器框架,ES有用到他. 能干什么 是一个bean容器 能AOP 能力细分与使用方式 以module创建injector.可以看成是一个容器.Module需要自定 ...

  8. 9. Technical Overview 技术概述

    9.1 Runtime Environment 运行环境 Spring Security 3.0需要Java 5.0运行时环境或更高版本.由于Spring Security的目标是以独立的方式运行,所 ...

  9. unity探索者之支付宝支付,非第三方插件

    版权声明:本文为原创文章,转载请声明http://www.cnblogs.com/unityExplorer/p/8405044.html 支付宝的sdk接入方式和微信支付比较类似,大部分的工作也基本 ...

  10. C++统计单词数

    [题目描述] 一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数.现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在 ...