请教:各位高手,STM32的PA14脚输入电压拉不低是什么原因

2019-12-12 18:22发布

问题描述:
1、电路和程序如下
2、启动后,示波器量引脚PA14,电压为3.2V,按键按下后,电压为2.56V
3、PA13和PA15等引脚正常,可以拉到地,就PA14不行
4、还有一个现象,就是启动后扫描PA14发现是0,用示波器看,一直是高电平(重启时电压会升到4.88V,然后再变成3.2V)
以上
很奇怪的问题,不知道从哪入手。求高手帮忙分析和支招,感谢~~~

电路很简单:就PA14->电阻220R->按键(另一端接地)
程序:

  1. void Key_Config(void)
  2. {
  3.         GPIO_InitTypeDef GPIO_InitStructure;
  4.        
  5.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  6.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  7.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
  8.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
  9.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
  10.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
  11.         GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
  12.        
  13.         //管理员 PA15
  14.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
  15.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  16.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  17.         GPIO_Init(GPIOA, &GPIO_InitStructure);
  18.        
  19.         //摇杆 UP:PD11 DOWN:PD15 LEFT:PA12 RIGHT:PA13  OK:PA14
  20.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11|GPIO_Pin_15;
  21.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  22.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  23.         GPIO_Init(GPIOD, &GPIO_InitStructure);
  24.        
  25.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;
  26.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  27.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  28.         GPIO_Init(GPIOA, &GPIO_InitStructure);
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
go2deathward
1楼-- · 2019-12-13 17:24
楼主,PA14脚是SWD引脚
需要remap的,你的代码里的GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);,是禁用JTAG而保留SWD的。所以你一直IO状态不对

#define GPIO_Remap_SWJ_JTAGDisable  ((uint32_t)0x00300200)  /*!< JTAG-DP Disabled and SW-DP Enabled */
要用这个
GPIO_Remap_SWJ_Disable ,就可以了
go2deathward
2楼-- · 2019-12-13 22:03
stm32f1 参考手册,gpio-afio,Alternate function I/O and debug configuration (AFIO)章节
jssd
3楼-- · 2019-12-14 00:11
 精彩回答 2  元偷偷看……
jssd
4楼-- · 2019-12-14 02:09
jiaowoxiaolu 发表于 2019-3-8 08:33
禁止所有调试口,禁止完后你无法仿真,不能用仿真器jtag和swd方式下载程序就对了,如果还能下载仿真,那就 ...

没仿真器在手里,一直用串口下载的。。。。
sweet_136
5楼-- · 2019-12-14 04:34
这也太苦逼了 仿真口都 用完了 ,能不能改下硬件 ,最好不用仿真口。
go2deathward
6楼-- · 2019-12-14 09:54
我印象中,STM32在上电复位的过程中,好像有个过程是检测SWCLK和SDIO状态的,满足有些特定的时序,是会进入下载模式还是调试模式的。如果PA14做输入,有可能有风险
建议,SWDIO和SWCLK做输出,尽可能不要做输入

一周热门 更多>