程序:程序代码
//*******************************************************************************//
1.点灯(输出)
配置:
GPIO_setAsOutputPin(GPIO_PORT_P1,GPIO_PIN0); //输出模式 设置P1.0模式为输出
控制:
GPIO_setOutputHighOnPin(GPIO_PORT_P1,GPIO_PIN0); // 设置P1.0为高电平
GPIO_setOutputLowOnPin(GPIO_PORT_P6,GPIO_PIN0); // 设置P6.0为低电平
GPIO_toggleOutputOnPin(GPIO_PORT_P1,GPIO_PIN0); // 翻转电平 此处翻转P1.0
//*******************************************************************************//
2.按键(输入)
配置:
GPIO_setAsInputPin( GPIO_PORT_P2 , GPIO_PIN1); //将按键P2.1设置为输入模式
GPIO_setAsInputPinWithPullUpResistor( GPIO_PORT_P2 , GPIO_PIN1); //按键P2.1 配置为上拉 相当于平时都是高电平
GPIO_setAsInputPinWithPullDownResistor( GPIO_PORT_P2 , GPIO_PIN1); //按键P2.1 配置为下拉 相当于平时都是低电平
输入检测:
GPIO_getInputPinValue(GPIO_PORT_P2 , GPIO_PIN1) == GPIO_INPUT_PIN_LOW //此处相当于检查P2.1是否为低电平
GPIO_getInputPinValue(GPIO_PORT_P2 , GPIO_PIN1) == GPIO_INPUT_PIN_HIGH //此处相当于检查P2.1是否为高电平
//*******************************************************************************//
电灯与按键例程 KEY_LED.txt
//*******************************************************************************//
3.按键中断输入(基础中断)
配置:
_EINT(); // 开启全局中断使能
GPIO_selectInterruptEdge(GPIO_PORT_P1, GPIO_PIN1, GPIO_HIGH_TO_LOW_TRANSITION); //高电平变低电平触发 GPIO_HIGH_TO_LOW_TRANSITION //高电平变低电平触发中断
// GPIO_LOW_TO_HIGH_TRANSITION //低电平变高电平触发中断
GPIO_enableInterrupt(GPIO_PORT_P1, GPIO_PIN1); // 允许P1.1引脚中断
//中断处理函数
#pragma vector = PORT1_VECTOR; //PORT1_VECTOR根据 针脚/功能 需更换PORT1_VECTOR
__interrupt void Port1_interrupt_process(void) //名字可自定义 Port1_interrupt_process
{
_DINT(); // 关闭全局中断
if (GPIO_getInterruptStatus(GPIO_PORT_P1, GPIO_PIN1) == GPIO_PIN1);
{
GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);
}
GPIO_clearInterrupt(GPIO_PORT_P1, GPIO_PIN1);
_EINT(); // 开启全局中断
}
#pragma vector = PORT2_VECTOR; //处理p2.x 中的中断
__interrupt void Port2_interrupt_process(void)
{
_DINT(); // 关闭全局中断
if (GPIO_getInterruptStatus(GPIO_PORT_P2, GPIO_PIN1) == GPIO_PIN1)
{
GPIO_toggleOutputOnPin(GPIO_PORT_P4, GPIO_PIN7);
}
GPIO_clearInterrupt(GPIO_PORT_P2, GPIO_PIN1);
if (GPIO_getInterruptStatus(GPIO_PORT_P2, GPIO_PIN5) == GPIO_PIN5)
{
GPIO_toggleOutputOnPin(GPIO_PORT_P6, GPIO_PIN0);
}
GPIO_clearInterrupt(GPIO_PORT_P2, GPIO_PIN5);
_EINT(); // 开启全局中断
}
//*******************************************************************************//
按键中断例程 KEY_LED.txt
//*******************************************************************************//
4.PWM控制
配置:
P1DIR |=BIT2+BIT3+BIT4+BIT5; //配置P1.2,3,4,5口为输出口
//P4DIR |=BIT3;P4OUT |=BIT3;//配置输出口并输出高电平
P1SEL |=BIT2+BIT3+BIT4+BIT5; //开启1.2,3,4,5口的io复用输出pwm
unsigned const PWM=20000;//设置PWM周期参数
TA0CCR0 =PWM; //设置PWM周期
TA0CTL=TASSEL__SMCLK+MC_1; //设置定时器A0采用SMCLK时钟源和增计数模式,查看他们的定义就明白了
TA0CCTL1 = OUTMOD_7; //设置TA0CCR1的PWM的输出模式为7模式
TA0CCTL2 = OUTMOD_7;
TA0CCTL3 = OUTMOD_7;
TA0CCTL4 = OUTMOD_7;
使用:
p1_2 = 2500;
p1_3 = 1200;
p1_4 = 1200;
p1_5 = 1200;
//*******************************************************************************//
pwm例程 sy3_pwn_dj
//*******************************************************************************//
5.串口
配置
a.先导入串口需要的库
b.按库中开始
USART1_Config(); //初始化串口 串口1为USB串口,需去掉跳线帽才能使用
USART0_Config(); //初始化串口 串口0 p3.3(TX) p3.4(RX) 接线即可
_EINT(); // 开启全局中断使能 此处需要接收才使用,不接收注释掉
c.发送信息
//两个都是串口发送,XXX为发送信息
send0_buf("XXX");
send1_buf("XXX");
//寄存器发送,不确定,但适应于发送单个字节
UCA0TXBUF = 0X00;
UCA1TXBUF = 0x00;
//*******************************************************************************//
串口例程 sy4_usart
//*******************************************************************************//
6.IIC OLED
配置:
安装好对应的oled库
#include "oled.h" //引库
MSP_EXP430F5529LP_OLED_Init(); //初始化oled
OLED_ShowChar(u8 x, u8 y, u8 chr, u8 Char_Size); //在指定的坐标(x, y)处显示一个字符,参数chr为要显示的字符,参数Char_Size表示字符的大小。
OLED_ShowString(7,3,"V in",8); //表示在第3行第7列开始显示字符串 "V in" 字符串大小为8
//其余函数使用 见oled.h
//SDA P6.4 SCL P6.3
//VCC 3.3V GND 接地
// 注意:oled需要于单片机相连接
//*******************************************************************************//
IIC oled例程 sy5_IIC_OLED_01
//*******************************************************************************//