STM32学习笔记(3)——RCC

一、认识RCC

        RCC:reset clock control 复位和时钟控制器。

1、RCC主要作用

        1)设置系统时钟SYSCLK

        2)设置AHB、APB1、APB2以及各外设的分频因子

        3)控制AHB、APB1、APB2三条总线时钟的开启

        4)控制每个外设的时钟开启

        对于SYSCLK、 HCLK、PCLK2、PCLK1这四个时钟的配置一般是:PCLK2=HCLK=SYSCLK=PLLCLK=72M, PCLK1=HCLK/2 = 36M。

2、RCC时钟树

(1)系统时钟

        1)HSE高速外部时钟信号

        HSE 是高速的外部时钟信号,可以由有源晶振或者无源晶振提供,频率从4-16MHZ不等。当 使用有源晶振时,时钟从OSC_IN引脚进入,OSC_OUT引脚悬空,当选用无源晶振时,时钟从 OSC_IN 和OSC_OUT进入,并且要配谐振电容。

        2)设置系统时钟库函数

### STM32点灯实验的学习笔记与教程 #### 工程创建 在进行STM32的点灯实验前,需先完成工程的搭建。此过程较为复杂,涉及多个文件配置以及代码框架构建[^1]。 #### 开发方式概述 对于STM32单片机而言,存在两种主要的开发模式:寄存器编程和固件库编程。前者类似于传统51单片机的操作逻辑,直接针对内部寄存器及I/O端口实施控制;后者则借助官方提供的固件库简化开发流程。虽然实际项目多采用固件库编程,但掌握寄存器级别的操作有助于深入理解设备底层机制[^2]。 #### GPIO初始化与LED驱动 具体到点亮LED这一应用场景,在选定目标芯片型号如STM32F103C8T6后,应着重关注其通用输入/输出(General Purpose Input Output, GPIO)模块设置。其中关键步骤之一便是启用相应外设时钟资源——这是确保硬件功能正常运作的前提条件[^3]。 以下是实现PC13引脚控制的一个简单示例: ```c #include "stm32f1xx.h" int main(void){ // RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); // 启用GPIOC时钟 (适用于旧版HAL库) __HAL_RCC_GPIOC_CLK_ENABLE(); // 新版本推荐使用宏定义开启时钟 GPIO_InitTypeDef GPIO_InitStruct; // 配置GPIOC第13位为推挽输出模式 GPIO_InitStruct.Pin = GPIO_PIN_13; // 设置管脚编号 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出 GPIO_InitStruct.Pull = GPIO_NOPULL; // 不上拉不下拉 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 低速 HAL_GPIO_Init(GPIOC,&GPIO_InitStruct); while(1){ HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); // LED亮起 HAL_Delay(500); // 延迟500ms HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); // LED熄灭 HAL_Delay(500); // 延迟500ms } } ``` 上述代码片段展示了如何利用标准外设库或者更新后的HAL库来初始化指定引脚并执行周期性的高低电平切换动作从而达到视觉上的闪烁效果。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值