MSP430 G2553 LaunchPad GPIO中断
P1、P2端口上的每个管脚都支持外部中断。P1端口的所有管脚都对应同一个中断向量(Interrupt Vector),类似的,P2端口的所有管脚都对应另一个中断向量;通过PxIFG寄存器来判断中断来源于具体哪个管脚。
相关的寄存器如下表所示。
Register | Short Form | Register Type | Initial State |
Interrupt Flag | PxIFG | Read/write | Reset with PUC |
Interrupt Edge Select | PxIES | Read/write | Unchanged |
Interrupt Enable | PxIE | Read/write | Reset with PUC |
PxIFG:中断标志,1表示有中断事件待处理
PxIES:中断边沿选择,0表示上升沿触发,1表示下降沿触发
PxIE:GPIO中断使能,0表示禁用,1表示使能
程序示例
利用板上S2按键控制LED1灯闪烁,每按下一次,LED1灯闪烁一次。该程序还缺少按键消抖的功能。(G2 LaunchPad Rev1.5上P1.3没有连接电容及上拉电阻)
#include "io430.h" #define LED1 BIT0
#define PUSH2 BIT3 //function declarations
void delay(void); void main(void)
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD; //set P1.3 to input with pullup
P1OUT = ;
P1OUT |= PUSH2; //initialize the pullup state
P1REN |= PUSH2; //enable internal pullup //set P1.0 to output
P1DIR |= LED1; //P1.0 out to LED1, P1.3 remains input for PUSH2 button //set the interrupt registers
P1IES |= PUSH2; //select high -> low transition
P1IFG &= ~PUSH2; //clear the flag for P1.3 before enabling the interrupt,
// to prevent an immediate interrupt
P1IE |= PUSH2; //enable interrupt for P1.3 __enable_interrupt(); //turn on the interrupts while()
{
} } void delay(void)
{
volatile unsigned int i;
for(i = ; i < ; i++);
} //interrupt service routines
#pragma vector = PORT1_VECTOR
__interrupt void P1_ISR(void)
{
if((P1IFG & PUSH2) == PUSH2)
{
P1IFG &= ~PUSH2; //clear the interrupt flag P1OUT |= LED1; //turn on LED1
delay();
P1OUT &= ~LED1; //turn off LED1
}
else
{
P1IFG = ;
}
}
MSP430 G2553 LaunchPad GPIO中断的更多相关文章
- MSP430 G2553 LaunchPad设置GPIO
一. 背景知识:逻辑运算符的使用 当程序初始化时,对于复位状态有不确定性的寄存器(如PxOUT),建议采用直接赋值:其他情况下最好使用逻辑运算符修改寄存器. 直接赋值 REGISTER = 0b111 ...
- MSP430 G2553 Launchpad实现电容测量
一.基本原理 对于Source-Free RC电路,其电容放电的特性可以描述为: 其中V0是电容的初始电压,t是放电时间,R是串接的电阻阻值,C是电容值,v(t)是t时刻电容上的电压.因此,若已知V0 ...
- 在xilinxFPGA上使用microblaze及自写GPIO中断
很久很久没有更新过博客了,今天来扒一扒FPGA上CPU软核的使用. 主要完成的功能:使用的开发板是nexys 4 DDR,板上有16个switch以及16个LED,需要完成microblaze对led ...
- LPC1788的外部中断和GPIO中断
首先是gpio中断,这一点和1768不同,1768使用的中断时和eint3共用中断通道,到了1788,专门为gpio开辟了中断 #ifndef __JOYPAD_H_ #define __JOYPAD ...
- LPC1768外部中断与GPIO中断
LPC1768的外部中断严格来说只有四个,分别是EINT0,EINT1,EINT2,EINT3,技术手册上有如下说明 控制这四个外部中断靠以下寄存器 这三个寄存器的0 1 2 3位分别代表中断的0 1 ...
- esp8266 SDK开发之GPIO中断
先秀一下自己焊的板子,黑的开关用于复位,蓝的开关用于烧录程序. 首先要明确的是esp8622的大多数管脚都有多个功能, 比如可以用来当做GPIO管脚,还可以用来当做SPI管脚. 如下图所示 使用PIN ...
- TI-RTOS 之 GPIO中断(按键)
TI-RTOS 之 GPIO中断(按键) 前面已经用过LED, 定时器,这次来了解GPIO的中断是怎么用的,从CC1310+TI-RTOS的例程可以直接找到相应的例子程序,它的关键是在于要使能中断,也 ...
- MSP430 G2553 Timer 中断总结
目前总共用到了四个中断向量,我觉得已经把G2553的所有定时器中断都用到了. 定时器有两个,TA0与TA1,每个定时器又有两个中断向量 1,CCR0到达时的中断,在计数模式时候很有用,平时定时器的基本 ...
- MSP430 G2553 计时/计数器 Timer_A
MSP430G2553包含了两个16-bit Timer_A计时/计数器.本文简单介绍了Timer_A的功能和寄存器使用,本文及后续的随笔部分参考了"Scientific Instrumen ...
随机推荐
- Executors中的几种线程调用方式
一.Executors是java5以后提供的一套api,使用跟上面非常方便.Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线 ...
- 给iOS开发新手送点福利,简述UIAlertView的属性和用法
UIAlertView 1.Title 获取或设置UIAlertView上的标题. 2.Message 获取或设置UIAlertView上的消息 UIAlertView *alertView = [[ ...
- Python-第三方库requests
Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,从而使得Pythoner进行网络请求时,变得 ...
- Ubuntu 安装VNC
ubuntu:.安装x11vnc sudo apt-get install x11vnc .设置密码 x11vnc -storepasswd .启动x11vnc(每次windows远程控制,都需要启动 ...
- 串口通信,帧与帧之间的时间间隔问题?9600波特率,帧将各在20ms以上
- leetcode395
分治法. public class Solution { private int LongestSubstringSub(string s, int k, int start, int end) { ...
- VB指针操作和消息钩子
二.VB怎么用指针 要想弄明白VB怎么使用指针,就必须要弄明白两件事,第一,如何取得数组的指针,第二,如何将指针所指向的数组取出来. A.在讲解这两个问题之前,我们需要了解几个 ...
- gorm中自己写sql的方法实现
type Result struct { Total int } var result Result //当天修改作业的总时间:分钟 dao.DB(dao.HomeworkTable).Raw(&qu ...
- Template7学习记录
来源:http://idangero.us/template7/#.V2iXqJGF6Ul 测试用json数据: var jsonData = { people: [ { firstName: 'Jo ...
- sqlserver 开窗函数Over()的使用
利用over(),将统计信息计算出来,然后直接筛选结果集 declare @t table(ProductID int,ProductName varchar(20),ProductType varc ...