委员 2023-08-24 15:34 采纳率: 0%
浏览 6

在STM32F103C8T6中,为什么B口需要先配置时钟,而A口可以后置呢?

下述代码只可使STM32F103C8T6的PA0输出低电压,而PB0没有输出。

只需将 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); 提到 GPIO_Init(GPIOB,&GPIO_InitStructure); 的前一行,即先配置时钟,pB0就可以输出低电压了。

当然,在配置GPIO口时,应该要先配置时钟,可问题是为什么只有B口需要先配置,而A口可以后置呢?

当初写出这种代码的原因是因为keil5软件(我没有适配c99),它不支持在中间定义新的结构体。
于是我就把整个GPIO的参数放到了配置时钟的前面。


#include "stm32f10x.h"                  // Device header

int main(void)
{    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    
    
    GPIO_Init(GPIOB,&GPIO_InitStructure);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    GPIO_WriteBit(GPIOB, GPIO_Pin_0, Bit_RESET);
    
    GPIO_Init(GPIOA,&GPIO_InitStructure);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);

    while (1)
    {
        
    }
}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-24 18:11
    关注

    【以下回答由 GPT 生成】

    在STM32F103C8T6中,通过RCC(Reset and Clock Control)控制寄存器来配置GPIO口,其中有两个寄存器与GPIO相关:RCC_APB2PeriphClockCmd和RCC_APB2Periph_GPIOx。具体来说,RCC_APB2PeriphClockCmd是用来使能GPIO的外设时钟,而RCC_APB2Periph_GPIOx则用来选择具体的GPIO口。

    在给GPIO口配置时钟时,是通过RCC_APB2PeriphClockCmd函数来实现的。这个函数的第一个参数是要配置时钟的GPIO外设,可以是GPIOA、GPIOB等等,第二个参数是时钟使能的指令。例如 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); 表示要使能GPIOB的外设时钟。

    当我们要配置GPIO口的时候,需要先选择具体的GPIO口。在这个问题中,我们先配置了GPIOB的PB0口,然后选择了GPIOA的PA0口。所以 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); 的位置需要在 GPIO_Init(GPIOB,&GPIO_InitStructure); 之前,以先配置GPIOB的外设时钟。

    为什么需要先配置时钟?因为STM32系列的芯片中,每个GPIO口都有一个对应的时钟线与之相连。如果没有使能GPIO口的时钟,那么相应的GPIO口就无法工作,无法完成输入输出的功能。

    综上所述,需要先配置GPIO口的外设时钟,然后选择要配置的GPIO口。所以在配置GPIO口时,只有B口需要先配置时钟,而A口可以后置。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 修改了问题 8月24日
  • 创建了问题 8月24日

悬赏问题

  • ¥15 关于#边缘计算#的问题,请各位专家解答!(相关搜索:边缘计算和区块链|如何搭建)
  • ¥20 讲解此音频放大电路原理及关键部分
  • ¥15 如何在论文中描述这个实验结果啊(标签-算法)
  • ¥15 rtsp 转 m3u8 执行后卡在Decoding VUI
  • ¥15 串口发送1,点阵显示1
  • ¥20 微信小程序转发链接问题,已禁止转发仍能转发的场景
  • ¥15 关于#硬件架构#的问题:根据开片的IC来判断是哪一款
  • ¥15 matlab simulink
  • ¥15 rtos搭建sip协议开发包
  • ¥100 TM4C1290NCPDT 在线调试