OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3789|回复: 11

remap时是否一定要使能afio时钟?

[复制链接]

2

主题

13

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-1-27
在线时间
8 小时
发表于 2018-3-12 09:28:03 | 显示全部楼层 |阅读模式
2金钱
IHI{0S@[{CLFU%)[W`4KLDE.png 如上图所说配置复用功能重映射需要先开启afio时钟
V4YFH[B@1XEUK(_G(I800@S.png
但是ministm32开发板库函数例程,按键实验用到了
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag,使能SWD,可以用SWD模式调试
为什么不用使能afio时钟还能正常使用呢?
YXZY4L~F06@DCH9_FO[}Q_4.png
如图PA15口确实默认是JTDI口,需要remap,而不仅仅是复用。

最佳答案

查看完整内容[请看2#楼]

复用功能重映射才要开启AFIO的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2018-3-12 09:28:04 | 显示全部楼层
复用功能重映射才要开启AFIO的
回复

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2018-3-2
在线时间
7 小时
发表于 2018-3-12 21:08:04 | 显示全部楼层
我觉得其实JTAG才是复用的功能,只是这个复用功能比较特别,复位以后默认是开启的,调用GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE)反而是关闭复用功能
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-1-27
在线时间
8 小时
 楼主| 发表于 2018-3-16 00:13:53 | 显示全部楼层
上面的ministm32按键实验里都为pa15做了pinremapconfig了,这算是用了复用功能重映射吧?为什么没有使能afio时钟呢?
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-1-27
在线时间
8 小时
 楼主| 发表于 2018-3-16 00:14:22 | 显示全部楼层
login_FAE 发表于 2018-3-12 09:28
复用功能重映射才要开启AFIO的

上面的ministm32按键实验里都为pa15做了pinremapconfig了,这算是用了复用功能重映射吧?为什么没有使能afio时钟呢?
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-1-27
在线时间
8 小时
 楼主| 发表于 2018-3-16 00:19:52 | 显示全部楼层
gag 发表于 2018-3-12 21:08
我觉得其实JTAG才是复用的功能,只是这个复用功能比较特别,复位以后默认是开启的,调用GPIO_PinRemapConfi ...

查表得到是不是复用功能啊,pa15的主功能是JTDI,复用功能里有pa15
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2018-3-16 09:46:41 | 显示全部楼层
七君子风 发表于 2018-3-16 00:19
查表得到是不是复用功能啊,pa15的主功能是JTDI,复用功能里有pa15

只是复用,没有重映射
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-1-27
在线时间
8 小时
 楼主| 发表于 2018-3-16 13:13:17 | 显示全部楼层
login_FAE 发表于 2018-3-16 09:46
只是复用,没有重映射

void KEY_Init(void)
{
       
        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);//使能PORTA,PORTC时钟

        GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//关闭jtag,使能SWD,可以用SWD模式调试


        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_3;//
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //
        GPIO_Init(GPIOB, &GPIO_InitStructure);//

       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_15;//
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //
        GPIO_Init(GPIOA, &GPIO_InitStructure);//
}

#define KEYPA15   GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_15)//
#define SCRPB3   GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_3)//

外面用一根线接地和接3.3v,pa15就可以读到电平,pb3就不行
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-1-27
在线时间
8 小时
 楼主| 发表于 2018-3-16 13:20:35 | 显示全部楼层
login_FAE 发表于 2018-3-16 09:46
只是复用,没有重映射

如果使能了afio时钟,pb3就可以读到外部电平了,这是什么道理?stm32那个pin表上面pb3也是和pa15类似的啊
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2018-3-16 17:11:57 | 显示全部楼层
七君子风 发表于 2018-3-16 13:20
如果使能了afio时钟,pb3就可以读到外部电平了,这是什么道理?stm32那个pin表上面pb3也是和pa15类似的啊

看了下中文参考手册,他把JTAGIO复用为普通IO也归类到重映射了,所以也需要开启AFIO时钟,按键实验的例子里面也应该开启AFIO时钟。
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2018-3-16 17:13:20 | 显示全部楼层
0000

00

00
回复

使用道具 举报

2

主题

13

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2018-1-27
在线时间
8 小时
 楼主| 发表于 2018-3-21 11:31:24 | 显示全部楼层
login_FAE 发表于 2018-3-16 17:11
看了下中文参考手册,他把JTAGIO复用为普通IO也归类到重映射了,所以也需要开启AFIO时钟,按键实验的例子 ...

按键实验应该开启afio,但是实际上按键实验没有开afio其中的pa15接收数据正常。
但是不开启afio,pb3就不能用了。
看到pa15,和pb3都是同一类io口,但是区别对待,这就不知道怎么理解了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-7 22:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表