STM32寄存器操作方式学习-时钟配置

一、当STM32刚上电启动时,它是从频率为8 MHz 的内部振荡器运行的,假如程序设置外部高速时钟(HSE)为系统时钟源时,在外部高速时钟准备好之前对HSI相关寄存器的操作是无效的,相关位的值将保持在默认值。因此,要想关闭HSI以节能,必须在外部高速时钟准备好之后对HSI相关寄存器操作。

二、当STM32启动时,它是从频率为8 MHz 的内部振荡器运行的,因此内部FLASH 的访问时间不是一个问题。然而,一旦PLL启用并作为时钟源,对于运行在最高性能的Cortex CPU来说,FLASH的速度跟不上CPU。为了允许Cortex CPU 运行在72 MHz具有零等待状态,FLASH 存储器具有由两个64 位缓存器组成的预取缓冲器。这些缓冲器可以从FLASH 存储器中进行64 位宽读取,然后传递独立的16 位或32 位指令给Cortex CPU执行。但是,必须在主时钟源切换到PLL前启用预取缓冲器。启用预取缓冲器,还必须调整FLASH 预取缓冲器所需的等待周期。

零等待状态,当0MHz< SYSCLK≤24MHz
一个等待状态,当24MHz< SYSCLK≤48MHz
两个等待状态,当48MHz< SYSCLK≤72MHz

三、主流时钟配置步骤:1.打开外部高速时钟晶振(HSE);2.等待外部高速时钟晶振稳定振动;3.设置AHB预分频器(HPRE[3:0]);4.设置低速APB1预分频器(PPRE1[2:0]);5.设置高速速APB2预分频器(PPRE2[2:0]);6.设置PLLMUL时钟源以及PLLMUL的倍频数;7.使能PLL;8.等待PLL时钟就绪;9.打开FLASH预取缓冲区,设置FLASH等待周期数;10.设置PLL输出为系统时钟(SW[1:0])。11.打开所要用到的外设的时钟。

在配置 STM32 外设的时候,任何时候都要先使能该外设的时钟!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32微控制器上,可以使用寄存器操作来控制IO引脚。 首先,需要了解GPIO寄存器的基本结构。在STM32系列中,每个GPIO端口都有一组寄存器来控制对应的引脚。其中包括GPIOx_MODER(模式寄存器)、GPIOx_OTYPER(输出类型寄存器)、GPIOx_OSPEEDR(输出速度寄存器)、GPIOx_PUPDR(上拉/下拉寄存器)以及GPIOx_ODR(数据寄存器)等。 下面是一个简单的例子,展示如何使用寄存器操作来设置一个引脚为输出并设置输出高电平: ```c #include "stm32f4xx.h" // 定义要操作的引脚 #define LED_PIN GPIO_Pin_13 #define LED_PORT GPIOA int main(void) { // 使能GPIOA时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); // 配置引脚为输出模式 GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Pin = LED_PIN; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(LED_PORT, &GPIO_InitStruct); // 设置引脚输出高电平 GPIO_SetBits(LED_PORT, LED_PIN); while (1) { // 在这里可以进行其他操作 } } ``` 上述示例中,使用了STM32的HAL库函数来进行寄存器配置操作。首先使用`RCC_AHB1PeriphClockCmd()`函数使能GPIOA时钟,然后使用`GPIO_Init()`函数配置引脚为输出模式,并使用`GPIO_SetBits()`函数将引脚输出高电平。 需要注意的是,具体的寄存器操作方式可能会因不同的STM32系列而有所不同,请根据自己使用的具体型号和参考相关技术资料来进行寄存器操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值