您现在的位置: 主页 > MCU > 单片机技术应用 > cortex m0 lpc1114 RIS寄存器 -
本文所属标签:
为本文创立个标签吧:

cortex m0 lpc1114 RIS寄存器 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

[导读]这一节,介绍如何利用读取RIS寄存器检测引脚上的高低电平变化。新建一个工程,结构如下图所示:在main.c文件中,输入以下代码:#include “LPC11XX.H”#define LED1_ON LPC_GPIO1->DATA &= ~(1

这一节,介绍如何利用读取RIS寄存器检测引脚上的高低电平变化。

本文引用地址: http://www.21ic.com/app/mcu/201807/784395.htm

新建一个工程,结构如下图所示:

在main.c文件中,输入以下代码:

#include “LPC11XX.H”

#define LED1_ON LPC_GPIO1->DATA &= ~(1<<0)

#define LED1_OFF LPC_GPIO1->DATA |= (1<<0)

#define LED2_ON LPC_GPIO1->DATA &= ~(1<<1)

#define LED2_OFF LPC_GPIO1->DATA |= (1<<1)

#define KEY1_DOWN (LPC_GPIO1->DATA&(1<<9))!=(1<<9)

#define KEY2_DOWN (LPC_GPIO1->DATA&(1<<10))!=(1<<10)

void led_init()

{

LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16); // 使能IOCON时钟

LPC_IOCON->R_PIO1_0 &= ~0x07;

LPC_IOCON->R_PIO1_0 |= 0x01; //把P1.0脚设置为GPIO

LPC_IOCON->R_PIO1_1 &= ~0x07;

LPC_IOCON->R_PIO1_1 |= 0x01; //把P1.1脚设置为GPIO

LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16); // 禁能IOCON时钟

LPC_GPIO1->DIR |= (1<<0); // 把P1.0设置为输出引脚

LPC_GPIO1->DATA |= (1<<0); // 把P1.0设置为高电平

LPC_GPIO1->DIR |= (1<<1); // 把P1.1设置为输出引脚

LPC_GPIO1->DATA |= (1<<1); // 把P1.1设置为高电平

}

int main()

{

led_init();

while(1)

{

if((LPC_GPIO1->RIS&(1<<9))==(1<<9)) // 读取RIS寄存器

{

LED1_ON;

while(KEY1_DOWN);

LED1_OFF;

LPC_GPIO1->IC = 0XFFF; // 清RIS状态位

}

if((LPC_GPIO1->RIS&(1<<10))==(1<<10)) // 读取RIS寄存器

{

LED2_ON;

while(KEY2_DOWN);

LED2_OFF;

LPC_GPIO1->IC = 0XFFF; // 清RIS状态位

}

}

}

与上一节DATA的程序相比,重点在第26和33行,这里是读取RIS寄存器,来判断引脚上的电平高低。RIS寄存器是原始中断状态寄存器,只要有IS、IBE、IEV寄存器中设置的中断方式产生,就会使得RIS位置1,由IS、IBE、IEV寄存器的默认值可以看出,引脚为下降沿中断,所以当按键按下,产生低电平,RIS对应位就会置1。还有一点需要注意的是,RIS寄存器需要软件清0,如第31行和第38行。




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > cortex m0 lpc1114 RIS寄存器 -
 

"cortex m0 lpc1114 RIS寄存器 -"的相关文章

网站地图

围观()