[经验] 【TI首届低功耗设计大赛】如何利用IAR底层驱动操作GPIO

拿到板子后,楼主我摸索了好几天,始终不知道这底层驱动怎么玩,后来无奈之下,只好用IAR来开发金刚狼了。
第一篇 利用IAR提供的底层驱动来实现IO口的基本控制。
1.1 输出高、底电平
首先打开IAR,接着
 
接下来就建立一个空的文档。
这个工程里面,包含了所有的芯片底层驱动,串口,日历,中断,串口等。
  
打开这两个文件就可以学习关于IO口操作的程序了
里面主要有 输出高低电平、反转、I/O口中断等。

在新建的文档下输入:
例程1:
//跑马灯
#include "driverlib.h"
void delay(unsigned int i)
{
  while(i--);  
}

void main(void)
{
        //Stop WDT
        WDT_A_hold(WDT_A_BASE);

        //PA.x output
        GPIO_setAsOutputPin(GPIO_PORT_P1,0x01);            
        GPIO_setAsOutputPin(GPIO_PORT_P4,0x40);                
    /*
         * Disable the GPIO power-on default high-impedance mode to activate
         * previously configured port settings
         */

         PMM_unlockLPM5(PMM_BASE);//不解锁不能操作I/O

        //Set all PA pins HI
           while(1)
          {

             GPIO_setOutputHighOnPin(GPIO_PORT_P1,0x01);            
             GPIO_setOutputHighOnPin(GPIO_PORT_P4,0x40);

             delay(50000);
             GPIO_setOutputLowOnPin(GPIO_PORT_P1,0x01);    
             GPIO_setOutputLowOnPin(GPIO_PORT_P4,0x40);
             delay(50000);
          }
        //Enter LPM4 w/interrupts enabled
      // __bis_SR_register(LPM4_bits + GIE);
        //For debugger
     // __no_operation();
}
例程2:
//按键中断 按S1触发中断,进入中断后LED1反转
#include "driverlib.h"
void main(void)
{
        //Stop watchdog timer
        WDT_A_hold(WDT_A_BASE);

        //Set P1.0 to output direction
        GPIO_setAsOutputPin( GPIO_PORT_P1, GPIO_PIN0 );

        //Enable P1.1 internal resistance as pull-Up resistance
        GPIO_setAsInputPinWithPullUpresistor(GPIO_PORT_P1,GPIO_PIN1);

        //P1.1 interrupt enabled
        GPIO_enableInterrupt( GPIO_PORT_P1,GPIO_PIN1 );

        //P1.1 Hi/Lo edge
        GPIO_interruptEdgeSelect(
                GPIO_PORT_P1,
                GPIO_PIN1,
                GPIO_HIGH_TO_LOW_TRANSITION
                );


        //P1.1IFG cleared
        GPIO_clearInterruptFlag(
                GPIO_PORT_P1,
                GPIO_PIN1
                );

        /*
         * Disable the GPIO power-on default high-impedance mode to activate
         * previously configured port settings
         */
        PMM_unlockLPM5(PMM_BASE);

        //Enter LPM4 w/interrupt
        __bis_SR_register(LPM4_bits + GIE);

        //For debugger
        __no_operation();
}

//******************************************************************************
//
//This is the PORT1_VECTOR interrupt vector service routine
//
//******************************************************************************
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
        //P1.0 = toggle
        GPIO_toggleOutputOnPin(
                GPIO_PORT_P1,
                GPIO_PIN0
                );


        //P1.4 IFG cleared
        GPIO_clearInterruptFlag(
                GPIO_PORT_P1,
                GPIO_PIN1
                );
}

个人感悟:
摸索半天终于,弄明白这些东西了。不是自己的驱动,还是得耐心学。
相对于CCS,IAR还是比较方便。

 

此帖出自微控制器 MCU论坛

如何

1.png (45.12 KB, 下载次数: 0)

1.png

2.png (32.33 KB, 下载次数: 0)

 

2.png

3.png (55.08 KB, 下载次数: 0)

 

3.png

5.png (9.15 KB, 下载次数: 0)

 

5.png

6.png (792 Bytes, 下载次数: 0)

 

6.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值