V.111 2024-05-16 13:34 采纳率: 40%
浏览 77

关于C8T6最小系统板的PA15重映射普通I/O后无法拉高电平

请问一下大家,stm32f103c8t6最小系统板的PA15引脚,重映射作为普通IO口后为什么也不能进行拉高操作呢?

img

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-05-16 13:34
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    您想要解决的问题

    您提问的目的是解决在STM32F103C8T6最小系统板上,PA15引脚在重映射为普通I/O口后无法进行拉高操作的问题。

    图片内容

    您上传的图片内容是一段C语言代码,主要功能是初始化STM32的GPIOA的PA15引脚。代码执行了以下操作:

    1. 重映射了SWJ-JTAG,禁用了JTAG功能。
    2. 使能了GPIOA和AFIO的时钟。
    3. 设置了GPIOA的PA15引脚为输出模式,推挽输出,速度为50MHz。
    4. 初始化了GPIOA的PA15引脚。
    5. 将PA15引脚置为高电平。

    问题出现原因

    问题可能出现的原因有:

    1. 重映射配置错误:代码中重映射配置了SWJ-JTAG,但未明确指出是否正确重映射了PA15为普通I/O。
    2. GPIO配置错误:代码中设置了PA15为输出模式,但可能存在配置错误,导致无法正确拉高电平。
    3. 外部电路问题:可能存在外部电路连接问题,如引脚被接地或存在其他短路情况。

    问题解决方案

    1. 检查重映射配置:确保PA15已经被正确地重映射为普通I/O。
    2. 检查GPIO配置:确保GPIO的配置符合要求,特别是输出模式和速度设置。
    3. 检查外部电路:检查PA15引脚的外部连接,确保没有短路或不正确的连接。

    提供代码

    以下是修改后的代码示例,用于初始化PA15为普通I/O并尝试拉高电平:

    void pal5_init (void)
    {
        GPIO_InitTypeDef GPIO_InitStructure;
        // 重映射PA15为普通I/O(如果需要)
        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
        // 使能GPIOA和AFIO的时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
        // 设置PA15为输出模式,推挽输出,速度50MHz
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        // 拉高PA15电平
        GPIO_SetBits(GPIOA, GPIO_Pin_15);
    }
    

    代码运行方式

    运行此代码需要:

    • STM32F103C8T6最小系统板
    • 一个C编译器,如Keil MDK, STM32CubeIDE等
    • 将代码烧录到STM32F103C8T6单片机中

    代码预期运行结果

    如果代码正确无误,并且外部电路没有问题,预期结果是PA15引脚将被拉高至高电平。

    推荐相关链接

    请根据这些信息检查您的系统,并尝试解决问题。如果问题仍然存在,可能需要进一步的硬件检查或固件调试。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月16日