title: msp430点灯实验
date: 2023-04-15 15:31:25
description: 基于msp430f5529点灯实验

一、实验内容

使用开发板:msp430f5529

使用的LED灯:为开发板上自带的User LEDs(LED1、LED2)

环境:CCS (Version: 12.2.0.00009)

通过ccs编写代码,控制LED1和LED2交替闪烁

二、开发板介绍

开发板正面 与背面图

1、 I/O 的简介

一般情况下,P1和 P2都是具有中断能力的。从 P1和 P2接口的各个I/O 管脚引入的中断可以独立的被使能并且设置为上升沿或者下降沿触发。对应的中断向量表分别为 P1IV 和 P2IV,它们只能进行字操作,并且 PAIV 这个寄存器根本不存在。 P1、P2可合为 PA,P3、P4可合为 PB,…PC、PD。所以 P1为8位BCD 0x00,PA 为16位 BCD 0x0000。当进行字操作写入 PA 口时,所有的16位都被写入这个端口;当利用字节操作写入 PA 口的低字节时,高字节保持不变。

2、I/O 的简单配置

(1)、功能选择寄存器 PXSEL

用来声明该端口是要应用于外围电路的特殊功能(不决定输入输出方向),默认为低电平。

低电平表示通用 I/O(默认),高电平表示该引脚将有连接外围电路的特殊用途即作为外设;

如:设置P1.0和P1.1为通用 I/O的操作:

P1SEL &= ~(BIT0+BIT1);

(2)、I/O 方向设定寄存器 PXDIR

如设定 P1.1和 P1.2为输出状态 操作为:

P1DIR |=(BIT1+BIT2); //等价于 PADIR |=(BIT1+BIT2)或  PADIR_L |=(BIT1+BIT2)

注意: 在msp430f5529.h的头文件中BITS有如下定义:

(3)、I/O 输入设定寄存器 PXIN

如设定 P1.1和 P1.2的输入为低电平 操作为:

P1IN &= ~(BIT1+BIT2);

(4)、I/O 输出设定寄存器 PXOUT

只用为简单的输出时:

设定 P1.1和 P1.2输出高电平 操作为:

 P1OUT |= (BIT1+BIT2);

如果该引脚为正常 I/O 功能,且当前已设定为输入方向,且上拉/下拉电阻寄存器是有效地。那么 PXOUT 可以用来配置上拉和下拉电阻: 低电平为下拉电阻; 高电平为上拉电阻。

(5)、上拉/下拉电阻使能寄存器

低电平表示该寄存器为无效状态; 高电平表示该寄存器为有效状态;

三、原理图(只涉及本实验的)

由原理图可知,本实验应该设置P1.0和P4.7引脚为通用I/O,并且方向为输出方向,当P1.0和P4.7引脚为高电平时LED1和LED2点亮,为低电平时LED1和LED2熄灭。

四、代码部分

main.c

#include <msp430.h> 

#include <delay.h>//延时函数
#include <led.h> //初始化函数 int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // 关闭看门狗 LED_Init(); //led初始化函数 while (1)
{
P1OUT |= BIT0; //亮灯
P4OUT &= ~BIT7; //熄灯
delay_ms(1000);
P1OUT &= ~BIT0; //熄灯
P4OUT |= BIT7; //亮灯
delay_ms(1000);
}
// return 0;
}

led.h

#ifndef GO_LED_H_
#define GO_LED_H_ #include <msp430.h> void LED_Init(void);//初始化函数 #endif

led.c

#include "led.h"

void LED_Init(void)//led初始化函数
{ P1SEL &= ~BIT0; //设置P1.0口为通用I/O
P4SEL &= ~BIT7; //设置p4.7口为通用I/O P1DIR |= BIT0; //设置P1.0口为输出模式
P4DIR |= BIT7; //设置p4.7口为输出模式 //初始化为熄灭
P1OUT &=~ BIT0; //低电平熄灯
P4OUT &=~ BIT7; //低电平熄灯
}

delay.h

#ifndef GO_DELAY_H_
#define GO_DELAY_H_ #include <msp430.h> #define CPU_F ((double)1000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//重新定义延时函数
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) #endif

五、实验现象

点击跳转

msp430点灯实验的更多相关文章

  1. 基于UP-CUP6410点灯实验完成

    远程点灯实验 实验目的: 实现远程点灯,通过gprs 自带调试软件发送信息,完成智能家具远程点灯实验. 1.定制arm系统 使用uboot资料自带的!在内核中添加pl2303串口驱动,进行u口转串口的 ...

  2. Microsemi Libero系列教程(二)——新建点灯工程

    前言 上一篇文章,介绍了Microsemi Libero系列教程(一)-Libero开发环境介绍,下载,安装与注册,作为嵌入式开发中的Hello World,点灯是再也基础不过的实验了,通过点灯实验, ...

  3. [蓝点ZigBee] Zstack 之点亮LED灯 ZigBee/CC2530 视频资料

    LED点灯实验,主要是依据Zstack 现有程序修改LED相关驱动,适配到我们自己的开发板上,我们开发板共有4个LED灯,其中一个是电源指示灯,剩余3个都是GPIO控制的LED灯,有LED 灯连接方式 ...

  4. Arduino和C51之串口通信

    技术:51单片机.Arduino.串口通信   概述 本文主要讲解串口通信技术的使用方法,并通过串口点灯实验介绍了51单片机和Arduino串口的使用,为初学者学习串口知识提供帮助 详细 代码下载:h ...

  5. 51单片机和Arduino—闪烁灯实现

        技术:51单片机学习.Keil4环境安装.Arduino环境安装.闪烁灯教程   概述 本文提供51单片机.Arduino单片机入门软件安装和一些需要使用的软件介绍,为后续单片机.嵌入式开发做 ...

  6. MIO、EMIO、AXI_GPIO区别与联系

    https://blog.csdn.net/u014485485/article/details/78141594            点灯实验

  7. 小白自制Linux开发板 三. Linux内核与文件系统移植

    上一篇完成了uboot的移植,但是想要愉快的在开发板上玩耍还需要移植Linux内核和文件系统. 1.Linux内核 事实上对于F1C100S/F1C200S,Linux官方源码已经对licheepi ...

  8. 痞子衡嵌入式:把玩i.MXRT1062 TencentOS Tiny EVB_AIoT开发板(2) - 在Flash调试及离线启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1062 TencentOS Tiny EVB_AIoT开发板在Flash调试与离线启动. 腾讯 TencentOS 团队于 ...

  9. 手把手教你丨小熊派移植华为 LiteOS-M

    摘要:本文详细讲解如何移植 LiteOS 到小熊派. 本文分享自华为云社区<小熊派移植华为 LiteOS-M(基于MDK)>,作者: JeckXu666. 前言 之前使用小熊派实现了鸿蒙动 ...

  10. MSP430中断小实验——通过按键改变小灯闪烁频率

    本小实验基于MSP430f5529,不同的型号可能管脚和中断配置有所不同. 实现的功能为: 第一次按下按键后,系统以每 2 秒钟,指示灯暗 1 秒,亮 1 秒的方式闪烁.程序采用默认时钟配置: 第二次 ...

随机推荐

  1. Java中内部类相关知识

    内部类 1.1内部类概述 内部类就是指在一个类中定义一个类.举例:在一个类A的内部定义了一个类B,类B就称为内部类. 1.1.1内部类的定义格式 格式: ​ public class 类名{ ​ 修饰 ...

  2. 洛谷 P1832 A+B Problem(再升级)题解

    START: 2021-08-09 15:28:07 题目链接: https://www.luogu.com.cn/problem/P1832 给定一个正整数n,求将其分解成若干个素数之和的方案总数. ...

  3. STM32F103使用FSMC对接正点原子3.5寸TFTLCD屏幕

    fsmc的使用算是32里面有点绕的一个知识点,但是想明白了其实也没啥了. 首先我先放32个0在这儿: 0000  0000  0000  0000  0000  0000  0000  0000 [3 ...

  4. Stream流相关方法

    LIST<对象> 转换MAP 并根据某个字段分组 // 并根据某个字段分组,并做了归类 Map<String, List<User>> collect = user ...

  5. java学习笔记(四)变量

    局部变量,必须声明和初始化值: 实列变量,从属于对象:如果不自行初始化,这个类型的默认值,数值类型,0,0.0  布尔值  默认为false  除了基本类型下,其余的默认值都是null 如 变量类型 ...

  6. C#截取字符串的方法

    #region 得到字符串的长度    /// <summary>    /// 得到字符串的长度    /// </summary>    /// <param nam ...

  7. node.js缓冲区类与node-red向串口发数据

    遇到的问题是使用node-red的串口模块向串口发送16进制数据,控制LED灯. 初学者经常想当然的认为只要msg的payload里放上对应的数就行了.其实不是. Node-red是node.js环境 ...

  8. 在CentOS上编译最新版linux内核(linux-5.19.9)

    从官网下载最新版的Linux内核源码,本教程使用linux-5.19.9进行编译. 实验环境(CentOS-Stream-8) $ uname -a Linux localhost.localdoma ...

  9. GPSSworld仿真(一):程序题——单窗口排队系统

    3.3 一个仓库共存放了2000吨货物,货物以三种规模出库,少量(10吨),中等(20吨),大量(50吨),分别以10±5分,15分,30±10分的速率出库.如果没有货位达到的情况下,一个仓库能维持供 ...

  10. vue核心原理(Diff算法、虚拟dom)

    核心原理&源码 Diff 算法 这里参考大佬文章:https://mp.weixin.qq.com/s/oAlVmZ4Hbt2VhOwFEkNEhw diff 算法的进化 关于 diff 算法 ...