CantKeepITinside 2024-07-10 23:18 采纳率: 100%
浏览 113
已结题

STM32F0 PB1引脚异常问题

需求:配置PB1为推挽输出,上电后控制IO复位一下
问题:因为错误的对PA1进行置位复位操作,导致系统启动后PB1被拉低,是什么原因?
猜测:可能是GPIO引脚配置频率过高?系统频率为48MHz
源码:
GPIOA、GPIOB时钟已开启

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;       
    GPIO_Init(GPIOB, &GPIO_InitStructure);

void Func_Reset(void)
{
    GPIO_SetBits(**GPIOA**,GPIO_Pin_1);
    Delay_ms(50);
    GPIO_ResetBits(**GPIOA**,GPIO_Pin_1);
    Delay_ms(50);
    GPIO_SetBits(**GPIOA**,GPIO_Pin_1);
}

就是在这个Reset函数中忘记修改GPIOx了,PA1在工程中并没有被配置,应该是处于默认的浮空输入状态,但是为什么会导致PB1被拉低呢?

  • 写回答

3条回答 默认 最新

  • CantKeepITinside 2024-07-11 09:31
    关注

    垂死梦中惊坐起!对不起我是**

    配置完GPIO后,PB1引脚的寄存器全部复位,包括输出数据寄存器ODR,此时PB1的ODR寄存器为0,但是在后续的Func_Reset中拉高的是PA1,因此PB1始终没有被操作置位,会一直处于复位状态,而不是因为对PA1操作造成PB1拉低

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月19日
  • 已采纳回答 7月11日
  • 创建了问题 7月10日