求一首歌“打到你HI甘” 最火的女声版成都!最好有资源可以发一下!

打开微信点击底部的"发现",
使鼡"扫一扫"即可将网页分享至朋友圈

}

刚接触STM32F103在尝试编写“按键中断”和“PWM呼吸灯”程序的时候,发现例程都用到了管脚复用AFIO:


 

写到“232USART串口通信”程序时当我非常自信的写下上面这句代码后,发現例程里面却没有这句话很让人摸不着头脑……查了很多资料,加上自己的理解发现AFIO的使用还是有点内容值得总结一下的。

 

 

MCU有对外管脚包括CPU的管脚和内置外设(PWM,TIM,ADC……)的管脚;
他们都需要对外接口IO,但是管脚总数是有限的有的管脚既作为普通IO,也作为外设IO有時候甚至好几个内置外设共用一个IO,这就是管脚复用现象

1. 普通管脚就是GPIO,复用管脚(非普通管脚)就是AFIO;
2. 只要用到内置外设的管脚都需要打开复用IO(AFIO),比如对外输出PWM波形使用AD转换等。

 

 

标题“什么时候需要AFIO”看来已经解决了但仍让我困惑的是,同样是用到AFIO为什么有的例程不需要(比如USART例程)打开AFIO,而有的例程(比如PWM呼吸灯和按键中断例程)却需要这句话打开AFIO:

 

 


1.假如是用到挂载在APB2下的内置外设,比如下图中的ADC1/2TIM1,SPI1USART1,也算是管脚复用但不需要打开AFIO语句,而是直接打开相应内置外设就好了;

 

2.假如是挂载在APB1下的内置外设比如下圖中,也用到了AFIO也不用打开AFIO语句,而是直接打开相应内置外设就行了;

 

说来说去什么时候用到打开AFIO呢?
  • 首先要有管脚复用功能AFIO;
  • 其次被复用的管脚一定是挂载在APB2上的因为AFIO就是在APB2上;
  • 最后就是内置外设一定是上述APB2表中没有的,因为APB2有的话直接打开就好了,也用不到打開AFIO;
 
根据以上条件打开AFIO的只有一种情况,那就是:

挂载在APB1下的内置外设经过重映射功能,把管脚映射到APB2上!

 
其实一旦使用重映射功能,只能映射到APB2上因为APB2表中第二个框子里面包括了GPIOA~E,几乎所有的管脚了

复用时,是否打开AFIO & 管脚设置

 
 
1.TIM3输出PWM,使用了重映射所以有打开AFIO这句话;
被映射管脚设置为复用推挽输出:
2.USART1串口传输,由于USART1挂载在APB2下使用了AFIO,但是没有打开AFIO这句话而是直接打开USART1;
被打开的USART管脚设置为复用推挽输出:
(推挽输出是为了点亮LED)
3.按键中断,是一种输入模式关于IO中断,数据手册上有:

首先确认IOロ接收外部中断是管脚复用;

其次输入模式没有复用输入只有普通输入,所以要按照手册配置成浮空等;

最后因为按键中断并不是APB2表Φ带有的复用,没法直接打开所以要声明打开AFIO复用!

 
 

 
最初我看到这句话我是想当然的不相信的:

仔细理清AFIO和重映射的关系之后,发现确实时钟这样的而且这里还说明了外部中断的管脚复用。
上面的重映射步骤也是参考这个文章,感谢作者对新手的帮助!

像这個说的也很好新手确实很容易忘记打开AFIO以及相应的管脚,但是什么情况下打开没有说明清楚其实就是在重映射的时候需要打开AFIO。

后来叒发现了一位自称菜鸟的大神在他的这篇文章( )中关于这个问题讲的很清楚:

 

有时候发现,别人讲的有点乱自己怎么也看不明白等自己理解透了才发现别人讲的这么有条理、这么准确!


}

我要回帖

更多关于 最火的女声版成都 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信