历史上的今天
今天是:2024年12月21日(星期六)
2020年12月21日 | 基于MSP430G2553的IO外部中断配置说明
2020-12-21 来源:elecfans
这一篇文章将说明MSP430G2553的IO中断配置,整个P1的IO都可以配置IO中断,但中断处理函数只有一个,MSP430和大多数MCU一样提供上升沿、下降沿选择。
在Launchpad上有按键S2,接在P1.3口,当按下后P1.3将接入高电平,从而触发中断。
在实例代码中,配置了P1.3和P1.6的LED灯,当按下P1.3的按键产生中断,LED灯将切换点亮

1.按键的中断配置
要配置按键中断,需要先设置P1.3口为输入,并且设置上拉电阻以保障稳定性,
P1DIR &= ~BIT3;//设置P1.3为输入
P1REN |= BIT3;//启用P1.3电阻
在启用电阻后,由P1OUT来配置下拉还是上拉
P1OUT |= BIT3;//设置上拉电阻
通过P1IES寄存器设置上升沿,0为下降沿
P1IES |= BIT3;//P1.3中断边缘选择
需要对P1的中断进行使能,除了这里还有总中断需要使能(在main函数中)
P1IE |= BIT3;//P1.3中断使能
=====================================================================
2.中断处理函数
在中断处理函数中处理LED程序
编译器指示
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
delay(100);//约100ms
P1OUT ^= (1《《6);//反向P1.0和P1.6
P1OUT ^= (1《《0);
P1IFG = 0;//清除中断标识
}
=====================================================================
源代码:
//P1.0---------Red Led
//P1.3---------Button
//P1.6---------Green Led
#include “msp430g2553.h”
//名称:delay(int time)
//功能:延时程序
void delay(int TIme)
{
staTIc int i,j;
for(i=0;i
for(j=0;j《100;j++)
{
}
}
//名称:InitLed()
//功能:初始化LED
void InitLed()
{
P1DIR |= BIT0+BIT6;//设置BIT0和BIT6为输出
P1OUT &= ~0x01; //设置BIT0和BIT6低电平
P1OUT |= 0x40; //设置BIT0和BIT6低电平
}
//名称:IniTIOInterrupt()
//功能:初始化P1的按键中断配置
void IniTIOInterrupt()
{
P1DIR &= ~BIT3;//设置P1.3为输入
P1REN |= BIT3;//启用P1.3电阻
P1OUT |= BIT3;//设置上拉电阻
P1IES |= BIT3;//P1.3中断边缘选择
P1IE |= BIT3;//P1.3中断使能
P1IFG = 0x00;//清除中断标识
}
//名称:PORT1_ISR(void)
//功能:按键中断的处理函数
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
delay(100);//约100ms
P1OUT ^= (1《《6);
P1OUT ^= (1《《0);
P1IFG = 0;//清除中断标识
}
int main( void )
{
WDTCTL = WDTPW + WDTHOLD;
InitLed();//初始化LED端口
InitIOInterrupt();//初始化IO中断
_EINT();//开总中断
while(1);
return 0;
}
史海拾趣
|
WinCE5.0上如何编程设置任务栏"总在最前","自动隐藏","显示时间"的启用或停用? 如题,主要是想让任务栏不要总在最前,全屏程序. 并非想要直接ShowWindow(hTaskBarWnd, SW_HIDE)隐藏(这样打开\"最大化\"窗口时不能最大化,下面原来任务栏的地方是空白); 试过修改注册表并SendMessage(hTaskBarWnd, WM_COMMAND, 0x3EA, 0),实际并没 ...… 查看全部问答> |
|
例如 已经定义好了 #define U0IIR (*((volatile unsigned char *) 0xE000C008)) 和 #define U1IIR (*((volatile unsigned char *) 0xE00 ...… 查看全部问答> |
|
我的AM3517板子也收到了,刚在迅雷下载了一个“VMWare 7.1.0.261024 绿色精简版.rar”,现正在下载ubuntu9.10正式版,等我把开发平台架设好了就开始分享我的学习心得,显示的问题我准备到淘宝上去淘一个HDMI转VGA或者DVI的转换线,15-18一条,我准 ...… 查看全部问答> |
|
最近在做个上下位机通讯的自定义协议,思路如下: (1)通过状态机的方法分析数据包,提取需要的信息,这部分是采用【USART1中断接收模式】做的。 (2)分析数据包内固定位置的【数据长度】信 ...… 查看全部问答> |
|
#define EALLOW asm(\\" EALLOW\\" #define EDIS asm(\\" EDIS\\" #define ESTOP0 asm(\\" ESTOP0\\" 在上面定义的 指令中,不知道三个汇编指令的含义,还请高手赐教,谢谢!! ...… 查看全部问答> |
|
下载IAR for ARM 6.3(文档推荐的是v6.0以上的版本)---我以前用的是4.2的版本,到IAR的官网重新下载到了。 安装Manley MLink的驱动程序,这个我下载好,先在上传给大家,安装步骤请参考板子的资料FM3-Easy-Kit-manual.pdf文件。不然会出现下图的 ...… 查看全部问答> |




