MSP430F5529入门(二)按键
本节要实现的效果是按键控制LED灯的亮灭,代码都已经亲自实践可用。
一、I/O配置
所用到的按键从原理图看出是 P1.1和P2.1,所以按照上一章内容先配置端口的寄存器。
二、寄存器配置
话不多说,直接上代码,
#include<msp430.h>
#define CPU_F ((double)1000000) //MSP430低功耗的特点,上电默认主频1MHZ
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//重新定义延时函数
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
int main()
{
WDTCTL = WDTPW | WDTHOLD; // 停止看门狗
P4DIR |= BIT7; //设置P1.0口为输出模式
P4OUT|=BIT7; //初始低电平
P1DIR &=~BIT1;//板载按键s2设为输入
P1REN =BIT1;//上拉电阻,提高稳定性
P1OUT |=BIT1;//设置初始值为高电平
while(1)
{
if(P1IN&BIT1)
{
delay_ms(50);
if(P1IN&BIT1)
P4OUT|=BIT7;
}
else
P4OUT&=~BIT7;
}
}
三、库函数配置
#include "driverlib.h"
#define CPU_F ((double)1000000) //MSP430低功耗的特点,上电默认主频1MHZ
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//重新定义延时函数
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
int main()
{
GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P2, GPIO_PIN1);
GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);
while(1)
{
if(!GPIO_getInputPinValue(GPIO_PORT_P2, GPIO_PIN1))//如果按键S2有输入即按下
{
delay_ms(20);//延时消抖
if(!GPIO_getInputPinValue(GPIO_PORT_P2, GPIO_PIN1))
{
GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);//LED1状态翻转
while(!GPIO_getInputPinValue(GPIO_PORT_P2, GPIO_PIN1));//等待下一次按下
}
}
}
}
四、总结
入门MSP430系列单片机第二课,为电赛准备,同大家一起学习,有问题欢迎一起交流!主要参考这位大佬