求助 关于AFIO和端口复用

2019-03-23 18:24发布

最近在学STM32,对端口复用现在理解的有点混乱,希望大家给指导一下:首先我需要搞清楚一个概念 AFIO是端口复用的意思吗?串口通信实验,通过USART1发送数据到上位机,上位机收到之后原封不动的发送给USART1,需要将板子上的RXD和TXD用短路帽和PA9和PA10接起来,这里是不是也用到了端口复用啊,是不是需要使能复用时钟啊?RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);这句里面有使能复用端口时钟吗?
外部中断实验,按照库函数开发指南上写的是肯定需要使能复用时钟的,RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);这句是使能复用时钟吗?

如果串口中断和外部中断都需要使能复用时钟,为什么这两个还不一样啊。我现在特别混乱,希望大家帮我理一理,谢谢。

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
曾经in
1楼-- · 2019-03-23 21:13
 精彩回答 2  元偷偷看……
cclccl941123
2楼-- · 2019-03-23 23:00
曾经in 发表于 2015-11-7 00:13
1,复用就是一个IO脚同时具有多个功能,相当于内部有多路开关切换,具体哪种功能由端口配置高寄存器、端口 ...

外部中断要用到AFIO模块(外部中断配置寄存器在AFIO里RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);),所以需要使能AFIO时钟;串口实验要用到USART,所以使能串口时钟(RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);)。也就是说这两个表述都是笼统的讲都是来使能复用时钟的,只是串口通信有串口通信的时钟,而外部中断因为外部中断配置寄存器在AFIO里,所以使能的是AFIO时钟。
我这么理解对吗
曾经in
3楼-- · 2019-03-24 00:03
我不知道“复用时钟”这个词你在哪看到的
cclccl941123
4楼-- · 2019-03-24 00:46
 精彩回答 2  元偷偷看……
曾经in
5楼-- · 2019-03-24 05:18
本帖最后由 曾经in 于 2015-11-8 22:23 编辑

9(ER(O1)XNG9L0K]VPY)D[2.png
也许之前是放在一起的,才会有这样的注释
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE)



ywlzh
6楼-- · 2019-03-24 09:23
哎 你这是被误导了看图!串口的TX只是用的是推挽复用输出配置,而不是复用功能,外部中断的的中断输入才是用的复用功能,再看你贴的图,只是配置串口时钟和相应的IO口时钟,并没有配置复用(AF)时钟,在另一张图里中断配置时才配置复用功能,这也是手册上要求的

一周热门 更多>