AFIO 是什么?AFIO 时钟什么时候需要开启?

本文讲述了在STM32中如何启用GPIO的复用功能,如用于ADC1输入和EXTI外部中断,以及何时需要开启AFIO时钟,特别是当涉及AFIO寄存器如AFIO_EVCR、AFIO_MAPR等配置时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32 中的大部分 GPIO 都有复用功能,所以对于有复用功能的 I/O 引脚,还要开启其复用功能时钟。如 GPIO 的 pin4 可以用作 ADC1 的输入引脚,当我们把它作为 ADC1 使用时,需要开启 ADC1 的时钟:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
1
另外, STM32 的所有 GPIO 都引入到 EXTI 外部中断线上,使得所有的 GPIO 都能作为外部中断的输入源。所以如果把 GPIO 用作 EXTI 外部中断时,还需要开启 AFIO 时钟。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
1
那么,问题来了!
AFIO 是什么?AFIO 时钟什么时候需要开启?
  
我们从《STM32中文参考手册_V10》中找到:对寄存器 AFIO_EVCR、AFIO_MAPR 和 AFIO_EXTICRX 进行读写操作前,应当首先打开 AFIO 的时钟(设置 APB2 外设时钟使能寄存器 RCC_APB2ENR)。
也就是说:当你需要配置 AFIO 这些寄存器的时候,就需要把 RCC_APB2ENR 寄存器的 AFIO 位置‘1’打开 AFIO 时钟。

  
跟 AFIO 相关的寄存器有:
事件控制寄存器(AFIO_EVCR)
复用重映射和调试I/O 配置寄存器(AFIO_MAPR)
外部中断配置寄存器1(AFIO_EXTICR1)
外部中断配置寄存器2(AFIO_EXTICR2)
外部中断配置寄存器3(AFIO_EXTICR3)
外部中断配置寄存器4(AFIO_EXTICR4)
————————————————
版权声明:本文为CSDN博主「挨踢玩家」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46323814/article/details/125606876

04-01
### afio 压缩工具的使用方法 `afio` 是一种强大的存档和文件管理工具,在 Linux 和 Unix 系统中被广泛应用于备份任务。它类似于 `tar`,但在处理大容量数据时表现更好,并支持更多的高级选项。 以下是关于如何使用 `afio` 的详细介绍: #### 安装 afio 在大多数现代 Linux 发行版中,可以通过包管理器安装 `afio` 工具。例如: ```bash sudo apt-get install afio # 对于基于 Debian 的系统 sudo yum install afio # 对于基于 Red Hat 的系统 ``` #### 创建压缩档案 创建一个简单的压缩档案可以使用 `-o` 参数指定输出文件名,同时通过管道传递给 `compress` 或其他压缩程序来实现进一步压缩。 ```bash find /path/to/files -print | afio -ovz archive.afio.Z ``` 上述命令会将 `/path/to/files` 下的所有文件打包成名为 `archive.afio.Z` 的压缩文件[^3]。 - `-o`: 表示覆盖已存在的目标文件而不提示。 - `-v`: 显示详细的进度信息。 - `-z`: 将输出发送到 `compress` 进行压缩。 如果希望使用 gzip 替代 compress,则可以用如下方式: ```bash find /path/to/files -print | afio -ovZ archive.afio.gz ``` 这里 `-Z` 参数表示调用 gzip 而不是默认的 compress。 #### 解压档案 解压由 `afio` 打包并经过压缩的数据需要用到相应的解压工具配合完成。假设我们有一个之前制作好的 `.gz` 文件,那么执行下面的操作即可恢复原始目录结构: ```bash afio -ivZ < archive.afio.gz ``` 此命令读取标准输入中的归档内容并将其中包含的项目提取出来放到当前工作区下。 同样地,如果是 `.Z` 类型的文件则需改回原来的参数设置(-z),即运行这样的语句来进行还原过程: ```bash afio -ivz < archive.afio.Z ``` #### 高级特性 除了基本的功能外,`afio` 提供了一些额外的能力使得其成为比传统 tar 更灵活的选择之一。其中包括但不限于分卷存储、排除特定模式匹配项等功能的支持。 ##### 排除某些类型的文件 当构建备份集合的时候经常遇到不想加入日志或其他临时性质的东西进去的情况,这时就可以利用 find 命令加上合适的过滤条件再传送给 afio 处理。像这样只保留普通文件而忽略掉符号链接之类的特殊对象: ```bash find /source/directory \( ! -type l \) -a \( -type f -o -type d \) -print | \ afio --exclude-from=excludes.txt -ovZ backup.afio.gz ``` 这里的 excludes.txt 应该是一份列出了所有不需要考虑路径名称列表的小文本文档。 --- ### 总结 尽管存在图形化界面友好的商业解决方案如 Arkeia 和 BRU 可供选择,但对于偏好脚本自动化流程或者追求极致性能控制权的人来说,掌握诸如 afio 此类强大却低调的传统 CLI 实用程序仍然是非常有价值的技能[^1]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值