您的位置:首页 > 其它

LM3S的GPIO操作相关库函数

2012-03-30 16:46 399 查看
LM3S的GPIO操作相关库函数

1.内核时钟设置
SysCtlClockSet
2.片上设备时钟使能
SysCtlPeripheralEnable
3.GPIO设置
GPIODirModeSet/Get           // Param3:1.输入(数字、模拟) 2.输出(数字) 3.硬件决定(数字第二功能)
GPIOPadConfigSet/Get         // Param2:1.驱动强度(数字、模拟)
// Param3:1.推挽/开漏(数字)  2.模拟功能(模拟)
注:上述两个函数被封装成了以下函数做简化
GPIOPinTypeGPIOInput          //输入、2mA、推挽_GPIO
GPIOPinTypeGPIOOnput          //输出、2mA、推挽_GPIO
GPIOPinTypeGPIOOutputOD       //输出、2mA、开漏_GPIO

GPIOPinTypeADC             //输入、2mA、模拟_ADC
GPIOPinTypeComparator      //输入、2mA、模拟_比较器
GPIOPinTypeCAN                //硬件、8mA、推挽_CAN
GPIOPinTypeEthernetLED        //硬件、8mA、推挽_以太网LED
GPIOPinTypeI2C                //硬件、2mA、开漏弱上拉_I2C
GPIOPinTypeI2S                //硬件、2mA、推挽_I2S
GPIOPinTypePWM                //硬件、2mA、推挽_PWM
GPIOPinTypeQEI                //硬件、2mA、推挽弱上拉_QEI
GPIOPinTypeSSI                //硬件、2mA、推挽_SSI
GPIOPinTypeTimer              //硬件、2mA、推挽_Timer
GPIOPinTypeUART               //硬件、2mA、推挽_Uart
GPIOPinTypeUSBDigital         //硬件、2mA、推挽_USB
4 IO口读写
GPIOPinRead/Write                   //Pin数据读写

..\..\driverlib_lm3s;..\..\INC_lm3s
G:\Keil\ARM\driverlib_lm3s\rvmdk\DriverLib.lib
------------------------------------------------------------
GPIO用作中断的操作流程

1.系统时钟配置        SysCtlClockSet
2.GPIO设备时钟打开    SysCtlPeripheralEnable

3.Pin脚功能设置        GPIOPinTypeInput

4.Pin脚中断触发模式设置    GPIOIntTypeSet          //0.片内外设中断模式配置

5.Pin脚中断允许        GPIOPinIntEnable        //1.使能片内外设的具体中断
6.内设中断允许               IntEnable       //2.使能片内外设的总中断
7.MCU总中断允许        IntMasterEnable         //3.使能MCU的总中断

中断服务程序
1.读取中断源        GPIOPinIntStatus
2.清除中断源        GPIOPinIntClear    //M3的内核中断,不需要手动清除
3.功能操作                                 自定义功能

//***********
1.中断模式设置
2.外设具体中断使能
3.外设总中断使能
4.MCU总中断使能

----------------------------------------------------------------
UART的操作流程
1.系统时钟配置        SysCtlClockSet
2.GPIO设备时钟打开                  SysCtlPeripheralEnable
3.UART设备时钟打开        SysCtlPeripheralEnable
4.GPIO复用引脚设定为Tx和Rx    GPIOPinTypeUART
5.1UART工作参数配置    UARTConfigSetExpClk
[5.2] 若使用UART中断模式,则需配置
5.2.1 Tx和Rx引脚中断允许    UARTIntEnable
5.2.2 UART功能启动            UARTEnable
5.2.3 内设中断允许              IntEnable
6.UART收发
6.1 Block模式: (将NoBlock模式的4个函数封装成2个)
直接发送字符     UARTCharPut
直接接收字符       UARTCharGet
6.2 NoBlock模式:(使用FIFO)
等待Rx_FIFO有数据   UARTCharsAvail
等待Tx_FIFO有数据   UARTSpaceAvail
Block发送字符          UARTCharPutNonBlocking
Block接收字符           UARTCharGetNonBlocking (注:使用此函数,必须先查询UARTCharsAvail)
6.3 INT模式:(中断服务函数)
UART中断清除        UARTIntClear
使用Block/NoBlock模式发送和接收字符

----------------------------------------------------------------
PWM的操作流程
1.系统时钟设置            SysCtlClockSet
2.PWM模块时钟设置        SysCtlPWMClockSet

3.GPIO设备时钟打开        SysCtlPeripheralEnable
4.PWM模块时钟打开        SysCtlPeripheralEnable

5.GPIO设置为硬件指定(PWM)    GPIOPinTypePWM
6.Pin脚配置为PWM功能        GPIOPinConfigure

7.PWM发生器计数模式设置        PWMGenConfigure
8.PWM发生器周期设置        PWMGenPeriodSet
9.PWM发生器脉宽设置        PWMPulseWidthSet

10.PWM输出管脚使能        PWMOutputState
11.PWM启动            PWMGenEnable

----------------------------------------------------------------
SysTick的操作流程
1.系统时钟设置            SysCtlClockSet

2.SysTick周期设置        SysTickPeriodSet//减法计数器,归零后自动重装
3.SysTick启动            SysTickEnable

4.MCU总中断开启                 IntMasterEnable

5.SysTick中断服务函数
void SysTick_ISR()
{
//SysTick是系统内设,硬件自动清除中断,无须手动清除
....//功能代码
}

-------------------------------------------------------------
Timer的操作流程
32bit 定时器
32bit RTC定时器
16bit 定时器
16bit 捕获器(边沿计数:计算有几个边沿;边沿定时:计算前后边沿的时间差)
16bit PWM

1.系统时钟设置            SysCtlClockSet
2.片上设备时钟使能        SysCtlPeripheralEnable

3.定时器工作模式设置        TimerConfigure
4.定时器载入值设置        TimerLoadSet

5.定时器中断使能        TimerIntEnable
6.外设中断总使能        IntEnable
7.MCU总中断使能            IntMaskEnable

8.定时器启动            TimerEnable

Timer中断服务函数
void Timer_ISR()
{
//手工清除中断状态
TimerIntClear();
...//功能代码
}

-----------------------------
ADC操作流程

1.系统时钟设置            SysCtlClockSet
2.ADC所在GPIO外设时钟打开        SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
3.IO口配置为ADC功能            GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_3);
4.ADC外设时钟打开            SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC);
5.ADC采样序列配置            ADCSequenceConfigure(ADC0_BASE, 3, DC_TRIGGER_PROCESSOR, 0);
6.ADC采样序列步进配置        ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_CH0 | ADC_CTL_IE | ADC_CTL_END);

// 启动AD的采样序列发生器3
ADCSequenceEnable(ADC0_BASE, 3);

// 清除中断标志
ADCIntClear(ADC0_BASE, 3);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: