打印

HAL库源文件stm32h7xx_hal_rcc.c学习笔记(2018-07-23 V1.0)

[复制链接]
217|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
丑帅丑帅的|  楼主 | 2018-8-10 17:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
说明:
1、内部和外置时钟配置
2、各种总线时钟配置和获取
3、MCO1和MCO2配置。

==============================================================================
                                                                   ##### RCC规格特性  #####
==============================================================================
1、系统上电复位后,通过内部高速时钟HSI运行(主频64MHz),Flash工作在0等待周期,所有外设除了SRAM, Flash, JTAG 和 PWR,时钟都是关闭的。
     这里特别注意SRAM,官方手册里面说的太笼统,这个SRAM到底是指的那个SRAM。关于这个问题,详情看此贴:链接
(1)、AHB和APB总线无分频,所有挂载这两类总线上的外设都是以HSI频率运行。
(2)、所有的GPIO都是模拟模式,除了JTAG相关的几个引脚。

2、系统上电复位后,用户需要完成以下工作
(1)、选择用于驱动系统时钟的时钟源。
(2)、配置系统时钟频率和Flash设置。
(3)、配置分频器。
(3)、使能外设时钟。
(4)、配置外设时钟源,部分外设的时钟可以不来自系统时钟,此时通过配置寄存器RCC_D1CCIPR,RCC_D2CCIP1R,RCC_D2CCIP2R 和 RCC_D3CCIPR 实现。

==============================================================================
                                                                   ##### RCC的局限性  #####
==============================================================================

1、使能了外设时钟后,不能立即操作对应的寄存器,要加延迟。
(1)、不同外设延迟不同。
a、如果是AHB的外设,使能了时钟后,需要等待2个AHB时钟周期才可以操作这个外设的寄存器。
b、如果是APB的外设,使能了时钟后,需要等待2个APB时钟周期才可以操作这个外设的寄存器。

当前HAL库的解决方案是在使能了外设时钟后,在搞一个读操作,算是当做延迟用。

比如下面使能GPIOA的时钟:
#define __HAL_RCC_GPIOA_CLK_ENABLE()   do {
                                        __IO uint32_t tmpreg;
                                        SET_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOAEN);
                                        /* Delay after an RCC peripheral clock enabling */
                                        tmpreg = READ_BIT(RCC->AHB4ENR, RCC_AHB4ENR_GPIOAEN);
                                        UNUSED(tmpreg);
                                       } while(0)

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

741

主题

742

帖子

0

粉丝