STM32F103学习笔记-16-RCC(第4节)-STM32 标准外设库函数命名规则总览(以stm32f10x_rcc.c/h为例)
一、函数命名结构规律
STM32 标准外设库(Standard Peripheral Library,简称 SPL)采用统一命名规则。函数名通常由三部分组成:
<模块名>_<功能对象><操作行为>(参数)
或更详细:
<外设缩写>_<功能块><动作><附加说明>
示例:
-
RCC_HSEConfig():配置 RCC 模块的外部高速晶振(HSE)。 -
GPIO_Init():初始化 GPIO 外设。 -
USART_SendData():发送串口数据。
二、常见函数命名后缀及分类
1. Config 类函数:配置寄存器、模式或参数
| 后缀 | 英文含义 | 示例 | 功能说明 |
|---|---|---|---|
| Config | Configure | RCC_HSEConfig() | 配置外设参数或模式 |
| ClockConfig | Clock Configure | RCC_HCLKConfig() | 配置总线时钟分频 |
| PLLConfig | PLL Configure | RCC_PLLConfig() | 设置 PLL 输入源与倍频系数 |
| MCOConfig | MCO Configure | RCC_MCOConfig() | 选择系统时钟输出到 PA8 |
| PinConfig | Pin Configure | GPIO_PinRemapConfig() | 引脚重映射配置 |
| ITConfig | Interrupt Configure | USART_ITConfig() | 中断源开关配置 |
特点:Config 类函数负责寄存器设置,不负责启动外设。
2. Cmd 类函数:启用或禁止命令类
| 后缀 | 英文含义 | 示例 | 功能说明 |
|---|---|---|---|
| Cmd | Command | RCC_PLLCmd(ENABLE) | 启用或关闭 PLL |
| ClockCmd | Clock Command | RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE) | 控制外设时钟开关 |
| ResetCmd | Reset Command | RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE) | 复位外设 |
| PrefetchBufferCmd | Prefetch Buffer Command | FLASH_PrefetchBufferCmd(ENABLE) | 使能 Flash 预取缓冲 |
特点:带 Cmd 的函数通常和 ENABLE / DISABLE 参数一起使用,用于控制功能开关。
3. Init / DeInit 类函数:初始化与复位
| 后缀 | 英文含义 | 示例 | 功能说明 |
|---|---|---|---|
| Init | Initialize | GPIO_Init()、USART_Init() | 根据结构体参数配置外设 |
| DeInit | De-initialize | RCC_DeInit() | 恢复寄存器默认状态 |
| StructInit | Structure Initialize | GPIO_StructInit() | 填充结构体默认值 |
特点:
StructInit() 用于给结构体赋默认值。
Init() 用于写入配置到寄存器。
DeInit() 用于恢复默认配置。
4. Get / Set 类函数:状态读写与寄存器操作
| 后缀 | 英文含义 | 示例 | 功能说明 |
|---|---|---|---|
| GetFlagStatus | Get Flag Status | RCC_GetFlagStatus(RCC_FLAG_PLLRDY) | 获取 PLL 锁定状态 |
| GetITStatus | Get Interrupt Status | USART_GetITStatus() | 获取中断标志位 |
| SetCompare | Set Compare | TIM_SetCompare1(TIM2, 1000) | 设置定时器比较值 |
| GetCounter | Get Counter | TIM_GetCounter() | 获取定时器当前值 |
| SetClockSource | Set Clock Source | RCC_SetClockSource() | 设置时钟源 |
特点:
Get 用于读取状态。
Set 用于软件写入或更新寄存器值。
5. Wait / Ready 类函数:等待状态类
| 后缀 | 示例 | 功能说明 |
|---|---|---|
| WaitForHSEStartUp | RCC_WaitForHSEStartUp() | 等待外部晶振稳定 |
| WaitForLastOperation | FLASH_WaitForLastOperation() | 等待 Flash 操作完成 |
| IsReady / IsActiveFlag | RCC_IsReadyFlag() | 检查外设是否就绪 |
特点:内部循环检测硬件标志位变化,用于状态等待。
6. Clear / Reset 类函数:清除标志类
| 后缀 | 示例 | 功能说明 |
|---|---|---|
| ClearFlag | RCC_ClearFlag() | 清除复位标志位 |
| ClearITPendingBit | USART_ClearITPendingBit() | 清除中断挂起标志 |
| ResetCmd | RCC_APB2PeriphResetCmd() | 对外设执行硬件复位 |
7. Enable / Disable 类函数:简写控制类
| 示例 | 功能说明 |
|---|---|
| NVIC_EnableIRQ(USART1_IRQn) | 使能中断通道 |
| NVIC_DisableIRQ(USART1_IRQn) | 禁止中断通道 |
特点:主要出现在 NVIC、SysTick、EXTI 等内核相关模块。
8. Misc / 其他常见特殊功能类
| 示例 | 功能说明 |
|---|---|
| FLASH_SetLatency(FLASH_Latency_2) | 设置 Flash 等待周期 |
| RCC_ClockSecuritySystemCmd(ENABLE) | 启用时钟安全系统 |
| ADC_SoftwareStartConvCmd(ADC1, ENABLE) | 软件触发 ADC 转换 |
| USART_SendData(USART1, Data) | 向发送寄存器写入数据 |
| USART_ReceiveData(USART1) | 读取接收寄存器内容 |
三、命名规律口诀
模块在前,动作在后;
Config 配置,Cmd 开关;
Init 初始化,DeInit 复原;
Get 取值,Set 赋值;
Clear 清标志,Wait 等状态。
四、实例说明(RCC 模块)
| 步骤 | 函数 | 含义 |
|---|---|---|
| 1 | RCC_DeInit() | 复位 RCC 寄存器 |
| 2 | RCC_HSEConfig(RCC_HSE_ON) | 启用外部高速晶振 |
| 3 | RCC_WaitForHSEStartUp() | 等待 HSE 稳定 |
| 4 | FLASH_SetLatency(FLASH_Latency_2) | 设置 Flash 等待周期 |
| 5 | RCC_HCLKConfig(RCC_SYSCLK_Div1) | 设置 AHB 分频 |
| 6 | RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9) | 配置 PLL 倍频 |
| 7 | RCC_PLLCmd(ENABLE) | 使能 PLL |
| 8 | RCC_GetFlagStatus(RCC_FLAG_PLLRDY) | 检查 PLL 是否锁定 |
| 9 | RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK) | 切换系统时钟到 PLL |
| 10 | RCC_MCOConfig(RCC_MCO_SYSCLK) | 输出系统时钟到 PA8 |
五、命名模式速查表
| 类别 | 命名模式 | 示例 | 功能说明 |
|---|---|---|---|
| 配置类 | <模块>_<对象>Config() | RCC_PLLConfig() | 配置寄存器参数 |
| 启停类 | <模块>_<功能>Cmd() | RCC_PLLCmd() | 控制启停 |
| 初始化类 | <模块>_Init() | GPIO_Init() | 外设初始化 |
| 清除类 | <模块>_ClearFlag() | USART_ClearFlag() | 清除标志位 |
| 状态类 | <模块>_GetFlagStatus() | RCC_GetFlagStatus() | 获取状态 |
| 等待类 | <模块>_WaitForXxx() | RCC_WaitForHSEStartUp() | 等待状态就绪 |
| 复位类 | <模块>_DeInit() | USART_DeInit() | 恢复默认配置 |
| 中断类 | <模块>_ITConfig() | EXTI_ITConfig() | 控制中断开关 |
| 获取类 | <模块>_GetXxx() | TIM_GetCounter() | 获取寄存器值 |
| 设置类 | <模块>_SetXxx() | TIM_SetCompare1() | 写入寄存器值 |
六、命名逻辑总结
STM32 标准外设库的命名规律高度统一:
-
模块前缀:表示所属外设(RCC / GPIO / TIM / USART / ADC 等)
-
功能对象:表示模块内的子功能(如 PLL / HSE / Flag / Clock 等)
-
操作动词:表示操作类别(Config / Cmd / Init / Get / Set / Clear 等)
