第一篇 利用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还是比较方便。
|