2962|0

826

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【TI首届低功耗设计大赛】MSP430 GPIO库函数操作 [复制链接]

之前有使用MDK的经验,在使用了MDK之后慢慢习惯了,在MDK下使用库函数来操作还是不错的,因此使用IAR的时候也想使用库函数操作,MCU太复杂的情况下操作寄存器就非常繁琐了。
在安装了IAR之后可以到如下目录下查找 库例程
D:\Program Files\IAR Systems\Embedded Workbench 7.0\430\examples\examples\MSP430FR5xx_6xx
我的IAR安装目录是在D:\Program Files\目录下,
GPIO是的工程是在
D:\Program Files\IAR Systems\Embedded Workbench 7.0\430\examples\examples\MSP430FR5xx_6xx\gpio
打开gpio.eww,可以看到工程目录,
我不太习惯这样操作,更习惯库操作,把库的文件分配改为我喜欢的格式了,

driverlib主要是驱动文件,user是用户自己编写的文件一般是GPIO INPUT OUTPUT INT UART这类文件  OUTPUT就是输出文件一般没有什么作用,
参考网友的程序,写了一段LED闪烁的代码,__delay_cycles(100000);作用是延时
主程序贴在这里
#include "driverlib.h"

void main(void)
{
    //Stop watchdog timer
    WDT_A_hold(WDT_A_BASE);//失能看门狗定时器

    //Set P1.0 to output direction
    //P1.0 配置为输出模式
    //P1.0=LED2
    GPIO_setAsOutputPin(GPIO_PORT_P1,GPIO_PIN0);

    //Set P4.5 to input direction
    //P4.5设置为输入模式
    //P4.5=KEY按键
    GPIO_setAsInputPin(GPIO_PORT_P4,GPIO_PIN5);
       
    //Enable P4.5 internal resistance as pull-Up resistance
    //P4.5内部电阻设置为上拉电阻
    GPIO_setAsInputPinWithPullUpresistor(GPIO_PORT_P4,GPIO_PIN5);

    //P4.5 interrupt enabled
    //P4.5引脚中断使能
    GPIO_enableInterrupt(GPIO_PORT_P4,GPIO_PIN5);

    //P4.5 Hi/Lo edge
    //P4.5设置为高到低跳变触发中断程序
    //P4.5下降沿产生中断
    GPIO_interruptEdgeSelect(GPIO_PORT_P4,GPIO_PIN5,GPIO_HIGH_TO_LOW_TRANSITION);


    //P4.5 IFG cleared
    //P4.5中断标志位清除
    GPIO_clearInterruptFlag(GPIO_PORT_P4,GPIO_PIN5);

        /*
         * Disable the GPIO power-on default high-impedance mode to activate
         * previously configured port settings
         */
     // 关闭上电端口默认输出高阻抗的功能,使能上电保持起始设置
    PMM_unlockLPM5(PMM_BASE);
        //Enter LPM4 w/interrupt
        //Low Power Mode 4
        //GIE为通用中断允许位
        //GIE=1开全部中断
        //__bis_SR_register(LPM4_bits + GIE);
        GPIO_setOutputLowOnPin(GPIO_PORT_P1,GPIO_PIN0);
        GPIO_setOutputHighOnPin(GPIO_PORT_P1,GPIO_PIN0);               

        //GPIO_INPUT_PIN_HIGH
        //
    while (1)
        {       
                //if (GPIO_INPUT_PIN_HIGH== GPIO_getInputPinValue(GPIO_PORT_P4,GPIO_PIN5))
                //{
                //        //else reset
                //        GPIO_setOutputLowOnPin(GPIO_PORT_P1,GPIO_PIN0);               
                //}
                //else
                //{
                //        //if P1.4 set, set P1.0
                //        GPIO_setOutputHighOnPin(GPIO_PORT_P1,GPIO_PIN0);
                //}
                GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0); //翻转LED2
            __delay_cycles(100000); // 该本征函数在 intrinsics.H 里:意思是延时 __cycles 个机器周期
                        // 经测试LED的闪烁频率为4.985HZ,所以这个延时函数接近延时了0.1s
        }
}
工程文件上传 gpio_led_flash.rar (4.26 MB, 下载次数: 10)




 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表