STM32基础篇:AFIO × 查表重映射 × AFIO库函数

AFIO简介

AFIO,直译为:复用输入输出,是STM32上众多的片上外设之一;我们知道当IO引脚复用功能冲突时,可以通过重映射来解决这个问题,而AFIO就是专门用来执行"复用功能的重映射"的模块(可以看出其名字与功能并不一致)。

注意,IO重映射只是重映射的一种。


查表重映射(流程)

在STM32的芯片上有许许多多的片上外设,其中有一部分片上外设能够使用AFIO模块,对它的复用功能进行重映射。因此,在STM32的参考手册(RM0008)中,不同模块的重映射使用方法分别用一个小节来解释(共12小节,即12个模块的重映射功能),并且是我们编程AFIO的依据。

1、分配引脚功能

假如我们要同时使用定时器1与串口通信(如下图所示),在分配IO引脚时就会发现冲突:定时器1的四个通道(CH1、CH2、CH3、CH4)所对应IO引脚分别为PA8、PA9、PA10、PA11;而串口通信的Px、Tx所对应IO引脚为PA10、PA9,因此两组引脚冲突

此时要通过AFIO解决引脚冲突(重新分配引脚功能),分别查一下这两个片上外设的IO重映射表。如下图所示,为定时器1的重映射表。


2、定时器重映射表

可以看出有3个映射方案:

方案一 无重映射 重映射值=00 使用默认(通用)情况下的IO引脚
方案二 部分重映射 重映射值=01 对模块的一部分引脚重映射
方案三 完全重映射 重映射值-11 对模块的所有引脚重映射

可以看出在此工程下,定时器1无法使用重映射:方案1、2不改变对应的IO引脚;方案3虽然能改变引脚,但对于C8T6芯片而言,不存在GPIOE,故无法使用重映射。


3、串口重映射表

其表格分为两列:

第一列REMAP=0,即无重映射,使用默认的IO引脚;

第二列REMAP=1,进行重映射,IO引脚被改变;

因此可以使用USART1的重映射,来解决引脚冲突的问题。


AFIO的标准库函数

AFIO的驱动程序

在STM32的标准库的文件夹中存在一个一个的模块(h和c文件),例如:GPIO模块的驱动就位于stm32f10x_gpio.h(头文件)和stm32f10x_gpio.c(源文件)这两个文件中。

值得注意的是,AFIO的编程接口同样放在stm32f10x_gpio.h和stm32f10x_gpio.c这两个文件中,也就是说和GPIO驱动放在了一块


AFIO编程接口

AFIO一共有4个编程接口(库函数),如下图所示:


GPIO_PinRemapConfig

要想实现上例工程,需要配置IO引脚的重映射,故使用GPIO_PinRemapConfig函数即可。对于GPIO_PinRemapConfig函数,有两个参数,第一个为需要配置重映射的具体模块和方案;第二个为开启/关闭选择

以定时器1为例:参数GPIO_PartialRemap_TIM1是指定时器1模块、方案2;GPIO_FullRemap_TIM1指定时器1、方案3。


相关推荐

  1. ajax函数axios基本使用

    2024-07-09 19:28:04       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-09 19:28:04       53 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-09 19:28:04       55 阅读
  3. 在Django里面运行非项目文件

    2024-07-09 19:28:04       46 阅读
  4. Python语言-面向对象

    2024-07-09 19:28:04       56 阅读

热门阅读

  1. Vim常用整理快捷键

    2024-07-09 19:28:04       23 阅读
  2. Elasticsearch 分析器(Analyzer)的作用和配置

    2024-07-09 19:28:04       18 阅读
  3. html5 video去除边框

    2024-07-09 19:28:04       16 阅读
  4. 机器学习模型运用在机器人上

    2024-07-09 19:28:04       21 阅读
  5. 在网站存在漏洞的情况下强化安全防御

    2024-07-09 19:28:04       21 阅读
  6. 驱动开发系列-如何与硬件通信

    2024-07-09 19:28:04       24 阅读
  7. 计算机网络笔记分享(第六章 应用层)

    2024-07-09 19:28:04       31 阅读
  8. QT配置opencv

    2024-07-09 19:28:04       27 阅读
  9. 如何高效学习(二)

    2024-07-09 19:28:04       30 阅读
  10. lvs集群(一)

    2024-07-09 19:28:04       28 阅读