通用和复用IO功能.ppt_第1页
通用和复用IO功能.ppt_第2页
通用和复用IO功能.ppt_第3页
通用和复用IO功能.ppt_第4页
通用和复用IO功能.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章 通用和复用功能I/O (GPIO和AFIO) 4.1 GPIO 基本配置 每个 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.1 GPIO 基本配置 根据每个 I/O 端口的特定硬件特征,GPIO 端口 的每个位可以由软件分别配置成多种模式: 输入浮空 输入上拉 输入下拉 模拟输入 开漏输出 推挽式输出 推挽式复用功能 开漏复用功能 I/O端口位的基本结构 端口位配置表 1 上拉输入 0 1 0 下拉输入 00 输入 不使用1 浮空输入 不使用0 0 模拟输入 不使用 见下表 1 开漏(Open- Drain) 输出 不使用 11 0 1 推挽式(Push -Pull) 复用 功能 0 或 1 1 开漏(Open- Drain) 0 或 1 01 10 0 0 推挽式(Push -Pull) 通用 输出 PxODR寄存器MODE0 MODE1 CNF0 CNF1 配置模式 MODE1:0 意义 00 保留 01 最大输出速度为10MHz 10 最大输出速度为2MHz 11 最大输出速度为50MHz 输出模式位 4.2 GPIO 功能描述 4.2.1 通用 I/O ( GPIO ) 通用 I/O 的复位状态与配置 单独的位设置或位清除 外部中断/唤醒线 GPIO 锁定机制 1. 通用 I/O 的复位状态与配置 复位期间和刚复位后,复用功能未开启,I/O 端口被配置成浮空输入模式(CNFx1:0=01b, MODE1: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时 钟被采样到输入数据寄存器 输出配置: 可配置成推挽模式或开漏模式 例:将PC6-PC9引脚设置为输出推挽模式 /* 选择配置的引脚 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9; /* 选择引脚翻转的速度 */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /* 选择输出是推挽模式*/ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /* 初始化引脚 */ GPIO_Init(GPIOC, 当作为输入配置时,输入数据寄存器(GPIOx_IDR) 在每个APB2时钟周期捕捉I/O引脚上的数据。所有 GPIO 引脚有一个内部弱上拉和弱下拉,它们可以 被激活或不被激活。 (1)输出缓冲器被禁止 (2)施密特触发输入被激活 (3)根据输入配置(上拉,下拉或浮动)的不同,弱 上拉和下拉电阻被连接 (4)对输入数据寄存器的读访问可得到I/O 状态 输入配置: 可配置成浮空/上拉/下拉输入模式 例:将GPIOA所有的引脚都设置为输入浮空模式 /* 选择配置的引脚 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; /* 选择引脚翻转的速度 */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; /* 选择输入是浮空模式*/ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; /* 初始化引脚 */ GPIO_Init(GPIOA, 2. 单独的位设置或位清除 当对GPIOx_ODR的个别位编程时,软件不需 要禁止中断:在单次APB2写操作里,可以 只更改一个或多个位。 这是通过对“置位/复位寄存器”(置位复位寄 存器是:GPIOx_BSRR,复位寄存器是: GPIOx_BRR)中想要更改的位写1 来实现的 。没被选择的位将不被更改。 3、外部中断/唤醒线 所有端口都有外部中断能力,为了使用外 部中断线,端口必须配置成输入模式。 更多的关于外部中断的信息,参考 STM3210xReference: 6.2节:外部中断/事件控制器P83 6.2.3节:唤醒事件管理P84 例:将GPIOC的第9引脚置成高电平 GPIO_SetBits(GPIOC, GPIO_Pin_9); 例:将GPIOA的第7、第8引脚置成低电平 GPIO_ResetBits(GPIOA, GPIO_Pin_7 | GPIO_Pin_8); 例:将GPIOB的第9引脚配置成外部中断Line9 /* 连接 EXTI Line9 到 PB.09 */ GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9); /* 设置 EXTI Line9 为下降沿中断 */ EXTI_InitStructure.EXTI_Line = EXTI_Line9; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init( 4、复用功能(AF) 使用默认复用功能前必须对端口位配置寄存器编 程。 对于复用输入功能,端口可以配置成输入模式( 浮空、上拉或下拉) 对于复用输出功能,端口必须配置成复用功能输 出模式(推挽或开漏)。 对于双向复用功能,端口位必须配置复用功能输 出模式(推挽或开漏)。这时,输入驱动器被配 置成浮空输入模式。 复用功能配置: 输入可配置成浮空/上拉/下拉输入模式 输出可配置成推挽或开漏 复用功能的模拟输入配置: 输出缓冲器、施密特触发输入、弱上拉和下拉 电阻被禁止,读取输入数据寄存器时值0 5 软件重新映射I/O 复用功能 为了使不同器件封装的外设I/O功能的数量 达到最优,可以把一些复用功能重新映射 到其他一些脚上。这可以通过软件配置相 应的寄存器来完成。这时,复用功能就不 再映射到它们的原始引脚上了。 例:配置USART2引脚 /* 配置 USART2 Tx (PA.02) 成辅助功能输出上拉 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, /* 配置 USART2 Rx (PA.03) 成辅助功能出入浮空 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, 6. GPIO 锁定机制 锁定机制允许冻结 IO 配置。当在一个端口 位上执行了所定( LOCK )程序,在下一次复 位之前,将不能再更改端口位的配置。 二、GPIO寄存器描述 端口配置低寄存器(GPIOx_CRL) (x=AE) 偏移地址: 00h;复位值: 4444 4444h 端口配置高寄存器(GPIOx_CRH) (x=AE) 偏移地址: 04h;复位值: 4444 4444h 端口输入数据寄存器(GPIOx_IDR) (x=AE) 偏移地址: 08h;复位值: 0000 0000h 端口输出数据寄存器(GPIOx_ODR) (x=AE) 偏移地址: 0Ch;复位值: 0000 0000h 端口位设置/复位寄存器(GPIOx_BSRR) (x=AE) 偏移地址: 10h;复位值: 0000 0000h 端口位复位寄存器(GPIOx_BRR) (x=AE) 偏移地址: 14h;复位值: 0000 0000h 端口配置锁定寄存器(GPIOx_LCKR) (x=AE) 偏移地址: 18h;复位值: 0000 0000h 当执行正确的写序列设置了位16(LCKK)时,该 寄存器用来锁定端口位的配置。位15:0 用于锁 定GPIO端口的配置。在规定的写入操作期间,不能 改变LCKP15:0 。当对相应的端口位执行了LOCK 序列后,在下次系统复位之前将不能再更改端口位 的配置。 三、复用功能I/O配置(AFIO) BXCAN 复用功能重映射 复用功能 CAN_REMAP1:0 =”00” CAN_REMAP1:0= ”10”(1) CAN_REMAP1:0 =”11”(2) CANRX PA11 PB8 PD0 CANTX PA12 PB9 PD1 (1)重映射不适用于36脚的封装 (2)重映射只适用于100脚的封装 USART2 复用功能重映射 PD6 PA3 USART2_RX PD5 PA2 USART2_TX PD4 PA1 USART2_RTS PD3 PA0 USART2_CTS USART2_REMAP = 1(1) USART2_REMAP = 0 复用功能 PA4PD7USART2_CK (1)只适用于100脚重映像 例:将USART2的发送Tx和接收Rx进行软件重映射 /* 使能 USART2 引脚的软件映射 */ GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE); /* 配置 USART2 Tx (PD.05) 成辅助功能输出上拉 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOD, /* 配置 USART2 Rx (PD.06) 成辅助功能出入浮空 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOD, TIM3 复用功能重映射 复用功能 TIM3_REMAP1:0 = 00 (没有重映像) TIM3_REMAP1:0 = 10 (部分重映像) TIM3_REMAP1:0 = 11 ( 完全重映像)(1) TIM3_CH1 PA6 PB4 PC6 TIM3_CH2 PA7 PB5 PC7 TIM3_CH3 PB0 PC8 TIM3_CH4 PB1 PC9 (1)只适用于64和100脚重映像 例:对TIM3的通道1引脚进行配置,假设没有重映射, /* TIM3的通道1:辅助功能上拉输出 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, 例:对TIM3的通道1引脚进行配置,假设部分重映射 /* 使能 TIM3 引脚的部分重映射 */ GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); /* TIM3的通道1:辅助功能上拉输出 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, 例:对TIM3的通道1引脚进行配置,假设完全重映射 /* 使能 TIM3 引脚的完全重映射 */ GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE); /* TIM3的通道1:辅助功能上拉输出 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, 四、AFIO寄存器描述 事件控制寄存器(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论