MSP-EXP430F5529LP配套函数说明

程序:程序代码


//*******************************************************************************//
    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
//*******************************************************************************//

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0X78

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值