问答

汇集网友智慧,解决技术难题

21ic问答首页 - STM32F103C8T6的GPIOA的15脚无法控制高低电平

se ni 电平 GPIO stm32f103c8t6 控制

STM32F103C8T6的GPIOA的15脚无法控制高低电平

四小春2024-08-25
想利用STM32F103C8T6的GPIOA的11 12和15脚控制3个LED灯,但是发现无法控制GPIO15引脚的点平,但是11和12脚可以控制,初始化的时候试过了初始化所有引脚和仅初始化GPIOA的11 12和15脚,均无法控制15脚的高低电平,15脚一直是高电平。初始化代码如下:1、初始化所有GPIOA引脚
int main(void)
{
    /*开启时钟*/
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);       


    /*GPIO初始化*/
    GPIO_InitTypeDef GPIO_InitStructure;                                        //定义结构体变量

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                //GPIO模式,赋值为推挽输出模式
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;                                //GPIO引脚,赋值为所有引脚
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                //GPIO速度,赋值为50MHz

    GPIO_Init(GPIOA, &GPIO_InitStructure);                                        //将赋值后的构体变量传递给GPIO_Init函数

    while (1)
    {
        GPIO_ResetBits(GPIOA, GPIO_Pin_11);               
        GPIO_ResetBits(GPIOA, GPIO_Pin_12);               
        GPIO_ResetBits(GPIOA, GPIO_Pin_15);               
        Delay_ms(500);                               
        GPIO_SetBits(GPIOA, GPIO_Pin_11);
        GPIO_SetBits(GPIOA, GPIO_Pin_12);
        GPIO_SetBits(GPIOA, GPIO_Pin_15);
        Delay_ms(500);       
    }
}


2、仅初始化GPIOA的引脚11 12和15脚
int main(void)
{
    /*开启时钟*/
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);                //开启GPIOA的时钟
       
        /*GPIO初始化*/
        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12| GPIO_Pin_15;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);                                                //将PA11 PA12 PA15引脚初始化为推挽输出

    while (1)
    {
        GPIO_ResetBits(GPIOA, GPIO_Pin_11);               
        GPIO_ResetBits(GPIOA, GPIO_Pin_12);               
        GPIO_ResetBits(GPIOA, GPIO_Pin_15);               
        Delay_ms(500);                               
        GPIO_SetBits(GPIOA, GPIO_Pin_11);
        GPIO_SetBits(GPIOA, GPIO_Pin_12);
        GPIO_SetBits(GPIOA, GPIO_Pin_15);
        Delay_ms(500);       
    }
}

在单步调试的时候GPIO的IDR15引脚一直是高电平,是哪里出了问题呢?程序中只用到了GPIO的A引脚电量3个LED灯而已,没有别的模块了。
该怎么办呢?
回答 +关注 8
3775人浏览 7人回答问题 分享 举报
7 个回答

您需要登录后才可以回复 登录 | 注册