【MSP430】MSP430F5529火箭板 --> 按键中断控制LED实验

按键控制MSP430F5529单片机控制灯闪烁+按键控制LED新手程序 按键控制MSP430F5529单片机控制灯闪烁+按键控制LED新手程序,这个程序是我在编写完之后进行编译成功版,第一次使用430F5529单片机的新手同学可以试一试 立即下载

实验目的:
  测试评估板上的按键和LED

实验内容:
  1、按下s1一次红灯亮1s后熄灭
  2、快速按下s1两次绿灯亮1s后熄灭

bsp_led.h

#ifndef _BSP_LED_H
#define _BSP_LED_H
#include "msp430.h"

#define Set_Bit(val,bitn)   (val |= (/*1 << */(bitn)))
#define Clr_Bit(val,bitn)   (val &= ~(/*1 << */(bitn)))
#define Get_Bit(val,bitn)   (val &  (1 <<bitn))

//LED1
#define LED1_RED_DIR        P1DIR
#define LED1_RED_OUT        P1OUT
#define LED1_RED_SEL        P1SEL
#define LED1_RED_Pin_Num    (BIT0)      //P1^0

#define LED1_RED_IO_Init()  (Set_Bit(LED1_RED_DIR,LED1_RED_Pin_Num))        //初始化IO为输出模式
#define LED1_RED_Set()      (Set_Bit(LED1_RED_OUT,LED1_RED_Pin_Num))
#define LED1_RED_Clr()      (Clr_Bit(LED1_RED_OUT,LED1_RED_Pin_Num))

//LED2
#define LED2_GREEN_DIR      P4DIR
#define LED2_GREEN_OUT      P4OUT
#define LED2_GREEN_SEL      P4SEL
#define LED2_GREEN_Pin_Num  (BIT7)      //P4^7

#define LED2_GREEN_IO_Init()    (Set_Bit(LED2_GREEN_DIR,LED2_GREEN_Pin_Num))
#define LED2_GREEN_Set()        (Set_Bit(LED2_GREEN_OUT,LED2_GREEN_Pin_Num))
#define LED2_GREEN_Clr()        (Clr_Bit(LED2_GREEN_OUT,LED2_GREEN_Pin_Num))

#endif /*_BSP_LED_H*/

bsp_key.h

#ifndef _BSP_KEY_H
#define _BSP_KEY_H
#include<msp430.h>

#define Set_Bit(val,bitn)   (val |= (/*1 << */(bitn)))
#define Clr_Bit(val,bitn)   (val &= ~(/*1 << */(bitn)))
#define Get_Bit(val,bitn)   (val &  (1 <<bitn))

//s1
#define KEY1_DIR        P2DIR
#define KEY1_SEL        P2SEL
#define KEY1_OUT        P2OUT
#define KEY1_IN         P2IN        //按键需读入IO口状态值
#define KEY1_Pin_Num    (BIT1)

#define KEY1_IO_Init()  (Clr_Bit(KEY1_DIR,KEY1_Pin_Num))    //初始化IO状态为读取输入电平状态
#define KEY1_Set()      (Set_Bit(KEY1_OUT,KEY1_Pin_Num))
#define KEY1_Clr()      (Clr_Bit(KEY1_OUT,KEY1_Pin_Num))

#endif /*BSP_LED_H*/

main.c

#include <msp430.h>
#include "bsp_led.h"
#include "bsp_key.h"

#define delay_s(x)  __delay_cycles(x*1000000)
unsigned int n = 0;

void main()
{
    WDTCTL = WDTPW + WDTHOLD;
    LED1_RED_IO_Init();         //初始化设置IO口方向为输出
    LED2_GREEN_IO_Init();

    LED1_RED_Clr();             //关闭LED_RED
    LED2_GREEN_Clr();           //关闭LED_Green

    KEY1_IO_Init();             //读取电平输入
    KEY1_Set();
    P2REN |= KEY1_Pin_Num;      //使能s1按键端口的寄存器
    P2IE  |= KEY1_Pin_Num;      //使能s1按键端口中断
    P2IES |= KEY1_Pin_Num;      //s1中断沿触发控制寄存器
    P2IFG &= ~KEY1_Pin_Num;     //s1中断标志寄存器
    
    _EINT();                    //使能全局中断  __enable_interrupt()
    while(1)
    {
        if(n==0)                //当按键一次都没有按下时,红色和绿色LED都不亮
        {
            LED1_RED_Clr();
            LED2_GREEN_Clr();
        }
        else if(n==1)           //当按键s1按下一次时,红色LED亮1s后灭
        {
            LED1_RED_Set();
            LED2_GREEN_Clr();
            delay_s(1);
            n=0;
        }
        else if(n==2)           //当按键s1快速按下两次时,绿色LED亮1s后灭
        {
            LED1_RED_Clr();
            LED2_GREEN_Set();
            delay_s(1);
            n=0;
        }
    }
}

#pragma vector = PORT2_VECTOR
__interrupt void Port2()
{
    unsigned int i=0;
    if(!(P2IN & KEY1_Pin_Num))      //如果s1被按下   -->  按键共地
    {
        __delay_cycles(5000);       //消抖
        if(!(P2IN & KEY1_Pin_Num))
        {
            while(!(P2IN & KEY1_Pin_Num)){}        //松手检测
            n = 1;
            P2IFG &= ~KEY1_Pin_Num;

            while((P2IN & KEY1_Pin_Num))           //500ms-1000ms内如果不按下,视为只按一次
            {
                i++;
                __delay_cycles(1000);
                if(i>1000)
                    return;
            }
            if(!(P2IN & KEY1_Pin_Num))
            {
              __delay_cycles(5000);       //消抖
               if(!(P2IN & KEY1_Pin_Num))
               {
                 while(!(P2IN & KEY1_Pin_Num)){}  //第二次松手
                 n = 2;
                 P2IFG &= ~KEY1_Pin_Num;
               }
             }
          }
       }
  }
            

代码适用的开发板类型

上述代码可直接烧录到如下图所示的开发板中,作为上手程序:
在这里插入图片描述

Python实战:用MOOTDX库轻松抓取股票分时数据并绘制专业图表(附完整代码) 本文详细介绍了如何使用Python的MOOTDX库获取股票分时数据,并通过Pandas进行数据清洗与VWAP计算,最后利用Matplotlib绘制包含价格线、均线和成交量的专业分时图。文章提供了从环境搭建、数据获取到可视化呈现的完整代码,帮助读者快速构建本地化的股票分时数据分析工具。 阅读详情

相关推荐

PDN设计

作者:AirCity 2020.2.6 Aircity007@sina.com 本文所有权归作者Aircity所有 PDN设计的目的是降低电源纹波水平,减小电压跌落。我们通常要求LDO的文波水平是30mV,DCDC是50mV,超过这个就需要PDN设计。 PDN设计的方法是用不同的容值,合适的总电容量,降低电源平面与地平面之间的交流阻抗,确定容值总量和电容大小的过程,就是PDN设计过程。 为什么需...

AirCity123的博客 4147

msp430按键控制LED灯

#include "io430.h" /*        按键控制lLED灯的亮灭,有两种方法.        方法一:中断功能.                          方法二:利用 if(P4IN&BIT2)判断即可.        写代码时,尽量按照步骤来,避免因疏忽而浪费大量时间找bug. */ int main( void ) {   // Stop watch

acmsongye的博客 1万+

新手入门:N-CMAPSS数据集解析与实战指南

本文详细解析了N-CMAPSS数据集的结构与应用,为新手提供航空发动机故障预测的实战指南。通过Python代码示例展示数据加载、探索和特征工程技巧,帮助读者快速掌握剩余寿命(RUL)预测的关键步骤,并分享常见问题解决方案与进阶学习路径。

weixin_29056701的博客 376

MSP430F5529学习笔记(5)——按键切换灯的亮灭

按键消抖,按键切换状态

在嵌入式嵌入式领域奋斗的程序猿的博客 1730

别再对着手册发愁了!手把手教你读懂MIPI-DSI初始化命令(以Rockchip平台为例)

本文深入解析MIPI-DSI初始化命令在Rockchip平台的应用,帮助嵌入式工程师快速掌握LCD屏幕调试技巧。从协议基础到实战指南,详细拆解命令格式、DCS与Generic命令的区别,并提供Rockchip平台的调试全流程与高级技巧,解决常见显示问题。

weixin_42519781的博客 263

CTF命令执行绕过实战:从空格过滤到无回显外带的7种核心姿势

命令执行漏洞是Web安全中的常见高危漏洞,其核心原理在于应用程序未对用户输入进行充分过滤,导致攻击者能够注入并执行系统命令。在真实环境中,安全防护措施(如WAF、输入过滤函数)普遍存在,因此漏洞利用的关键技术在于“绕过”这些过滤机制。理解过滤器的运作逻辑(如黑名单、白名单、转义、长度限制)是成功绕过的前提。通过系统学习**空格绕过**、**命令黑名单绕过**、**编码混淆**等基础技巧,并结合**无回显外带**、**反弹Shell**等高级利用链,安全研究人员能够有效应对复杂防护场景。本文以CTFshow

weixin_29315091的博客 370

MSP430F5529学习笔记(4)——按键点灯

MSP430F5529的输入检测,以及位操作。

在嵌入式嵌入式领域奋斗的程序猿的博客 5360

高速光耦在隔离串口通信中的选型与优化策略

本文深入探讨了高速光耦在隔离串口通信中的关键作用与选型优化策略。针对串口通信中因普通光耦响应慢导致的误码问题,文章详细分析了响应时间、电流传输比、供电电压与隔离耐压等核心选型指标,并对比了6N137、HCPL-0601等主流型号。同时,提供了电路设计、PCB布局的优化技巧及实用的调试指南,旨在帮助工程师实现高速、稳定的隔离串口通信。

grpc6streamer的博客 322

实验:MSP430F249 按键控制四个灯,并消抖

实验:MSP430F249 按键控制四个灯,并消抖

CaptainDrake的博客 1264

实验三 Gmapping建图

自主移动机器人第三次实验课,内容包括:(1)turtlebot的gmapping建图;(2)rosbag的使用;(3)gazebo中的gmapping建图。

lj164567487的博客 4648

华为OD机考双机位C卷 - 评委评分 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 评委评分 (OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 1750

msp430g2553按键控制LED亮灭

实现每按一次button,LED输出翻转一次。 仿真如下: 每按一次P1.3的button,p1.6连的LED翻转一次; 代码说明: 每按一次button,触发一次引脚中断,执行一次 P1_3ISR() 中断函数 #include <msp430.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1DIR = BIT6; //p1.0,p1.6外接LED为输出状态 P1OUT &= ~ BIT6; P1REN |=

pengchengIT的博客 4681

沁恒CH32V208GBU6读写芯片内部FLASH:代码空间;使用OTA时候的代码空间;保存结构体到FLASH

沁恒CH32V208GBU6读写芯片内部FLASH:代码空间;使用OTA时候的代码空间;保存结构体到FLASH

cheng___yi的博客 555

【MSP430】MSP430F5529火箭板 --->基于定时器A的LED灯闪烁实验(含Timer_A分析)

实验内容:上电点亮MSP430F5529 Launch Pad 上板载的红色LED,同时使用定时器让绿色LED闪烁

SSA_ming的博客 3202

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

msp430 launchpad 按键控制led亮灭

demo1 实现功能:按一下按键,led2变换一下亮灭状态。 #include //这个宏仅针对8MHz #define delay_us(us) __delay_cycles(8*(us)) #define delay_ms(ms) __delay_cycles(8000*(ms)) int main(void) { WDTCTL = WDTPW | WDTHOLD;

乱七八糟の中转站 4850

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

基于msp430的按键实时控制LED灯

基于msp430的按键实时控制LED灯 相信玩过430的人都知道它的P1、P2口除了具有普通IO口的功能外,还具有中断功能。 所以那我们就利用它的中断功能来实现一个小项目吧! 那就是通过按键来点亮LED灯 项目大体框架 初始化相应的IO端口:比如我们要用的P1_0—–P1_3来连接按键,然后通过P6口输出.所有,我们要设置P1口的低四位为第二功能引脚,方向为输入,P6为普通引脚...

知识应该被分享。 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

基于MSP430F5529的三种点灯方式(基本、定时、外部中断),快来瞧瞧!

前言 好久没有更新一下MSP430F5529的博文了,发觉看的人有点少了,而且前段时间又因为电赛停了,就回归STM32f1的怀抱,毕竟32位的确实比16位的好,而且就用户而言,STM32肯定更占优势······今天就再次回归MSP430的怀抱,那么接下来就会先从基础的使用讲起,这里先是讲用三种方式来点亮LED。 一、msp430f5529三种点灯方式 在MSP430f5529中对于LED灯,均是高电平触发,输入高电平后就点亮,输入低电平就熄灭,这个不同于51和STM32,这是比较基础的。那么接

不说二话的自家人的博客 8298

MSP430学习记录(2)实现LED灯闪烁

MSP430FR2476点亮LED灯。

m0_62703628的博客 931

MSP430F5529入门(二)按键

入门MSP430系列单片机第二课,为电赛准备,同大家一起学习,有问题欢迎一起交流!主要参考这位大佬。

guoqo0087的博客 669

MSP430F5529——外部中断

关于msp430f5529lp的外部中断

zwq_chengxuyuan的博客 685

MSP430F5529——中断理解

MSP430F5529的_BIS_SR和__bis_SR_register理解

在嵌入式嵌入式领域奋斗的程序猿的博客 3414

msp430f5529独立按键(中断)

两颗独立按键控制LED亮灭: #include <io430.h> Key_Init() //按键中断初始化 { //S1 P2IE |= BIT1; P2IES |= BIT1; P2IFG &= ~BIT1; P2REN |= BIT1; P2OUT |= BIT1; //S2 P1IE |= BIT1;...

SOLE 的博客 4878

【补作业】msp430单片机(一)控制LED灯的亮灭

硬件描述 两个LED灯: P1.0接LED1(红),P4.7接LED2(绿). IO口输出高电平时,LED亮 IO口输出低电平时,LED灭 点亮红灯 (ccs中的c语言代码,用430进行调试) P1口八个引脚 .7 .6 .5 .4 .3 .2 .1 .0 P1.0 红色LED1 控制:P1.7 6 5 4 3 2 1 0 二进制 : 0 0 0 0 0 0 0 1 八进制 : 0x01 输出:P1DIR = 0x01; 输出寄存器:P1OUT = 0x01; #include<msp430.h

weixin_55600418的博客 9300

MSP430 F5529的按钮控制led灯亮灭程序代码——中断写法——S1 S3控制跑马灯

#include <msp430.h> int run=0; int y,i; int main(void) { WDTCTL = WDTPW | WDTHOLD; //关闭看门狗 P8DIR |= BIT1;//设置LED灯 P3DIR |= BIT7; P7DIR |= BIT4; P6DIR |= BIT3; P6DIR |= ...

绿豆汤的博客 3711

MSP430 F5529的按钮控制led灯亮灭程序代码——按一下亮一下,再按一下暗

/* 2019/6/27 MP430F5529 电子工艺实习实验1 作业1 按下按键,LED亮,再按一次,LED灭 设置P8.1输出灯,P1.2输入按钮,P1.2下降沿(1》》0)中断,中断标识为0 给按钮设置上拉电阻让其的高电位更加稳定 设置这两个的初始值 主函数 1.按下去了 2.等延时再确认(消除抖动 3.等按键抬起来了再变化亮灭(while)(这一步卡了很久) PS:记得关看门...

绿豆汤的博客 8547

msp430f5529入门(1)自创按键控制LED灯实验

前言 实践是巩固知识最好的方法,在初步学习MSP430F5529时,我们最容易做的实验,便是“点灯”。下面分享的是我自己设计的一个综合性“点灯实验” 实验内容:通过P1.1控制P1.0,P4.7的LED灯亮灭,用P2.1切换灯亮灭的样式。 MSP430F5529按键点灯与切换 代码如下: #include <msp430.h> /** * main.c *

lhooer的博客 7279
上一篇: 【CCS】Code Composer Studio 工程中添加自定义头文件路径方法
下一篇: 【MSP430】关于MSP430的精准延时__delay_cycles的分析
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值