关于lm3s811代码全解析.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《关于lm3s811代码全解析.pdf》由会员分享,可在线阅读,更多相关《关于lm3s811代码全解析.pdf(118页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、*注:未指明返回值的函数为无返回值,资源来自周立功单片机网站一:GPIO函数1:void GPIODirModeSet(unsigned long ulPort,unsigned char ucPins,unsigned long ulPinlO)设置所选GPIO端口指定管脚的方向和模式如 GPIODirModeSe(GPIO_PORTA_BASE,GPIO_PIN_2,GPIO_DIR_MODE_IN)函数设置PA2为输入,但第三个参数为KGPIO_DIR_MODE_HW/硬件控制”时指此管脚启用第二功能;2:unsigned long GPIODi rModeGet(unsigned lo
2、ng ulPort,unsigned charucPin)获取所选GPIO端口指定管脚的方向和模式如 unsigned long SetValue=GPIODirModeGet(GPIO_PORTA_BASE,GPIO_PIN_2);返回PA2脚的方向和模式,返回的值为上一个函数第三个参数的取值,分别为GPIO-DIR_MODE_IN/输入方向GPI0-DIR-M0DE_0UT/输出方向GPI0_DIR_M0DE_HW/硬件控制3:void GPIOPadConfigSet(unsigned long ulPort,unsigned char ucPins,unsigned long ulSt
3、rength,unsigned long ulPadType)设置所选GPIO端口指定管脚的驱动强度和类型如 GPIOPadConfigSet(GPIO_PORTA_BASE,GPIO-PIN.2,GPIO-STRENGTH_4MA,GPIO-PIN_TYPE_STD)设置 PA2 脚的驱动强度为 4MA 的推挽输出;ulStrength:指定输出驱动强度,应当取下列值之一:GPI0-STRENGTH_2MA/GPI0.STRENGTH_4MA/GP10_STRENGTH_8MA/GPI0_STRENGTH_8MA_SC2mA驱动强度4mA驱动强度8mA驱动强度/带转换速率(Slew Rate
4、)控制的8mA驱动ulPadType:指定管脚类型。应当取下列值之一:GPTO-PIN_TYPE_STD/推挽GPIO-PIN-TYPE-STD-WPU/带弱上拉的推挽GPIO_PIN_TYPE_STD_WPD/带弱下拉的推挽GPIO_PIN_TYPE_OD/开漏GPIO-PIN-TYPE-OD-WPU/带弱上拉的开漏GPIO_PIN-TYPE-OD_WPD/带弱下拉的开漏GP1O_PIN_TYPE_ANALOG/模拟比较器4:void GPIOPadConfigGet(unsigned long ulPort,unsigned char ucPin,unsigned long*pulStre
5、ngth,unsigned long*pulPadType)获取所选GPIO端口指定管脚的配置信息如 GPIOPadConfigGet(GPIO-PORTA-BASE,GPIO-PIN_2,pulStrength,pulPadType);输出驱动强度信息保存到pulStrength指向的地址中,输出驱动类型信息保存到pulPadType指向的地址中,返回的值为上一个函数设置的内容。5:void GPIOPinTypeGPIOInput(unsigned long ulPort,unsigned charucPins)设置所选GPIO端口指定的管脚为高阻输入模式如 GPIOPinTypeGPIO
6、Input(GPIO-PORTA.BASE,GPIO-PIN.2);设置 PA2 脚为高阻输入模式6:void GPIOPinTypeGPIOOutput(unsigned long ulPort,unsigned charucPins)设置所选GPIO端口指定的管脚为推挽输出模式如 GPIOPinTypeGPIOOutput(GP1O_PORTA_BASE,GP1O_PIN_2)设置 PA2 脚为推挽输出模式7:void GPIOPinTypeGPIOOutputOD(unsigned long ulPort,unsigned charucPins)设置所选GPIO端口指定的管脚为开漏输出模
7、式如 GPIOPinTypeGPIOOutputOD(GPIO_PORTA_BASE,GPIO_PIN_2)设置 PA2 为开漏输出模式但由于函数5,6,7函数名太长一般做如下简化:#define GPIOPinTypeln GPIOPinTypeGPIOInput#define GPIOPinTypeOut GPIOPinTypeGPIOOutput#define GPIOPinTypeOD GPIOPinTypeGPIOOutputOD8:void GPIOPinTypeADC(unsigned long ulPort,unsigned char ucPins)设置所选GPIO端口指定的管
8、脚为ADC功能这个函数只对有adc功能复用的管脚有用如LM3s811的1,2,3,4脚。9:void GPIOPinTypeCAN(unsigned long ulPort,unsigned char ucPins)设置所选GPIO端口指定的管脚为CAN功能10:void GPIOPinTypeComparator(unsigned long ulPort,unsigned charucPins)设置所选GPIO端口指定的管脚为CAN功能11:void GPIOPinTypeComparator(unsigned long ulPort,unsigned charucPins)设置所选GPIO
9、端口指定的管脚为模拟比较器功能12:void GPIOPinTypeI2C(unsigned long ulPort,unsigned char ucPins)设置所选GPIO端口指定的管脚为12c功能13:void GPIOPinTypePWM(unsigned long ulPort,unsigned char ucPins)设置所选G P I O端口指定的管脚为P W M功能1 4:v o i d G P I O P i n Ty p e Q E I(u n s i g n e d l o n g u l P o r t,u n s i g n e d c h a r u c P i n
10、 s)设置所选G P I O端口指定的管脚为Q E I功能1 5:v o i d G P I O P i n Ty p e S S I (u n s i g n e d l o n g u l P o r t,u n s i g n e d c h a r u c P i n s)设置所选G P I O端口指定的管脚为S S I功能1 6:v o i d G P I O P i n Ty p e Ti m e r (u n s i g n e d l o n g u l P o r t,u n s i g n e d c h a r u c P i n s)设置所选G P I O端口指定的管脚
11、为Ti m e r的C C P功能 1 7:v o i d G P I O P i n Ty p e U A R T(u n s i g n e d l o n g u l P o r t,u n s i g n e d c h a r u c P i n s)设置所选G P I O端口指定的管脚为U A R T功能1 8:v o i d G P I O P i n Ty p e U S B D i g i t a l (u n s i g n e d l o n g u l P o r t,u n s i g n e d c h a ru c P i n s)设置所选G P I O端口指定的
12、管脚为U S B数字功能对G P I O管脚的读写操作是通过函数G P I O P i n W r i t e()和G P I O P i n R e a d()实现的,这是两个非常重要而且很常用的库函数。1 9:v o i d G P I O P i n W r i t e (u n s i g n e d l o n g u l P o r t,u n s i g n e d c h a r u c P i n s,u n s i g n e d c h a r u c V a 1);向所选G P I O端口的指定管脚写入一个值,以更新管脚状态,u c V a l:写入指定管脚的值注:u
13、c P i n s指定的管脚对应的u c V a l当中的位如果是1,则置位相应的管脚,如果是0,则清零相应的管脚;u c P i n s未指定的管脚不受影响。如 G P I O P i n W r i t e(G P I O-P O R TA _ B A S E,G P I O-P I N.3,0 x 0 0);/清除 P A 3G P I O P i n W r i t e(G P I O _ P O R TB _ B A S E,G P I O P i n W r i t e(G P I O _ P O R TD _ B A S E,时置位P D 2、P D 6G P TO P i n
14、W r i t e(G P I O-P O R TA _ B A S E,P A 0-P A 72 0:l o n g G P I O P i n R e a d (u n s i g n e dG P I O _ P I N _ 5,O x F F);/置位 P B 5G P I O-P I N-2|G P I O-P I N _ 6,O x F F);/同O x F F,u c D a t a);/变量 u c D a t a 输出到l o n g u l P o r t,u n s i g n e d c h a r u c P i n s)读取所选G P I O端口指定管脚的值,返回1
15、个位组合的字节。该字节提供了由u c P i n s指定管脚的状态,对应的位值表示G P I O管脚的高低状态。u c P i n s未指定的管脚位值是0。返回值已强制转换为l o n g型,因此位3 1:8应该忽略。这个函数应该在相应管脚已经设置为输出状态的情况下,由于G P I O得管脚结构我们知道在输出模式下,不管是开漏还是推挽用此函数读回来的值都是管脚的输出锁存值,如/读取P A4,返回值保存在u c Da t a里,可能的值是0 x 0 0或0 x 10u c Da t a =GP I O P i n R e a d(GP I O _ P O R T A_ BAS E,GP I 0
16、_ P I N_ 4);/同时读取P B1、P B2和P B6,返回P B L P B 2和P B6的位组合保存在u c Da t a里ucData=GPIOPinRead(GPIO-PORTB.BASE,GPIO-PIN.l|GPIO-PTN.2 IGPIO-PIN-6);/读取整个PF端口ucData=GPIOPinRead(GPIO-PORTF.BASE,OxFF);在S t e lla r is系 列ARM里,每 个GPIO管脚都可以作为外部中断输入。中断的触发类型分为边沿触发和电平触发两大类,共5种,用起来非常灵活。配置GPIO管脚的中断触发方式可以通过调用函数GPIOIntType
17、Set()来实现,函数GPIOlntTypeGet()用来获取配置情况。函数GPIOPinlntEnable()和GPIOPinIntDisable()用来使能和禁止GPIO管脚中断。函数GPIOPinIntStatus()用来获取GPIO管脚的中断状态.在同一个GPIO端口上,8个GPIO管脚的中断向量都是共用的。如果同时配置了同一端口上的多个管脚中断,则可以先利用函数GPIOPinIntStatus()读取中断状态,再进一步确认具体是哪个管脚产生的中断请求。函数GPIOPinIntClear()用来及时清除GPIO管脚的中断状态。函GPIOPortIntRegister()用来注册一个GP
18、IO端口中断服务函数,而注销的方法是调用函数GPlOPortlntUnregister()。2012CSDN网站六大类职位火热招聘中!点击了解英特尔云计算2012年1月当选微软MVP的CSDN会员名单揭晓!Im3s811学习笔记(四)gpio分类:cortex m32011-08-03 15:24295人阅读评论(0)收藏举报今天主要是熟悉下gp io的一些应用。最简单的就是LED灯的控制。下面的例子就拿L5来说明吧。SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);/enable gpio bGPIOPinTypeGPIOOutput(GPIO-PORT
19、B-BASE,GPIO-PIN-O);/set PBO output还有一种模式设置的方法 GPIODirModeSet(GPIO_PORTB_BASE,GPIO_PIN_0,GPIO_DIR_MODE_OUT);/这个方案可以设置多个引脚,参数2为位引脚的或控制LED灯地亮灭,就是往引脚写入值ledstatus=GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_0);GPIOPinWr i te(GPIO-PORTD.BASE,GPIO-PIN_0,GPIO-PIN_0&Cledstatus);上面的程序是读取L5对应管脚的值,然后使灯地状态进行翻转。这里说下GPIO
20、PinWriteO该函数的用法。GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_1,GPIO_PIN_1);GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_1,_GPIO_PIN_1);例程上常用上面的方法。主要也就是你要让哪个管脚置一,参数3的值中管脚对应的位必须置一。如下各条指令都能点亮响应端口(假设已经都定义成输出了)。GPIOPinWrite(GPIO-PORTD-BASE,GPIO-PIN-O,1);GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_1,2);GPIOPinWrite(GPIO-PORT
21、D.BASE,GPIO-PIN.2,4);GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_3,8);GPIOPinWrite(GPIO-PORTD.BASE,GPIO-PIN.4,0 x10);GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_5,0 x20);GPIOPinWrite(GPIO-PORTD.BASE,GPIO-PIN.6,0 x40);GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_7,0 x80);下面我主要讲述下键控LED的流程,其实就是利用按键中断控制灯的亮灭。首先是配置KEY。SysCt
22、lPeripheralEnable(SYSCTL_PERIPH_GPIOC);/Enable GPIO CGPIOPinIntEnable(GPIO-PORTC-BASE,GPIO-PIN.4);/Enable GPIO C pin 4GPIOPinTypeGPIOInput(GPIO_PORTC_BASE,GPI0_PIN_4);/set the pin mode isinputGPIOIntTypeSet(GPIO-PORTC-BASE,GPIO_PIN_4,GPIO_LOW_LEVEL);/setinterrupt type is low Falling edgeIntEnable(IN
23、T-GPIOC);/enable GPIO C interrupt下面是按键中断的处理函数void userkey-handler(void)(unsigned char ucVal;unsigned long ulStatus;ulStatus=GPIOPinlntStatus(GPIO_PORTC_BASE,true);/get gpio cinterrupt statusGPIOPinlntClear(GPIO_PORTC_BASE,ulStatus);/clear interrupt statusif(ulStatus&GPIO-PIN_4)/如果 K EY 的中断状态有效ucVal
24、=GPIOPinRead(GPIO-PORTD_BASE,GPIO_PIN_0);/翻转 LEDGPIOPinWr ite(GPIO-PORTD_BASE,GPIO-PIN-O,ucVal);Sy sCtl Del ay(1 0 *(Sy sCtICl o ck Get 0 /3 0 0 0);/延时约)0 m s,消除按键抖动whil e(GPIOPinRead(GPIO-PORTC.BASE,GPIO_PIN_4)=0 x 0 0);/等待 KEY抬起Sy sCtl Del ay(1 0 *(Sy sCtICl o ck Get 0 /3 0 0 0);/延时约 1 0 m s,消除松键抖
25、动)既然用到了 Sy sCtl Del ay O函数。在这里也顺道分析下。#if defined(ewar m)|def ined(DOXYGEN)iar 环境下vo idSy sCt1 De l ay (unsigned l o ng ul Co unt)(_asm(subs r O,#l nHbne.n Sy sCtl Del ay nnbx l rH);)#endif#if defined(co der ed)I I defined(gcc)I I defined(so ur cer y gx x)/co der ed.gcc、so ur cer y gcc 环境下vo id-.attr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关于 lm3s811 代码 解析
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内