在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库开发 --时钟使能和配置相关推荐

  1. STM32F4 HAL库开发 -- 串口

    一.串口介绍 串口设置包含:开启串口时钟.设置响应的IO口模式.设置波特率.数据位长度.奇偶校验位.DMA等信息. 具体参看:STM32开发 – 串口详解 二.函数 1.串口参数初始化,并使能串口. ...

  2. STM32F4 HAL库开发 -- 独立看门狗(IWDG)

    之前讲过看门狗,参看:STM32开发 – 看门狗详解 一.HAL库配置独立看门狗步骤 1.取消寄存器写保护,设置看门狗预分频系数和重装载值. 首先我们必须取消 IWDG_PR和 IWDG_RLR寄存器 ...

  3. STM32F4 HAL库开发 -- 工程模板解读

    一.关键文件介绍 1.HAL库关键文件 stm32f4xx_hal_ppp.c/.h 基本外设的操作API,ppp代表任意外设.其中stm32f4xx_hal_cortex.c/.h比较特殊,它是一些 ...

  4. STM32F4 HAL库开发 -- DMA

    一.DMA简介 DMA之前有讲过,参看:STM32开发 – DMA详解 DMA,全称为Direct Memory Access,即直接存储器访问.DMA传输方式无需CPU直接控制传输,也没有中断处理方 ...

  5. STM32F4 HAL库开发 -- STM32CubeMX

    一.STM32CubeMX 简介 STM32CubeMX 是 ST 意法半导体近几年来大力推荐的 STM32 芯片图形化配置工具, 允许用户使用图形化向导生成 C 初始化代码,可以大大减轻开发工作,时 ...

  6. STM32F4 HAL库开发 -- 温度传感器(DS18B20)

    参看:<嵌入式-STM32开发指南>第三部分 外设篇 - 第2章 温度传感器DS18B20 这篇文章讲的非常详细了. 一.简介 1.概述 DS18B20 是 DALLAS 最新单线数字温度 ...

  7. STM32F4 HAL库开发 -- RTC

    一.STM32F407 RTC时钟简介 STM32F407的RTC,是一个独立的BCD定时器/计数器.RTC提供了一个日历时钟(包含年月日时分秒信息).两个可编程闹钟(ALARM A和ALARM B) ...

  8. STM32F4 HAL库开发 -- GPIO

    这种外设都之前都讲过了,专栏:stm32库开发实战指南. 但是使用STM32CubeMX该配置配置呢??接下来看一下. 一.GPIO简介 STM32F4 的 IO 可以由软件配置成如下 8 种模式中的 ...

  9. STM32F4 HAL库开发 -- NVIC 中断优先级管理

    一.中断寄存器 STM32F429xx的96个中断里面,包括10个内核中断和91个可屏蔽中断,具有16级可编程的中断优先级,而我们常用的就是这91个可屏蔽中断.在MDK内,与NVIC相关的寄存器,MD ...

最新文章

  1. 全国移动联通基站数据升级包(2013年1月基站升级包).rar
  2. Python 函数合集:足足 68 个内置函数请收好
  3. many-to-many
  4. hoj 1067 Rails //poj1363 Rails 栈的简单应用
  5. python xpath语法-Python Xpath语法
  6. java ajax查询_java-如何计时ajax查询(发送查询,处理,接收响应)
  7. 狼抓兔子(HYSBZ-1001)
  8. Spring学习总结(20)——Spring加载多个项目properties配置文件问题解决
  9. 如何导出ane所需的swc
  10. Google登录提示错误码12501
  11. Cydia Tweak
  12. python elif invalid syntax_Python错误集锦:if和elif语句提示:SyntaxError: invalid syntax
  13. 通过京东白条了解资产证券化
  14. AI-语音处理理论与应用-语音处理简介
  15. 架构——20——Jenkins+Gitlab实现持续集成——3
  16. 虚幻引擎图文笔记:使用物理模拟(Physical Simulation)给角色添加一个马尾辫
  17. 0202了,你会用手机操控电脑吗?
  18. kernel: SLUB: Unable to allocate memory on node -1 (gfp=0x20)
  19. 利用python进行电脑性能排行榜的爬取【个人学习】
  20. 小学生智力测试软件,测试小学生智力的问题及答案

热门文章

  1. PYTHON3 函数定义
  2. 算法(69)----最长和谐子序列
  3. HDU 1525 - Euclid's Game ( 博弈 )
  4. Lucene实战之基于StandardAnalyzer读写索引
  5. 海量数据库解决方案2011030401
  6. PetShop 4.0 详解之四(PetShop之ASP.NET缓存)
  7. 回溯算法超详细讲解(附代码)
  8. Python学习:数据结构
  9. 科大星云诗社动态20210413
  10. 【干货】吴恩达deeplearning.ai专项课程历史文章汇总