微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > stm32f103zet6的PA4怎么不能做普通IO口用呢?

stm32f103zet6的PA4怎么不能做普通IO口用呢?

时间:10-02 整理:3721RD 点击:
stm32f103zet6的PA4怎么不能做普通IO口用呢?我测试了一下除了用作JTAG的PA13\14\15及PB3\4所有的都应该能用作普通IO的啊~~可是PA4为什么不行呢?

PA4是 可以直接当做 普通IO端口使用的, 复位后就直接可以使用.....
你是怎么判断不能使用的呢, 还有你代码段写了多大, 会不会在其他地方不经意配置错了呢。建议仔细检查一下代码,  另外,PA13,PA14那些jtag用到的端口,也不是绝对不可以当做普通io端口使用,只要不工作在jtag模式,就可以通过软件禁止jtag模式, 使其恢复至 普通io作用。

我写了一个用PA4点亮led的程序,试过了所有的IO,就只有PA4\13\14\15以及PB3\4不能用,昨天才到的开发板,我真不知道是怎么回事,新手。程序附上:
#include<stm32f10x.h>
#include<delay.h>
void GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ALL,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
}
int main(void)
{
    SystemInit(); //Setup STM32 system (clock, PLL and Flash configuration)
GPIO_Config();
GPIO_SetBits(GPIOA,GPIO_Pin_4);
    while (1)
    {
  GPIO_ResetBits(GPIOA,GPIO_Pin_4);
  delay_ms(1000);
  GPIO_SetBits(GPIOA,GPIO_Pin_4);
  delay_ms(1000);
    }
}

程序没有问题, 那几个脚是因为主复位是处于jtag模式,而你恰好又使用的是jtag 调试,所以不能软件禁止。
个人觉得你现在可以:
1、看一下开发板的电路图, 看一下pa4是否在理论上连接到插针上,还要看是否在那儿硬件拉低了。这一步排除理论上的因素
2.  检查一下 插针到 stm32f103单片机引脚的电路是否导通, 可以用万用表测试,  还应该检测一下是否能被正确的拉高 或者拉低。

感觉就是有利必有弊

复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式(CNFx[1:0]=01b,
MODE[1:0]=00b)。
复位后,JTAG引脚被置于输入上拉或下拉模式:
        ─         PA15:JTDI置于上拉模式
        ─         PA14:JTCK置于下拉模式
        ─         PA13:JTMS置于上拉模式
        ─         PB4:  JNTRST置于上拉模式

感谢小编的分享!

HQchip华强芯城--工程师的元器件商城
《孙立波1小时征服STM8》

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top