欢迎来到天天文库
浏览记录
ID:39727573
大小:470.50 KB
页数:34页
时间:2019-07-10
《通用和复用IO功能》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章通用和复用功能I/O(GPIO和AFIO)4.1GPIO基本配置每个GPI/O端口有:2个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),2个32位数据寄存器(GPIOx_IDR,GPIOx_ODR),1个32位置位/复位寄存器(GPIOx_BSRR),1个16位复位寄存器(GPIOx_BRR)1个32位锁定寄存器(GPIOx_LCKR)。4.1GPIO基本配置根据每个I/O端口的特定硬件特征,GPIO端口的每个位可以由软件分别配置成多种模式:输入浮空输入上拉输入下拉模拟输入开漏输出推挽式输出推挽式复用功能开漏复用功能I/O端口位的基本结构端口位配置表1上拉输入010下拉
2、输入00输入不使用1浮空输入不使用00模拟输入不使用见下表1开漏(Open-Drain)输出不使用1101推挽式(Push-Pull)复用功能0或11开漏(Open-Drain)0或1011000推挽式(Push-Pull)通用输出PxODR寄存器MODE0MODE1CNF0CNF1配置模式MODE[1:0]意义00保留01最大输出速度为10MHz10最大输出速度为2MHz11最大输出速度为50MHz输出模式位4.2GPIO功能描述4.2.1通用I/O(GPIO)通用I/O的复位状态与配置单独的位设置或位清除外部中断/唤醒线GPIO锁定机制1.通用I/O的复位状态与配置复位期间和刚复位后,复
3、用功能未开启,I/O端口被配置成浮空输入模式(CNFx[1:0]=01b,MODE[1:0]=00b).复位后,JTAG引脚被置于输入上拉或下拉模式:PA15:JTDI置于上拉模式PA14:JTCK置于下拉模式PA13:JTMS置于上拉模式PB4:JNTRST置于上拉模式复位后可以根据对I/O端口的使用进行再配置。1.通用I/O的复位状态与配置当作为输出配置时,写到输出数据寄存器上的值(GPIOx_ODR)输出到相应的I/O引脚。可以以推挽模式或开漏模式使用输出驱动器。(1)输出缓冲器被激活(2)施密特触发输入被激活(3)弱上拉和下拉电阻被禁止(4)出现在I/O脚上的数据在每个APB2时钟被
4、采样到输入数据寄存器输出配置:可配置成推挽模式或开漏模式例:将PC6-PC9引脚设置为输出推挽模式/*选择配置的引脚*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6
5、GPIO_Pin_7
6、GPIO_Pin_8
7、GPIO_Pin_9;/*选择引脚翻转的速度*/GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;/*选择输出是推挽模式*/GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;/*初始化引脚*/GPIO_Init(GPIOC,&GPIO_InitStructure);当作
8、为输入配置时,输入数据寄存器(GPIOx_IDR)在每个APB2时钟周期捕捉I/O引脚上的数据。所有GPIO引脚有一个内部弱上拉和弱下拉,它们可以被激活或不被激活。(1)输出缓冲器被禁止(2)施密特触发输入被激活(3)根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接(4)对输入数据寄存器的读访问可得到I/O状态输入配置:可配置成浮空/上拉/下拉输入模式例:将GPIOA所有的引脚都设置为输入浮空模式/*选择配置的引脚*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;/*选择引脚翻转的速度*/GPIO_InitStructure.GPIO_Spe
9、ed=GPIO_Speed_10MHz;/*选择输入是浮空模式*/GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;/*初始化引脚*/GPIO_Init(GPIOA,&GPIO_InitStructure);2.单独的位设置或位清除当对GPIOx_ODR的个别位编程时,软件不需要禁止中断:在单次APB2写操作里,可以只更改一个或多个位。这是通过对“置位/复位寄存器”(置位复位寄存器是:GPIOx_BSRR,复位寄存器是:GPIOx_BRR)中想要更改的位写1来实现的。没被选择的位将不被更改。3、外部中断/唤醒线所有端口都有外部中断能力,为了
10、使用外部中断线,端口必须配置成输入模式。更多的关于外部中断的信息,参考《STM3210xReference》:6.2节:外部中断/事件控制器P836.2.3节:唤醒事件管理P84例:将GPIOC的第9引脚置成高电平GPIO_SetBits(GPIOC,GPIO_Pin_9);例:将GPIOA的第7、第8引脚置成低电平GPIO_ResetBits(GPIOA,GPIO_Pin_7
11、GPIO_Pin_8);例:将
此文档下载收益归作者所有