zoukankan      html  css  js  c++  java
  • 【转载】32复用时钟AFIO开启情况

    原文:http://blog.csdn.net/u012411027/article/details/44217313

    百度了很多结果,打开看几乎全是下面这篇文章,真是天下文章一大抄啊。我也抄一下吧。

    需要用到外设的重映射功能时才需要使能AFIO的时钟。

    首先为什么要开启时钟?

    答:因为要对寄存器进行读写!而在STM32中对寄存器的读写都是要打开寄存器对应的时钟才可以的【就像人一样,有了跳动的脉搏手臂才能有能量才能进行各种动作】。

    然后就什么时候AFIO时钟开启(所有时钟都是这样)就清楚了:当需要对“AFIO时钟管理的寄存器”进行读写时AFIO时钟打开!当然不对“AFIO时钟管理的寄存器”读写时也可以打开AFIO时钟,此时只是白白增加能耗、写无用代码(白白浪费程序存储器空间)而已!

    接下来:跟AFIO相关的寄存器有哪些呢?

    答:根据《STM32中文参考手册_V10》有:

    事件控制寄存器(AFIO_EVCR)、

    复用重映射和调试I/O 配置寄存器(AFIO_MAPR)、

    外部中断配置寄存器1(AFIO_EXTICR1)、

    外部中断配置寄存器2(AFIO_EXTICR2)、

    外部中断配置寄存器3(AFIO_EXTICR3)、

    外部中断配置寄存器4(AFIO_EXTICR4)。

     

    应用:在usart1串口通信没有端口重映射时为什么不打开AFIO时钟?PA9、PA10作为通用I/O口也复用了,为什么不打开为什么不打开复用时钟?

    答:AFIO全称:Alternatefunction I/O  alternate备用的、替代的、交替的,所以AFIO可翻译为“备用功能I/O”,原英文手册上解释很清楚:[《STM32英文手册》P152]

    To optimize the number of peripheralsavailable for the 64-pin or the 100-pin or the 144-pin package, it ispossible to remap somealternate functions to some other pins. This is

    achieved by software, by programming the AFremap and debug I/O configuration register(AFIO_MAPR) on page 159. In thiscase, the alternate functions are no longer mapped to

    their original assignations.

     

    可见AFIO就设计用来remapsome alternate functions to some other pins的,所以根本就没有什么“复用”之说,看来都是翻译惹的祸!另外看一下I/O复用时的情况就更清楚了

    [STM32中文参考手册_V10》P109]:

     

    可见,当设置“PA9为GPIO_Mode_AF_PP(只是一个常数0x18)、PA10为GPIO_Mode_IN_FLOATING(只是一个常数0x04)”时PA9、PA10就已经直接跟串口的相应寄存器连接上了,而串口的寄存器不需要AFIO时钟、PA9/PA10也不许要AFIO时钟,同时有没有对AFIO相应的寄存器操作所以根本不用开启AFIO时钟!

  • 相关阅读:
    plink格式数据依据染色体拆分数据、依据染色体合并数据
    Linux系统中date命令
    linux系统 awk 命令依据列字段进行数据匹配
    linux系统中如何将多行数据转化为一行数据
    R语言中sort函数的用法
    各个阶段要读的书
    一个分配固定大小块的内存池(memory pool) 的例子 FROM POCO
    boost tuple笔记(待续)
    万能数据库查询分析器与EXCEL强强联合进行数据分析
    计算机专业毕业生,求职升学,英语自我介绍
  • 原文地址:https://www.cnblogs.com/qsyll0916/p/6430115.html
Copyright © 2011-2022 走看看