OpenEdv-开源电子网

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

关于GPIO复用问题

[复制链接]

9

主题

82

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2018-6-6
在线时间
126 小时
发表于 2018-6-7 14:15:26 | 显示全部楼层 |阅读模式
1金钱
在gpio配置中,使能引脚复用功能以后,PB3,PB4,PA15引脚不受控




void LED_Init(void)
{

         GPIO_InitTypeDef  GPIO_InitStructure;
               
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);         //使能PA,PB端口时钟 开启复用引脚
         GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);  
         
       
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_12;                                 //DOUTA-->PA.11|DOUTB-->PA.12 端口配置
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                  //浮空输入
         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
         GPIO_Init(GPIOA, &GPIO_InitStructure);                                         //根据设定参数初始化GPIOA.8
         GPIO_ResetBits(GPIOA,GPIO_Pin_11|GPIO_Pin_12);                                                 //PA.11|PA.12 输入低
   
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;       //BUSY-->PB.5 端口配置, 浮空输入
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                  //浮空输入
         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
         GPIO_Init(GPIOB, &GPIO_InitStructure);                                         //根据设定参数初始化GPIOB.5
         GPIO_ResetBits(GPIOB,GPIO_Pin_5);                                                 //PB.5 输入低
               
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;                                 //L3948_2_EN-->PA.8 端口配置
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
         GPIO_Init(GPIOA, &GPIO_InitStructure);                                         //根据设定参数初始化GPIOA.8
         GPIO_SetBits(GPIOA,GPIO_Pin_8);                                                 //PA.8 输出高       

         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;                             //L3948_1_EN-->PD.2 端口配置, 推挽输出
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
         GPIO_Init(GPIOB, &GPIO_InitStructure);                                           //推挽输出 ,IO口速度为50MHz
         GPIO_SetBits(GPIOB,GPIO_Pin_15);                                                  //PD.2 输出高
       
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                             //SCLK-->PB.6 端口配置, 推挽输出
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
         GPIO_Init(GPIOB, &GPIO_InitStructure);                                           //推挽输出 ,IO口速度为50MHz
         GPIO_SetBits(GPIOB,GPIO_Pin_6);                                                                         //PB.6 输出高
       
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;                             //CONVST-->PB.4 端口配置, 推挽输出
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
         GPIO_Init(GPIOB, &GPIO_InitStructure);                                           //推挽输出 ,IO口速度为50MHz
         GPIO_SetBits(GPIOB,GPIO_Pin_4);                                                                         //PB.4 输出高
         
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;                             //REST-->PB.3 端口配置, 推挽输出
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
         GPIO_Init(GPIOB, &GPIO_InitStructure);                                           //推挽输出 ,IO口速度为50MHz
         GPIO_SetBits(GPIOB,GPIO_Pin_3);                                                                         //PB.3 输出高
         
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;                             //CS-->PA.15 端口配置, 推挽输出
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
         GPIO_Init(GPIOA, &GPIO_InitStructure);                                           //推挽输出 ,IO口速度为50MHz
         GPIO_SetBits(GPIOA,GPIO_Pin_15);                                                                         //PA.15 输出高        
       
}

最佳答案

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

用的战舰和精英板子的话可以参考这个程序
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10569
金钱
10569
注册时间
2017-2-18
在线时间
1913 小时
发表于 2018-6-7 14:15:27 | 显示全部楼层
用的战舰和精英板子的话可以参考这个程序
131313.JPG

战舰&精英PB3和PB4输出高低电平.rar

2.05 MB, 下载次数: 19

回复

使用道具 举报

2

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2016-3-27
在线时间
9 小时
发表于 2018-6-7 15:02:43 | 显示全部楼层
是不是调试口,你把JTAG禁用了应该就可以
回复

使用道具 举报

9

主题

82

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2018-6-6
在线时间
126 小时
 楼主| 发表于 2018-6-7 15:14:11 | 显示全部楼层
xiaojielzl 发表于 2018-6-7 15:02
是不是调试口,你把JTAG禁用了应该就可以

已经禁用了,但是还是不能控制
回复

使用道具 举报

3

主题

85

帖子

0

精华

高级会员

Rank: 4

积分
586
金钱
586
注册时间
2016-5-13
在线时间
106 小时
发表于 2018-6-7 16:43:16 | 显示全部楼层
你做普通IO口用为什么要使能AFIO的时钟呢?
直接使能IO口的时钟啊...
回复

使用道具 举报

3

主题

85

帖子

0

精华

高级会员

Rank: 4

积分
586
金钱
586
注册时间
2016-5-13
在线时间
106 小时
发表于 2018-6-7 16:43:25 | 显示全部楼层
你做普通IO口用为什么要使能AFIO的时钟呢?
直接使能IO口的时钟啊...
回复

使用道具 举报

9

主题

82

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2018-6-6
在线时间
126 小时
 楼主| 发表于 2018-6-8 14:25:16 | 显示全部楼层
abdfgh 发表于 2018-6-7 16:43
你做普通IO口用为什么要使能AFIO的时钟呢?
直接使能IO口的时钟啊...

我看到手册上要这样写的,不需要使能AFIO时钟吗
回复

使用道具 举报

20

主题

450

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4893
金钱
4893
注册时间
2017-7-6
在线时间
719 小时
发表于 2018-6-8 15:41:55 | 显示全部楼层
WadeWww 发表于 2018-6-8 14:25
我看到手册上要这样写的,不需要使能AFIO时钟吗

禁止JTAG就可以,然后使能IO口时钟,你又不复用 干嘛使能复用时钟
我是小白,很白很白的小白!!!
回复

使用道具 举报

20

主题

450

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4893
金钱
4893
注册时间
2017-7-6
在线时间
719 小时
发表于 2018-6-8 15:45:32 | 显示全部楼层
WadeWww 发表于 2018-6-8 14:25
我看到手册上要这样写的,不需要使能AFIO时钟吗

看参考手册
1528443890(1).jpg
我是小白,很白很白的小白!!!
回复

使用道具 举报

9

主题

82

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2018-6-6
在线时间
126 小时
 楼主| 发表于 2018-6-12 15:04:18 | 显示全部楼层

谢谢,已解决
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-26 12:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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