OpenEdv-开源电子网

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

STM32mini板V3.0 读GPIO状态时关于PA15电平状态的问题

[复制链接]

12

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-9-20
在线时间
56 小时
发表于 2016-11-1 10:38:41 | 显示全部楼层 |阅读模式
10金钱
我在使用stm32mini板读取GPIO状态时,设置的PA15为下拉输入,已经禁用了JtaG,但是PA15不能正常读取数据,测量端口电压发现,无论设置为上拉还是下拉PA15都是低电平、、求解啊

最佳答案

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

哈,PA15默认JTAG的一个脚,现在要变成普通IO就要使能复用时钟,一般的GPIOA时钟使能对它是无效的,你试试看嘛!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

197

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
457
金钱
457
注册时间
2012-4-20
在线时间
91 小时
发表于 2016-11-1 10:38:42 | 显示全部楼层
Riven丶叮当 发表于 2016-11-1 16:11
我这个地方不需要使用复用功能啊、、

哈,PA15默认JTAG的一个脚,现在要变成普通IO就要使能复用时钟,一般的GPIOA时钟使能对它是无效的,你试试看嘛!
回复

使用道具 举报

20

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2015-11-11
在线时间
22 小时
发表于 2016-11-1 10:52:12 | 显示全部楼层
看是不是外部电路有下拉的线路,看看原理图吧。
回复

使用道具 举报

12

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-9-20
在线时间
56 小时
 楼主| 发表于 2016-11-1 10:57:04 | 显示全部楼层
远方的自己 发表于 2016-11-1 10:52
看是不是外部电路有下拉的线路,看看原理图吧。

下拉的没有、上拉的有一个、VCC3.3接了一个10K的电阻,是定义的JTAG的JTDI
回复

使用道具 举报

16

主题

197

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
457
金钱
457
注册时间
2012-4-20
在线时间
91 小时
发表于 2016-11-1 16:06:17 | 显示全部楼层
本帖最后由 ba5rw 于 2016-11-1 16:07 编辑

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
红色部分打开了吗?
或者上传你的GPIO设置,包括你的JTAG禁用部分。
回复

使用道具 举报

12

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-9-20
在线时间
56 小时
 楼主| 发表于 2016-11-1 16:08:51 | 显示全部楼层
ba5rw 发表于 2016-11-1 16:06
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
红色部分打开了吗?
或者 ...

GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);//使能PORTA,PORTC时钟
       
  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag,使能SWD,可以用SWD模式调试
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_All;//PA0
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA0
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_1;//PA1
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA1设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA1
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_2;//PA2
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA2设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA2
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_3;//PA3
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA3设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA3
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_4;//PA4
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA4设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA4
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_5;//PA5
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA5设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA5
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_6;//PA6
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA6设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA6
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_7;//PA7
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA7设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA7
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_8;//PA8
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA8设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA8
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_9;//PA9
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA9设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA9
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_10;//PA10
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA10设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA10
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_11;//PA11
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA11设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA11
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_12;//PA12
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA12设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA12
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_13;//PA13
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA13设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA13
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_14;//PA14
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA14设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA14
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_15;//PA15
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA15设置成下拉输入
        GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA15
       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_1;//PC5
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PC5设置成下拉输入
       
        GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIOC5
       
回复

使用道具 举报

16

主题

197

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
457
金钱
457
注册时间
2012-4-20
在线时间
91 小时
发表于 2016-11-1 16:11:07 | 显示全部楼层
本帖最后由 ba5rw 于 2016-11-1 16:12 编辑

没看到 RCC_APB2Periph_AFIO使能啊,虽然禁用了JTAG但是PA15是单独时钟使能的,也就是备用或复用时钟使能。
回复

使用道具 举报

12

主题

68

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-9-20
在线时间
56 小时
 楼主| 发表于 2016-11-1 16:11:29 | 显示全部楼层
ba5rw 发表于 2016-11-1 16:11
没看到 RCC_APB2Periph_AFIO使能啊

我这个地方不需要使用复用功能啊、、
回复

使用道具 举报

17

主题

329

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2532
金钱
2532
注册时间
2016-3-6
在线时间
393 小时
发表于 2017-5-20 15:36:18 | 显示全部楼层
ba5rw 发表于 2016-11-1 16:13
哈,PA15默认JTAG的一个脚,现在要变成普通IO就要使能复用时钟,一般的GPIOA时钟使能对它是无效的,你试 ...

果然如此,刚遇到这个问题
路漫漫其修远兮,吾将上下而求索。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-21 11:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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