RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1|RCC_APB2Periph_AFIO, ENABLE);
这段代码是用于STM32的外设时钟使能的。其中,RCC_APB2PeriphClockCmd是一个函数,用于使能APB2总线上的外设时钟。在这个函数中,第一个参数是需要使能的外设,第二个参数是使能或禁用该外设。在这个例子中,GPIOB、GPIOD、GPIOA、USART1和AFIO这些外设的时钟被使能了。这些外设包括GPIO口、串口1和AFIO(用于重映射)等。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD, ENABLE);
启用 STM32 GPIO 时钟
为了启用 STM32 中 GPIOA, GPIOB, GPIOC 和 GPIOD 的 APB2 时钟,可以使用 RCC_APB2PeriphClockCmd
函数。此函数用于使能或失能指定的 APB2 总线上的外设时钟。
使用 RCC_APB2PeriphClockCmd
函数
该函数原型如下:
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
其中参数说明:
RCC_APB2Periph
: 需要使能或失能的外设时钟。NewState
: 设置为ENABLE
或DISABLE
来控制状态。
对于不同的 GPIO 端口,对应的宏定义分别为 RCC_APB2Periph_GPIOA
, RCC_APB2Periph_GPIOB
, RCC_APB2Periph_GPIOC
, 和 RCC_APB2Periph_GPIOD
.
具体实现代码如下所示:
#include "stm32f10x.h"
int main(void)
{
/* Enable the peripheral clocks of GPIOA, GPIOB, GPIOC and GPIOD */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |
RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD,
ENABLE);
while (1) {
// 主循环程序...
}
}
上述代码片段展示了如何通过组合多个端口的宏来一次性启动所需的所有 GPIO 时钟[^1]。
此外,在遇到类似 “RCC_APB2Periph_GPIOC is undefined”的错误时,需确保项目中已正确定义并包含了标准外设驱动库的相关头文件,并且在预处理器设置里加入了 USE_STDPERIPH_DRIVER
宏定义[^3].
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,ENABLE);//复位SPI1 RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,DISABLE);//停止复位SPI1
根据引用[1],RCC_APB2PeriphResetCmd函数用于强制或释放高速APB (APB2) 外设的复位。该函数有两个参数,第一个参数是指定要复位的APB2外设,可以是以下值的任意组合:RCC_APB2Periph_AFIO, RCC_APB2Periph_GPIOA, RCC_APB2Periph_GPIOB, RCC_APB2Periph_GPIOC, RCC_APB2Periph_GPIOD, RCC_APB2Periph_GPIOE, RCC_APB2Periph_GPIOF, RCC_APB2Periph_GPIOG, RCC_APB2Periph_ADC1, RCC_APB2Periph_ADC2, RCC_APB2Periph_TIM1, RCC_APB2Periph_SPI1, RCC_APB2Periph_TIM8, RCC_APB2Periph_USART1, RCC_APB2Periph_ADC3, RCC_APB2Periph_TIM15, RCC_APB2Periph_TIM16, RCC_APB2Periph_TIM17, RCC_APB2Periph_TIM9, RCC_APB2Periph_TIM10, RCC_APB2Periph_TIM11。第二个参数是指定外设复位的新状态,可以是ENABLE或DISABLE。
根据引用[2],如果NewState不等于DISABLE,则将RCC_APB2Periph的值设置到RCC->APB2ENR寄存器中。否则,将RCC_APB2Periph的值从RCC->APB2ENR寄存器中清除。
根据引用[3],GPIO_Configuration函数用于配置GPIO外设。在该函数中,首先使能GPIOC外设的时钟,然后使能SYSCFG外设的时钟。接下来,配置GPIOC的第3个引脚为输入模式,无上下拉电阻。
根据以上信息,RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,ENABLE)函数用于复位SPI1外设,而RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,DISABLE)函数用于停止复位SPI1外设。
引用[.reference_title]
- 1 RCC_APB2PeriphResetCmd(0X01FC,DISABLE)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2
allinsert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - 2 STM32F103固件库源码解析——RCC_APB2PeriphClockCmd[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2
allinsert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - 3 STM32F407的外部中断设置_RCC_APB2PeriphClockCmd_RCC_APB2Periph_SYSCFG[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2
allinsert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
相关推荐











