GPIO编程知识点.docx

上传人:lao****ou 文档编号:602133 上传时间:2024-02-27 格式:DOCX 页数:6 大小:40.43KB
下载 相关 举报
GPIO编程知识点.docx_第1页
第1页 / 共6页
GPIO编程知识点.docx_第2页
第2页 / 共6页
GPIO编程知识点.docx_第3页
第3页 / 共6页
GPIO编程知识点.docx_第4页
第4页 / 共6页
GPIO编程知识点.docx_第5页
第5页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《GPIO编程知识点.docx》由会员分享,可在线阅读,更多相关《GPIO编程知识点.docx(6页珍藏版)》请在第一文库网上搜索。

1、三、GP1O编程寄存器编程模式:GPIO输入输出配置相关寄存器- GPIoX_CR1:端口配置低寄存器- GPIOX_CRH:端口配置盲寄存器- GPioxDR:端口输入寄存器- GPIoX_0DR:端输出寄存器- GPIoX_BSRR:端口位设置/清除寄存器- GPIOx-BRR:端口位清除寄存器- GPIox_1CKR:端口配置锁存寄存器8.2.1 端口配置低寄存器(GPIOX_CR1)(X=A-E)偏移地址:OXOo复位值:0x4444444431302928272625242322212019181716CF71:0YoDE71:01CXF6k01MODE61:01CXF5kOMODE

2、51:01CXF41:01MODE41OrwrwrwrwrwrwrwFWrWrWrWrWrWrWrwrw1514131211109876543210CXF31:O1MODE31:01CXF2kOVODE21:0CXF11:07MODE11:O1CXFOt1rO1MODEO1I:0rwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrw位31:3027:2623:2219:1815:1411:107:63:2CNFy1:0:端口X配置位(y=0.7)(Portconfigurationbits)软件通过这些位酸置相应的I/O端U,请参考表17端口位配置表n在输入模式(MODE1:0=00

3、):00,模拟输入模式01:浮空输入模式(复位后的状态)10:上拉/下拉输入模式11:保留在输出模式(MODE1:000):00,通用推挽输出模式01:逋用开漏输出模式10:复用功能推挽输出模式11:复用功能开漏输出模式位29:2825:2421:2017:1613:129:8,5:41:0MoDEy1:0。端口X的模式位(y=0.7)(PortXmodebits)软件通过这些位M置相应的I/O缱11,请参考表17端口位配置表.00:输入模式(复位后的状态)01:谕出模式,最大速度IOMHZ10:输出模式,最大速度2MHz11输出模式,最大速度50MHZ表17端口位配置表配置模式CNF1CNF

4、OM0DE1MODEOPXoDR寄存器通用输出推挽(PUSh-PUII)00011011见表18。或1开漏(OPen-Drain)1。或1复用功能输出推挽(PUSh-PU1I)10不使用开漏(OPerbDrain)1不使用输入模拟输入0000不使用浮空输入1不使用下拉输入100上拉输入1表18输出模式位MODE1:0意义00保留01最大输出速度为IoMHZ10最大输出速度为2MHz11最大输出速度为50MHZ输入模式下,上拉还是下拉输入由ODR寄存器相应位决定。8.2.3 端口输入数据寄存器(GPIoxDR)(X=A.E)313029282726252423222120191817161/:-

5、1514131211109876543210IDR15IDR14IDR13IDR12IDR11IDR1OIDR9IDR8IDR7IDR6IDR5IDR4IDR3IDR2IDR1IDROrrrrrrrrrrrr位31:16保留,始终读为0位15:0IDRy15:0t端口输入数据(y=0.15)(Portinputdata)这些位为只读并只能以字(1般)的形式读出.读出的值为对应I/O口的状态.8.2.4 端口输出数据寄存器(GPIOX_0DR)(X=A.E)31302928272625242322212019181716保留1514131211109876543210ODR15ODR140DR1

6、30DR12ODR11ODR1O0DR90DR80DR70DR60DR50DR40DR30DR2ODR1ODROrwrwrvrwrwrwrwrwrwrwrwrwrwrwrwrw位31:16保留,始终读为0位15:0ODRy15:0:端口输出数据(y=0.15)(Portoutputdata)这些位可读可写并只转以字(16位)的形式操作.注:XjGPIOx,BSRR(x=A.E),可以分别跑对各个ODR位进行独立的设置/清除.8.2.5 端口位设置/清除寄存器(GPIOX_BSRR)(X=A.E)31302928272625242322212019181716BR1oBR14BR13BR12BR

7、11BR1OBR9BR8BR7BR6BR5BR4BR3BR2BR1BRO1514131211109876543210BS15BS14BS13BS12BS11BS1OBS9BS8BS7BS6BS5BS4BS3BS2BS1BSO位31:16BRy:清除端1IX的位y(y=0.15)(PortXResetbity)这些位只能写入并只能以字(16位)的形式操作.0:对对应的ODRy位不产生影响1:清除对应的ODRy位为0注:如果同时设置了BSy和BRy的对应位,BSy位起作用.位15:0BSy:设置端口X的位y(y=015)(PortXSetbity)这些位只能写入并只能以字(16位)的形式操作.0,

8、对对应的ODRy位不产生影响1:设置对应的ODRy位为18.2.6 端口位清除寄存器(GPIoX_BRR)(x=A.E)地址偏移:0x14复位值:0x00000000位带操作位带操作就是把每个比特膨胀为一个32位的字,当访问这些字的时候就达到了访问比特的目的,比如说BSRR寄存器有32个位,那么可以映射到32个地址上,我们去访问(读-改-写)这32个地址就达到访问32个比特的目的。在CM3支持的位带中,有两个区中实现了位带。其中一个是SRAM区的最低IMB范围,0x20000000-0x200FFFFF(SRAM区中的最低1MB);第二个则是片内外设区的最低IMB范围,0x40000000-0

9、x400FFFFF(片上外设区中的最低IMB)。sys.h文件对GPIO输入输出部分功能实现了位带操作BITBAND(addrzbitnum)(addr&0F0000000)+02000000+(addr40FFFFF)5)+(bitnuw2)#deineMEMADDR(addr)*(vo1ati1eunsigned1ong*)(addr)#defineBITADDR(addrz:EO口地址映射bitnum)MEM_ADDR(BITBAND(addrzbitnum)#deineGPIOAODRAddr(GPIOABASE+12)/0x4001080C#de1neGPIOBODRAddr(GPI

10、OBBASE+12)/040010C0C#defineGPIOCODRAddr(GPIOCBASE+12)/04001100C#defineGPIODODRAddr(GPIODBASE+12)/0x4001140C#defineGPIOEODRAddr(GPIOEBASE+12)/0x4001180C#deineGPIOFODRAddr(GPIOFBASE+12)/0x40011A0C#defineGPIOG_ODR_Addr(GPIoG一BASE+12)Z0x40011E0C#deineGPIOAIDRAddr(GPIOABASE+8)/040010808#defineGPIOBIDRAdd

11、r(GPIOBBASE+8)/0x40010C08#defineGPIOCIDRAddr(GPIOCBASE+8)/0x40011008#defineGPIODIDRAddr(GPIODBASE+8)Z040011408#defineGPIOEIDRAddr(GPIOEBASiE+8)/040011808#deineGPIOFIDRAddr(GPIOFBASE+8)/040011A08#deineGPIOG_IDR_Addr(GP1OG_BAgE+8)/040011E0810口操作,只对单一的IO口!确保n的值小于16!#definePAout(n)BITADDR(GPIOAODRAddrzn

12、)/输出/输入#deinePin(n)BIT_ADDR(GPIOA_IDR_Addrzn):#definePBout(n)BIT_ADDR(GPIOB_ODR_Addr,n)/输出#definePBin(n)BIT-IADDR(GP1OB11DRAddr,n)输入/definePCout(n)BIT_ADDR(GPIOC_ODR_Addr,n)/输出#definePCin(n)bit:ADDR(GP1oC二IDR二Addr,n)输入#definePDout(n)BIT_ADDR(GPIOD_ODR_Addr,n)输出;#definePDin(n)BIT-IADDR(GP1OD1IDRIAddr

13、,n)输入IdefinePEoutfnBITADDRfGPIOEODRAddr.n1使用位带操作设置IO口输入输出方法:PAout(8)=0;PA.8输出低PAout(8)=1;PA.8输出高8IedO;IedO=PAin;读取PA8的输入电平库函数编程:GP1O输入输出配置重要函数:voidGPIO_1nit(GPIO_TypeDef*GPIO,GPIO_1nitTypeDef*GpIOJnitStruct);uint8_tGPIO_Read1nputDataBit(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);uint16_tGPIO_Read1nputData(G

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服