1)系统初始上电状态:LED1常亮、LED2亮起红色。 (2)S1为D1的控制按键,单击有效(按下生效)。单击后LED1状态发生翻转。 (3)S2为D2的控制按键,单击有效(松开生效)。每次单机后LED2颜色变化,LED2的颜色按照绿→红→蓝→黄→白的顺序循环(白色状态后重新回到红色)。 S1与S2同时长按3s,松开按钮后,LED1、LED2恢复初始状态。在msp432上实现上述要求的代码
时间: 2023-12-14 21:37:04 浏览: 21
以下是在MSP432上实现上述要求的代码,包括初始化和中断处理程序:
```c
#include "msp.h"
#define RED BIT0 //定义红色LED1
#define GREEN BIT1 //定义绿色LED2
#define BLUE BIT2 //定义蓝色LED2
#define YELLOW (RED | GREEN) //定义黄色LED2
#define WHITE (RED | GREEN | BLUE) //定义白色LED2
void init(void);
void PORT1_IRQHandler(void); //中断处理程序
volatile int LED1_state = 1; //LED1状态
volatile int LED2_state = 0; //LED2状态
void main(void)
{
init();
while(1);
}
void init(void)
{
WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD; //停用看门狗
P1->DIR |= RED; //设置LED1为输出
P2->DIR |= RED | GREEN | BLUE; //设置LED2为输出
P1->OUT |= RED; //初始LED1常亮
P2->OUT |= RED; //初始LED2为红色
P1->REN |= BIT1 | BIT2; //使能P1.1和P1.2内部上拉电阻
P1->OUT |= BIT1 | BIT2; //将P1.1和P1.2设置为上拉输入模式
P1->IES |= BIT1 | BIT2; //设置P1.1和P1.2为下降沿触发中断
P1->IFG &= ~(BIT1 | BIT2); //清除P1.1和P1.2的中断标志
P1->IE |= BIT1 | BIT2; //使能P1.1和P1.2的中断
NVIC_ClearPendingIRQ(PORT1_IRQn); //清除P1中断挂起标志位
NVIC_EnableIRQ(PORT1_IRQn); //使能P1中断
}
void PORT1_IRQHandler(void)
{
if (P1->IFG & BIT1) //判断是否是S1中断
{
P1->IFG &= ~BIT1; //清除S1中断标志
LED1_state = !LED1_state; //翻转LED1状态
if (LED1_state == 1)
P1->OUT |= RED; //LED1常亮
else
P1->OUT &= ~RED; //关闭LED1
}
if (P1->IFG & BIT2) //判断是否是S2中断
{
P1->IFG &= ~BIT2; //清除S2中断标志
LED2_state = (LED2_state + 1) % 5; //循环改变LED2状态
switch (LED2_state)
{
case 0:
P2->OUT = RED; //红色
break;
case 1:
P2->OUT = GREEN; //绿色
break;
case 2:
P2->OUT = BLUE; //蓝色
break;
case 3:
P2->OUT = YELLOW; //黄色
break;
case 4:
P2->OUT = WHITE; //白色
break;
default:
break;
}
}
if (P1->IFG & BIT1 && P1->IFG & BIT2) //判断是否是S1和S2同时长按
{
P1->IFG &= ~(BIT1 | BIT2); //清除S1和S2的中断标志
LED1_state = 1; //LED1常亮
LED2_state = 0; //LED2为红色
P1->OUT |= RED; //LED1常亮
P2->OUT = RED; //LED2为红色
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![apk](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)