STM32F4 HAL库开发 --时钟使能和配置

Posted 聚优致成

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F4 HAL库开发 --时钟使能和配置相关的知识,希望对你有一定的参考价值。

在STM32F4的HAL库中,外设时钟使能操作都是在RCC相关固件库文件头文件stm32f4xx_hal_rcc.h 定义的。外设时钟使能在HAL库中都是通过宏定义标识符来实现。首先,我们来看看GPIOA的外设时钟使能宏定义标识符。

#define __HAL_RCC_GPIOA_CLK_ENABLE()   do  \\
                                        __IO uint32_t tmpreg = 0x00U; \\
                                        SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOAEN);\\
                                        /* Delay after an RCC peripheral clock enabling */ \\
                                        tmpreg = READ_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOAEN);\\
                                        UNUSED(tmpreg); \\
                                           while(0U)

主要是定义了一个宏定义标识符__HAL_RCC_GPIOA_CLK_ENABLE(),它的核心操作是通过下面这行代码实现的:
SET_BIT(RCC->AHB1ENR, RCC_AHB1ENR_GPIOAEN);
这行代码的作用是,设置寄存器RCC->AHB1ENR的相关位为1。

我们只需要在我们的用户程序中调用宏定义标识符__HAL_RCC_GPIOA_CLK_ENABLE()
就可以实现 GPIOA 时钟使能。使用方法为:

__HAL_RCC_GPIOA_CLK_ENABLE();//使能 GPIOA 时钟。

对于其他外设,同样都是在 stm32f4xx_hal_rcc.h头文件中定义,大家只需要找到相关宏定义标识符即可,这里我们列出几个常用使能外设时钟的宏定义标识符使用方法。

__HAL_RCC_DMA1_CLK_ENABLE();//使能 DMA1 时钟
__HAL_RCC_USART2_CLK_ENABLE();//使能串口 2 时钟
__HAL_RCC_TIM1_CLK_ENABLE();//使能 TIM1 时钟

禁止某个外设时钟使用方法和使能外设时钟非常类似,同样是头文件定义的宏定义标识符。同样以GPIOA为例,宏定义标识符为:

#define __HAL_RCC_GPIOA_CLK_DISABLE() \\
(RCC->AHB1ENR &= ~(RCC_AHB1ENR_GPIOAEN))

同样,宏定义标识符__HAL_RCC_GPIOA_CLK_DISABLE()的作用是设置RCC->AHB1ENR寄存器的最低位为0,也就是禁止GPIOA时钟。
我们这里同样列出几个常用的禁止外设时钟的宏定义标识符使用方法:

__HAL_RCC_DMA1_CLK_DISABLE();//禁止 DMA1 时钟
__HAL_RCC_USART2_CLK_DISABLE();//禁止串口 2 时钟
__HAL_RCC_TIM1_CLK_DISABLE();//禁止 TIM1 时钟

以上是关于STM32F4 HAL库开发 --时钟使能和配置的主要内容,如果未能解决你的问题,请参考以下文章

STM32F4 HAL库开发 -- DMA

STM32F4 HAL库开发 -- 复用功能外设

STM32F4 HAL库开发 -- 复用功能外设

STM32F4 HAL库开发 -- 复用功能外设

STM32F4 HAL库开发 -- STM32F407引脚图

STM32F4 HAL库开发 -- STM32F407引脚图