Article / 2

STM32标准外设库速查手册

2026-05-19 C/C++ / 嵌入式 / 手册stm32-stdperiph

正文

更新于 2026-05-19 约 29 分钟读完

本文以 STM32F103CBT6 与 STM32F10x StdPeriph 标准外设库为参考,按外设分类整理常用函数的参数含义、作用范围与可选宏值。内容侧重初始化、配置与控制接口,便于在编写驱动、移植例程或查阅库源码时快速定位参数用途。
AI 创作提示:本文档由 AI 辅助生成与整理。

使用范围与约定

  • 目标芯片:STM32F103CBT6,按 STM32F103xB / medium-density 设备理解,常见宏定义为 STM32F10X_MD
  • 库口径:STM32F10x Standard Peripheral Library,常见版本 V3.5.0/V3.6.x;不同版本新增宏可能略有差异。
  • 本速查按 F103CBT6 可用外设优先:GPIO/AFIO、RCC、EXTI、DMA1、ADC1/2、TIM1~4、USART1~3、SPI1/2、I2C1/2、CAN1、RTC/BKP/PWR、FLASH、CRC、IWDG/WWDG、DBGMCU、NVIC/SysTick。
  • 标准外设库中也存在 FSMC、SDIO、DAC、CEC、CAN2、ETH、TIM5~14、ADC3、UART4/5 等宏或函数,但它们不属于 STM32F103CBT6 的 medium-density C 封装可用资源;文件末尾单独说明。
  • FunctionalState NewStateENABLE 开启,DISABLE 关闭。FlagStatus/ITStatus 返回 SETRESETErrorStatus 返回 SUCCESSERROR
  • 外设实例指针如 GPIOAUSART1TIM2 来自 stm32f10x.h。若一个参数是寄存器位掩码,通常可以用按位或 | 组合;若是模式枚举,只能选一个。
  • 定时器分频关系常用:
ftimer=fTIMxCLK(PSC+1)(ARR+1)

通用类型

类型/参数 可用值 含义
FunctionalState ENABLE, DISABLE 开关控制
FlagStatus, ITStatus SET, RESET 标志位/中断挂起状态
ErrorStatus SUCCESS, ERROR 成功/失败
BitAction Bit_SET, Bit_RESET GPIO 单个位写入动作
ITStatus SET, RESET 中断是否发生/挂起

MISC:NVIC 与 SysTick

常用宏

参数 说明
NVIC_PriorityGroup NVIC_PriorityGroup_0 0 bit 抢占优先级,4 bit 响应优先级
NVIC_PriorityGroup_1 1 bit 抢占优先级,3 bit 响应优先级
NVIC_PriorityGroup_2 2 bit 抢占优先级,2 bit 响应优先级
NVIC_PriorityGroup_3 3 bit 抢占优先级,1 bit 响应优先级
NVIC_PriorityGroup_4 4 bit 抢占优先级,0 bit 响应优先级
NVIC_VectTab NVIC_VectTab_RAM, NVIC_VectTab_FLASH 向量表基地址位于 SRAM 或 Flash
LowPowerMode NVIC_LP_SEVONPEND, NVIC_LP_SLEEPDEEP, NVIC_LP_SLEEPONEXIT Cortex-M3 低功耗控制位
SysTick_CLKSource SysTick_CLKSource_HCLK_Div8, SysTick_CLKSource_HCLK SysTick 时钟源

NVIC_PriorityGroupConfig

void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
  • NVIC_PriorityGroup: 设置中断优先级分组;取值见本节 NVIC_PriorityGroup_*。常用 NVIC_PriorityGroup_2NVIC_PriorityGroup_4

NVIC_Init

void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
  • NVIC_InitStruct: NVIC 初始化结构体指针。字段如下。
  • NVIC_IRQChannel: 中断通道号,例如 USART1_IRQn, EXTI0_IRQn, DMA1_Channel1_IRQn, TIM2_IRQn
  • NVIC_IRQChannelPreemptionPriority: 抢占优先级,数值越小优先级越高;合法范围受优先级分组影响,通常 0~15。
  • NVIC_IRQChannelSubPriority: 子优先级/响应优先级,数值越小优先级越高;范围受优先级分组影响。
  • NVIC_IRQChannelCmd: ENABLE 使能该 IRQ,DISABLE 禁用该 IRQ。

NVIC_SetVectorTable

void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset);
  • NVIC_VectTab: 向量表位置;NVIC_VectTab_FLASHNVIC_VectTab_RAM
  • Offset: 向量表偏移,必须按芯片要求对齐,常用于 BootLoader 跳转,例如 0x0000, 0x3000, 0x5000

NVIC_SystemLPConfig

void NVIC_SystemLPConfig(uint8_t LowPowerMode, FunctionalState NewState);
  • LowPowerMode: Cortex-M3 系统低功耗控制位;NVIC_LP_SEVONPEND, NVIC_LP_SLEEPDEEP, NVIC_LP_SLEEPONEXIT
  • NewState: ENABLE 置位该控制位,DISABLE 清除该控制位。

SysTick_CLKSourceConfig

void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource);
  • SysTick_CLKSource: SysTick 时钟源;SysTick_CLKSource_HCLKSysTick_CLKSource_HCLK_Div8

RCC:时钟与复位控制

常用宏

参数 说明
RCC_HSE RCC_HSE_OFF, RCC_HSE_ON, RCC_HSE_Bypass 关闭外部高速晶振、打开晶振、旁路外部时钟输入
RCC_PLLSource RCC_PLLSource_HSI_Div2, RCC_PLLSource_HSE_Div1, RCC_PLLSource_HSE_Div2 PLL 输入源;F103CBT6 常用 HSE 8 MHz × 9 得 72 MHz
RCC_PLLMul RCC_PLLMul_2RCC_PLLMul_16 PLL 倍频系数
RCC_SYSCLKSource RCC_SYSCLKSource_HSI, RCC_SYSCLKSource_HSE, RCC_SYSCLKSource_PLLCLK 系统时钟源
RCC_SYSCLK RCC_SYSCLK_Div1, _Div2, _Div4, _Div8, _Div16, _Div64, _Div128, _Div256, _Div512 AHB/HCLK 分频
RCC_HCLK RCC_HCLK_Div1, _Div2, _Div4, _Div8, _Div16 APB1/APB2 相对 HCLK 分频
RCC_USBCLKSource RCC_USBCLKSource_PLLCLK_1Div5, RCC_USBCLKSource_PLLCLK_Div1 USB 时钟来自 PLL;72 MHz 时用 1.5 分频得 48 MHz
RCC_PCLK2 RCC_PCLK2_Div2, _Div4, _Div6, _Div8 ADC 时钟分频;ADC 时钟不应超过手册限制
RCC_LSE RCC_LSE_OFF, RCC_LSE_ON, RCC_LSE_Bypass 外部低速 32.768 kHz 时钟控制
RCC_RTCCLKSource RCC_RTCCLKSource_LSE, RCC_RTCCLKSource_LSI, RCC_RTCCLKSource_HSE_Div128 RTC 时钟源
RCC_AHBPeriph RCC_AHBPeriph_DMA1, RCC_AHBPeriph_SRAM, RCC_AHBPeriph_FLITF, RCC_AHBPeriph_CRC F103CBT6 常用 AHB 外设时钟;库里还可见 DMA2, FSMC, SDIO,本芯片不适用
RCC_APB2Periph RCC_APB2Periph_AFIO, GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, ADC1, ADC2, TIM1, SPI1, USART1 F103CBT6 常用 APB2 外设时钟;GPIO 端口是否真正引出看封装
RCC_APB1Periph RCC_APB1Periph_TIM2, TIM3, TIM4, WWDG, SPI2, USART2, USART3, I2C1, I2C2, USB, CAN1, BKP, PWR F103CBT6 常用 APB1 外设时钟
RCC_MCO RCC_MCO_NoClock, RCC_MCO_SYSCLK, RCC_MCO_HSI, RCC_MCO_HSE, RCC_MCO_PLLCLK_Div2 MCO 输出源,通常在 PA8
RCC_FLAG RCC_FLAG_HSIRDY, HSERDY, PLLRDY, LSERDY, LSIRDY, PINRST, PORRST, SFTRST, IWDGRST, WWDGRST, LPWRRST 时钟就绪/复位来源标志
RCC_IT RCC_IT_LSIRDY, LSERDY, HSIRDY, HSERDY, PLLRDY, CSS RCC 中断源

RCC_DeInit

void RCC_DeInit(void);
  • 无参数:复位 RCC 时钟配置到启动默认值;不会复位备份域。

RCC_HSEConfig

void RCC_HSEConfig(uint32_t RCC_HSE);
  • RCC_HSE: HSE 状态;RCC_HSE_OFF, RCC_HSE_ON, RCC_HSE_Bypass

RCC_WaitForHSEStartUp

ErrorStatus RCC_WaitForHSEStartUp(void);
  • 无参数:等待 HSE 起振;返回 SUCCESSERROR

RCC_AdjustHSICalibrationValue

void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue);
  • HSICalibrationValue: HSI 校准值,5 bit,范围 0x00~0x1F

RCC_HSICmd

void RCC_HSICmd(FunctionalState NewState);
  • NewState: ENABLE 打开 HSI,DISABLE 关闭 HSI。

RCC_PLLConfig

void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul);
  • RCC_PLLSource: PLL 源;RCC_PLLSource_HSI_Div2, RCC_PLLSource_HSE_Div1, RCC_PLLSource_HSE_Div2
  • RCC_PLLMul: 倍频;RCC_PLLMul_2RCC_PLLMul_16

RCC_PLLCmd

void RCC_PLLCmd(FunctionalState NewState);
  • NewState: ENABLE 打开 PLL,DISABLE 关闭 PLL;切换 PLL 配置前通常需先关闭。

RCC_SYSCLKConfig

void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource);
  • RCC_SYSCLKSource: 系统时钟源;RCC_SYSCLKSource_HSI, RCC_SYSCLKSource_HSE, RCC_SYSCLKSource_PLLCLK

RCC_GetSYSCLKSource

uint8_t RCC_GetSYSCLKSource(void);
  • 无参数:返回 SWS 状态编码;通常 0x00=HSI, 0x04=HSE, 0x08=PLL。

RCC_HCLKConfig

void RCC_HCLKConfig(uint32_t RCC_SYSCLK);
  • RCC_SYSCLK: AHB/HCLK 分频;RCC_SYSCLK_Div1, _Div2, _Div4, _Div8, _Div16, _Div64, _Div128, _Div256, _Div512

RCC_PCLK1Config

void RCC_PCLK1Config(uint32_t RCC_HCLK);
  • RCC_HCLK: APB1 分频;RCC_HCLK_Div1, _Div2, _Div4, _Div8, _Div16。APB1 常用不超过 36 MHz。

RCC_PCLK2Config

void RCC_PCLK2Config(uint32_t RCC_HCLK);
  • RCC_HCLK: APB2 分频;RCC_HCLK_Div1, _Div2, _Div4, _Div8, _Div16

RCC_ITConfig

void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState);
  • RCC_IT: 中断源;RCC_IT_LSIRDY, LSERDY, HSIRDY, HSERDY, PLLRDY, CSS,可按位或组合。
  • NewState: ENABLE 开启,DISABLE 关闭。

RCC_USBCLKConfig

void RCC_USBCLKConfig(uint32_t RCC_USBCLKSource);
  • RCC_USBCLKSource: USB 时钟分频;RCC_USBCLKSource_PLLCLK_1Div5, RCC_USBCLKSource_PLLCLK_Div1。72 MHz PLL 下选 _1Div5

RCC_ADCCLKConfig

void RCC_ADCCLKConfig(uint32_t RCC_PCLK2);
  • RCC_PCLK2: ADC 分频;RCC_PCLK2_Div2, _Div4, _Div6, _Div8

RCC_LSEConfig

void RCC_LSEConfig(uint8_t RCC_LSE);
  • RCC_LSE: LSE 状态;RCC_LSE_OFF, RCC_LSE_ON, RCC_LSE_Bypass

RCC_LSICmd

void RCC_LSICmd(FunctionalState NewState);
  • NewState: ENABLE 打开 LSI,DISABLE 关闭 LSI。

RCC_RTCCLKConfig

void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource);
  • RCC_RTCCLKSource: RTC 时钟源;RCC_RTCCLKSource_LSE, RCC_RTCCLKSource_LSI, RCC_RTCCLKSource_HSE_Div128

RCC_RTCCLKCmd

void RCC_RTCCLKCmd(FunctionalState NewState);
  • NewState: ENABLE 使能 RTC 时钟,DISABLE 关闭 RTC 时钟。

RCC_GetClocksFreq

void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks);
  • RCC_Clocks: 输出结构体指针,字段有 SYSCLK_Frequency, HCLK_Frequency, PCLK1_Frequency, PCLK2_Frequency, ADCCLK_Frequency

RCC_AHBPeriphClockCmd

void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
  • RCC_AHBPeriph: AHB 外设时钟掩码;F103CBT6 常用 RCC_AHBPeriph_DMA1, SRAM, FLITF, CRC
  • NewState: ENABLE 打开时钟,DISABLE 关闭。

RCC_APB2PeriphClockCmd

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
  • RCC_APB2Periph: APB2 外设时钟掩码;F103CBT6 常用 AFIO, GPIOA~GPIOE, ADC1, ADC2, TIM1, SPI1, USART1
  • NewState: ENABLEDISABLE

RCC_APB1PeriphClockCmd

void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
  • RCC_APB1Periph: APB1 外设时钟掩码;F103CBT6 常用 TIM2, TIM3, TIM4, WWDG, SPI2, USART2, USART3, I2C1, I2C2, USB, CAN1, BKP, PWR
  • NewState: ENABLEDISABLE

RCC_APB2PeriphResetCmd

void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
  • RCC_APB2Periph: 要复位的 APB2 外设;同 RCC_APB2PeriphClockCmd
  • NewState: ENABLE 置复位,DISABLE 释放复位。

RCC_APB1PeriphResetCmd

void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
  • RCC_APB1Periph: 要复位的 APB1 外设;同 RCC_APB1PeriphClockCmd
  • NewState: ENABLE 置复位,DISABLE 释放复位。

RCC_BackupResetCmd

void RCC_BackupResetCmd(FunctionalState NewState);
  • NewState: ENABLE 复位备份域,DISABLE 释放;会影响 RTC/BKP 配置。

RCC_ClockSecuritySystemCmd

void RCC_ClockSecuritySystemCmd(FunctionalState NewState);
  • NewState: ENABLE 打开 CSS,HSE 故障时触发 NMI;DISABLE 关闭。

RCC_MCOConfig

void RCC_MCOConfig(uint8_t RCC_MCO);
  • RCC_MCO: MCO 输出源;RCC_MCO_NoClock, RCC_MCO_SYSCLK, RCC_MCO_HSI, RCC_MCO_HSE, RCC_MCO_PLLCLK_Div2

RCC_GetFlagStatus

FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG);
  • RCC_FLAG: 查询标志;RCC_FLAG_HSIRDY, HSERDY, PLLRDY, LSERDY, LSIRDY, PINRST, PORRST, SFTRST, IWDGRST, WWDGRST, LPWRRST

RCC_ClearFlag

void RCC_ClearFlag(void);
  • 无参数:清除复位标志,如 PINRST, PORRST, SFTRST 等。

RCC_GetITStatus

ITStatus RCC_GetITStatus(uint8_t RCC_IT);
  • RCC_IT: 查询中断挂起位;RCC_IT_LSIRDY, LSERDY, HSIRDY, HSERDY, PLLRDY, CSS

RCC_ClearITPendingBit

void RCC_ClearITPendingBit(uint8_t RCC_IT);
  • RCC_IT: 要清除的 RCC 中断挂起位;取值同 RCC_GetITStatus

GPIO / AFIO:通用 IO 与复用重映射

常用宏

参数 说明
GPIOx GPIOA, GPIOB, GPIOC, GPIOD, GPIOE F103CBT6 LQFP48 常见端口资源;端口时钟需先开。库宏还可能支持 GPIOF/G,本型号不适用
GPIO_Pin GPIO_Pin_0GPIO_Pin_15, GPIO_Pin_All 引脚掩码,可按位或组合
GPIO_Speed GPIO_Speed_10MHz, GPIO_Speed_2MHz, GPIO_Speed_50MHz 输出模式下的最大翻转速率/驱动速度
GPIO_Mode GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD, GPIO_Mode_IPU 下拉输入、上拉输入
GPIO_Mode_Out_OD, GPIO_Mode_Out_PP 通用开漏输出、通用推挽输出
GPIO_Mode_AF_OD, GPIO_Mode_AF_PP 复用开漏、复用推挽
BitVal Bit_RESET, Bit_SET 写低/写高
GPIO_PortSource GPIO_PortSourceGPIOAGPIO_PortSourceGPIOG EXTI/事件输出端口源;F103CBT6 常用 A~E
GPIO_PinSource GPIO_PinSource0GPIO_PinSource15 EXTI/事件输出引脚序号
GPIO_Remap GPIO_Remap_SPI1, GPIO_Remap_I2C1, GPIO_Remap_USART1, GPIO_Remap_USART2, GPIO_PartialRemap_USART3, GPIO_FullRemap_USART3 通信外设重映射
GPIO_PartialRemap_TIM1, GPIO_FullRemap_TIM1, GPIO_PartialRemap1_TIM2, GPIO_PartialRemap2_TIM2, GPIO_FullRemap_TIM2, GPIO_PartialRemap_TIM3, GPIO_FullRemap_TIM3, GPIO_Remap_TIM4 定时器重映射
GPIO_Remap1_CAN1, GPIO_Remap2_CAN1, GPIO_Remap_PD01, GPIO_Remap_SWJ_NoJTRST, GPIO_Remap_SWJ_JTAGDisable, GPIO_Remap_SWJ_Disable CAN、PD0/PD1、JTAG/SWD 相关重映射

GPIO_DeInit

void GPIO_DeInit(GPIO_TypeDef* GPIOx);
  • GPIOx: 要复位的端口;GPIOA~GPIOE 常用于 F103CBT6。

GPIO_AFIODeInit

void GPIO_AFIODeInit(void);
  • 无参数:复位 AFIO 寄存器,包括 EXTI 映射、重映射等。

GPIO_Init

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
  • GPIOx: 目标端口,如 GPIOA
  • GPIO_InitStruct: 配置结构体指针。
  • GPIO_Pin: 要配置的引脚掩码;GPIO_Pin_0~GPIO_Pin_15GPIO_Pin_All
  • GPIO_Speed: 输出速度;GPIO_Speed_2MHz, GPIO_Speed_10MHz, GPIO_Speed_50MHz。输入模式下该字段通常无效但仍需初始化。
  • GPIO_Mode: 工作模式;GPIO_Mode_AIN, IN_FLOATING, IPD, IPU, Out_OD, Out_PP, AF_OD, AF_PP

GPIO_StructInit

void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
  • GPIO_InitStruct: 被写入默认值的结构体指针;默认一般为 GPIO_Pin_All, GPIO_Speed_2MHz, GPIO_Mode_IN_FLOATING

GPIO_ReadInputDataBit

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  • GPIOx: 端口。
  • GPIO_Pin: 单个引脚,GPIO_Pin_0~GPIO_Pin_15,不要传多个位。返回 0 或 1。

GPIO_ReadInputData

uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
  • GPIOx: 端口。返回整个 IDR 输入寄存器低 16 位。

GPIO_ReadOutputDataBit

uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  • GPIOx: 端口。
  • GPIO_Pin: 单个引脚宏;返回 ODR 中该位的状态。

GPIO_ReadOutputData

uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
  • GPIOx: 端口。返回整个 ODR 输出锁存寄存器低 16 位。

GPIO_SetBits

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  • GPIOx: 端口。
  • GPIO_Pin: 要置 1 的引脚掩码,可用 GPIO_Pin_0 | GPIO_Pin_1

GPIO_ResetBits

void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  • GPIOx: 端口。
  • GPIO_Pin: 要清 0 的引脚掩码。

GPIO_WriteBit

void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
  • GPIOx: 端口。
  • GPIO_Pin: 单个或多个引脚掩码。
  • BitVal: Bit_SET 写 1,Bit_RESET 写 0。

GPIO_Write

void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
  • GPIOx: 端口。
  • PortVal: 写入 ODR 的 16 位值;每一位对应一个引脚输出锁存。

GPIO_PinLockConfig

void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  • GPIOx: 端口。
  • GPIO_Pin: 要锁定配置的引脚掩码;锁定后直到下一次复位才可修改配置。

GPIO_EventOutputConfig

void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
  • GPIO_PortSource: 事件输出端口源;GPIO_PortSourceGPIOA~GPIO_PortSourceGPIOE 常用。
  • GPIO_PinSource: 事件输出引脚源;GPIO_PinSource0~GPIO_PinSource15

GPIO_EventOutputCmd

void GPIO_EventOutputCmd(FunctionalState NewState);
  • NewState: ENABLE 开启 AFIO 事件输出,DISABLE 关闭。

GPIO_PinRemapConfig

void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
  • GPIO_Remap: 重映射项;常用见本节 GPIO_Remap_*,例如 GPIO_Remap_SWJ_JTAGDisable 释放 PB3/PB4/PA15 但保留 SWD。
  • NewState: ENABLE 使能该重映射,DISABLE 关闭。

GPIO_EXTILineConfig

void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
  • GPIO_PortSource: EXTI 输入端口;GPIO_PortSourceGPIOA~GPIO_PortSourceGPIOE 常用。
  • GPIO_PinSource: EXTI 线号来源;GPIO_PinSource0~GPIO_PinSource15,如 PA0 对应 A + 0。

GPIO_ETH_MediaInterfaceConfig

void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface);
  • GPIO_ETH_MediaInterface: GPIO_ETH_MediaInterface_MIIGPIO_ETH_MediaInterface_RMII。仅 connectivity-line 以太网设备使用;F103CBT6 不适用。

EXTI:外部中断/事件控制器

常用宏

参数 说明
EXTI_Line EXTI_Line0EXTI_Line15 GPIO 外部中断线;需先用 GPIO_EXTILineConfig 映射端口
EXTI_Line16, EXTI_Line17, EXTI_Line18 PVD、RTC Alarm、USB Wakeup 线
EXTI_Mode EXTI_Mode_Interrupt, EXTI_Mode_Event 产生中断或仅产生事件
EXTI_Trigger EXTI_Trigger_Rising, EXTI_Trigger_Falling, EXTI_Trigger_Rising_Falling 上升沿、下降沿、双边沿触发
EXTI_LineCmd ENABLE, DISABLE 是否使能该线

EXTI_DeInit

void EXTI_DeInit(void);
  • 无参数:复位 EXTI 配置寄存器。

EXTI_Init

void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);
  • EXTI_InitStruct: 配置结构体指针。
  • EXTI_Line: EXTI 线,EXTI_Line0~EXTI_Line18 常用于 F103CBT6。
  • EXTI_Mode: EXTI_Mode_InterruptEXTI_Mode_Event
  • EXTI_Trigger: EXTI_Trigger_Rising, EXTI_Trigger_Falling, EXTI_Trigger_Rising_Falling
  • EXTI_LineCmd: ENABLEDISABLE

EXTI_StructInit

void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct);
  • EXTI_InitStruct: 写入默认值;通常 line none/中断模式/下降沿/禁用。

EXTI_GenerateSWInterrupt

void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);
  • EXTI_Line: 软件触发的 EXTI 线;EXTI_Line0~EXTI_Line18

EXTI_GetFlagStatus

FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);
  • EXTI_Line: 查询挂起标志的 EXTI 线;返回 SET/RESET

EXTI_ClearFlag

void EXTI_ClearFlag(uint32_t EXTI_Line);
  • EXTI_Line: 要清除的 EXTI 挂起标志;可按位或组合。

EXTI_GetITStatus

ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
  • EXTI_Line: 查询中断挂起状态的 EXTI 线;返回 SET/RESET

EXTI_ClearITPendingBit

void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
  • EXTI_Line: 清除中断挂起位的 EXTI 线;中断服务函数内常用。

DMA:直接存储器访问

常用宏

参数 说明
DMAy_Channelx DMA1_Channel1DMA1_Channel7 F103CBT6 为 7 通道 DMA1;DMA2 不适用
DMA_DIR DMA_DIR_PeripheralDST, DMA_DIR_PeripheralSRC 外设作为目的地址或源地址
DMA_PeripheralInc/DMA_MemoryInc DMA_PeripheralInc_Enable/Disable, DMA_MemoryInc_Enable/Disable 地址是否自增
DMA_PeripheralDataSize/DMA_MemoryDataSize DMA_*DataSize_Byte, _HalfWord, _Word 传输数据宽度 8/16/32 bit
DMA_Mode DMA_Mode_Normal, DMA_Mode_Circular 普通模式或循环模式
DMA_Priority DMA_Priority_Low, Medium, High, VeryHigh DMA 通道优先级
DMA_M2M DMA_M2M_Enable, DMA_M2M_Disable 内存到内存模式
DMA_IT DMA_IT_TC, DMA_IT_HT, DMA_IT_TE 传输完成、半传输、传输错误中断
DMA_FLAG DMA1_FLAG_GL1/TC1/HT1/TE1GL7/TC7/HT7/TE7 DMA1 各通道全局/完成/半传输/错误标志

DMA_DeInit

void DMA_DeInit(DMA_Channel_TypeDef* DMAy_Channelx);
  • DMAy_Channelx: 要复位的通道;F103CBT6 用 DMA1_Channel1~DMA1_Channel7

DMA_Init

void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct);
  • DMAy_Channelx: DMA 通道。
  • DMA_InitStruct: 初始化结构体指针。
  • DMA_PeripheralBaseAddr: 外设寄存器地址,如 (uint32_t)&USART1->DR
  • DMA_MemoryBaseAddr: 内存缓冲区地址。
  • DMA_DIR: DMA_DIR_PeripheralDSTDMA_DIR_PeripheralSRC
  • DMA_BufferSize: 传输数据单元数量,不是字节数;范围与 CNDTR 寄存器一致,通常 1~65535。
  • DMA_PeripheralInc: DMA_PeripheralInc_Enable/Disable
  • DMA_MemoryInc: DMA_MemoryInc_Enable/Disable
  • DMA_PeripheralDataSize: DMA_PeripheralDataSize_Byte/HalfWord/Word
  • DMA_MemoryDataSize: DMA_MemoryDataSize_Byte/HalfWord/Word
  • DMA_Mode: DMA_Mode_NormalDMA_Mode_Circular
  • DMA_Priority: DMA_Priority_Low/Medium/High/VeryHigh
  • DMA_M2M: DMA_M2M_EnableDMA_M2M_Disable

DMA_StructInit

void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct);
  • DMA_InitStruct: 写入默认 DMA 配置,便于再修改。

DMA_Cmd

void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState);
  • DMAy_Channelx: DMA 通道。
  • NewState: ENABLE 启动通道,DISABLE 关闭通道。改 CNDTR/地址前需先关闭。

DMA_ITConfig

void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState);
  • DMAy_Channelx: DMA 通道。
  • DMA_IT: DMA_IT_TC, DMA_IT_HT, DMA_IT_TE,可按位或。
  • NewState: ENABLEDISABLE

DMA_SetCurrDataCounter

void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber);
  • DMAy_Channelx: DMA 通道。
  • DataNumber: 当前传输数据单元数量;通常 1~65535。

DMA_GetCurrDataCounter

uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx);
  • DMAy_Channelx: DMA 通道。返回尚未传输的数据单元数量。

DMA_GetFlagStatus

FlagStatus DMA_GetFlagStatus(uint32_t DMAy_FLAG);
  • DMAy_FLAG: DMA 标志;F103CBT6 用 DMA1_FLAG_GLx, TCx, HTx, TEx,x=1…7。

DMA_ClearFlag

void DMA_ClearFlag(uint32_t DMAy_FLAG);
  • DMAy_FLAG: 要清除的 DMA 标志;可按位或组合。

DMA_GetITStatus

ITStatus DMA_GetITStatus(uint32_t DMAy_IT);
  • DMAy_IT: DMA 中断挂起位;如 DMA1_IT_TC1, DMA1_IT_HT1, DMA1_IT_TE1 到通道 7。

DMA_ClearITPendingBit

void DMA_ClearITPendingBit(uint32_t DMAy_IT);
  • DMAy_IT: 要清除的 DMA 中断挂起位;通常在 DMA ISR 中使用。

ADC:模数转换器 ADC1/ADC2

常用宏

参数 说明
ADCx ADC1, ADC2 F103CBT6 有两个 12-bit ADC;无 ADC3
ADC_Mode ADC_Mode_Independent 独立模式,最常用
ADC_Mode_RegInjecSimult, ADC_Mode_RegSimult_AlterTrig, ADC_Mode_InjecSimult_FastInterl, ADC_Mode_InjecSimult_SlowInterl, ADC_Mode_InjecSimult, ADC_Mode_RegSimult, ADC_Mode_FastInterl, ADC_Mode_SlowInterl, ADC_Mode_AlterTrig 双 ADC 模式,依赖 ADC1/ADC2 组合
ADC_DataAlign ADC_DataAlign_Right, ADC_DataAlign_Left 结果右对齐/左对齐
ADC_Channel ADC_Channel_0ADC_Channel_15, ADC_Channel_16, ADC_Channel_17 外部通道 0~15;16 为温度传感器、17 为 Vrefint,内部通道通常仅 ADC1 使用
ADC_SampleTime ADC_SampleTime_1Cycles5, 7Cycles5, 13Cycles5, 28Cycles5, 41Cycles5, 55Cycles5, 71Cycles5, 239Cycles5 采样周期;源阻抗高时取更长
ADC_ExternalTrigConv ADC_ExternalTrigConv_T1_CC1, T1_CC2, T1_CC3, T2_CC2, T3_TRGO, T4_CC4, Ext_IT11_TIM8_TRGO, None 规则组外部触发源;常用 None 配合软件触发
ADC_ExternalTrigInjecConv ADC_ExternalTrigInjecConv_T1_TRGO, T1_CC4, T2_TRGO, T2_CC1, T3_CC4, T4_TRGO, Ext_IT15_TIM8_CC4, None 注入组外部触发源
ADC_IT ADC_IT_EOC, ADC_IT_AWD, ADC_IT_JEOC 规则转换结束、模拟看门狗、注入转换结束中断
ADC_FLAG ADC_FLAG_AWD, EOC, JEOC, JSTRT, STRT ADC 状态标志
ADC_AnalogWatchdog ADC_AnalogWatchdog_SingleRegEnable, SingleInjecEnable, SingleRegOrInjecEnable, AllRegEnable, AllInjecEnable, AllRegAllInjecEnable, None 模拟看门狗监控范围

ADC_DeInit

void ADC_DeInit(ADC_TypeDef* ADCx);
  • ADCx: ADC1ADC2;复位对应 ADC 外设。

ADC_Init

void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
  • ADCx: ADC1ADC2
  • ADC_InitStruct: 初始化结构体。
  • ADC_Mode: ADC 模式;常用 ADC_Mode_Independent
  • ADC_ScanConvMode: ENABLE 扫描多个通道,DISABLE 单通道。
  • ADC_ContinuousConvMode: ENABLE 连续转换,DISABLE 单次转换。
  • ADC_ExternalTrigConv: 规则组外部触发源;常用 ADC_ExternalTrigConv_None
  • ADC_DataAlign: ADC_DataAlign_RightADC_DataAlign_Left
  • ADC_NbrOfChannel: 规则序列通道数量,1~16。

ADC_StructInit

void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct);
  • ADC_InitStruct: 写入默认 ADC 配置。

ADC_Cmd

void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  • ADCx: ADC1ADC2
  • NewState: ENABLE 开启 ADC,DISABLE 关闭 ADC。

ADC_DMACmd

void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  • ADCx: 通常 ADC1/ADC2
  • NewState: ENABLE 打开 ADC DMA 请求,DISABLE 关闭。

ADC_ITConfig

void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState);
  • ADCx: ADC 实例。
  • ADC_IT: ADC_IT_EOC, ADC_IT_AWD, ADC_IT_JEOC,可组合。
  • NewState: ENABLEDISABLE

ADC_ResetCalibration

void ADC_ResetCalibration(ADC_TypeDef* ADCx);
  • ADCx: ADC 实例;启动复位校准寄存器。

ADC_GetResetCalibrationStatus

FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx);
  • ADCx: ADC 实例;返回复位校准是否仍在进行。

ADC_StartCalibration

void ADC_StartCalibration(ADC_TypeDef* ADCx);
  • ADCx: ADC 实例;启动校准。通常上电使能 ADC 后先复位校准再校准。

ADC_GetCalibrationStatus

FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx);
  • ADCx: ADC 实例;返回校准是否仍在进行。

ADC_SoftwareStartConvCmd

void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  • ADCx: ADC 实例。
  • NewState: ENABLE 触发规则组软件转换;DISABLE 停止/无效。

ADC_GetSoftwareStartConvStatus

FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx);
  • ADCx: ADC 实例;查询规则组软件启动状态位。

ADC_DiscModeChannelCountConfig

void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number);
  • ADCx: ADC 实例。
  • Number: 间断模式下每次转换的规则通道数,1~8。

ADC_DiscModeCmd

void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  • ADCx: ADC 实例。
  • NewState: ENABLE 开启规则组间断模式,DISABLE 关闭。

ADC_RegularChannelConfig

void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);
  • ADCx: ADC 实例。
  • ADC_Channel: ADC_Channel_0~ADC_Channel_17;F103CBT6 封装实际可用模拟引脚以数据手册为准。
  • Rank: 规则序列次序,1~16。
  • ADC_SampleTime: ADC_SampleTime_1Cycles5ADC_SampleTime_239Cycles5

ADC_ExternalTrigConvCmd

void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  • ADCx: ADC 实例。
  • NewState: ENABLE 允许规则组外部触发,DISABLE 禁止。软件触发常设 ENABLE 后调用软件启动。

ADC_GetConversionValue

uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);
  • ADCx: ADC 实例;读取规则组转换结果,12-bit 有效,受对齐方式影响。

ADC_GetDualModeConversionValue

uint32_t ADC_GetDualModeConversionValue(void);
  • 无参数:读取双 ADC 模式的组合转换结果,高/低半字来自两个 ADC。

ADC_AutoInjectedConvCmd

void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  • ADCx: ADC 实例。
  • NewState: ENABLE 规则组结束后自动注入转换,DISABLE 关闭。

ADC_InjectedDiscModeCmd

void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  • ADCx: ADC 实例。
  • NewState: ENABLE 注入组间断模式,DISABLE 关闭。

ADC_ExternalTrigInjectedConvConfig

void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv);
  • ADCx: ADC 实例。
  • ADC_ExternalTrigInjecConv: 注入组外部触发源;见本节 ADC_ExternalTrigInjecConv_*

ADC_ExternalTrigInjectedConvCmd

void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  • ADCx: ADC 实例。
  • NewState: ENABLE 允许注入组外部触发,DISABLE 禁止。

ADC_SoftwareStartInjectedConvCmd

void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
  • ADCx: ADC 实例。
  • NewState: ENABLE 启动注入组软件转换。

ADC_GetSoftwareStartInjectedConvCmdStatus

FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx);
  • ADCx: ADC 实例;查询注入组软件启动状态位。

ADC_InjectedChannelConfig

void ADC_InjectedChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);
  • ADCx: ADC 实例。
  • ADC_Channel: ADC_Channel_0~ADC_Channel_17
  • Rank: 注入序列次序,1~4。
  • ADC_SampleTime: 采样时间宏。

ADC_InjectedSequencerLengthConfig

void ADC_InjectedSequencerLengthConfig(ADC_TypeDef* ADCx, uint8_t Length);
  • ADCx: ADC 实例。
  • Length: 注入序列长度,1~4。

ADC_SetInjectedOffset

void ADC_SetInjectedOffset(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel, uint16_t Offset);
  • ADCx: ADC 实例。
  • ADC_InjectedChannel: ADC_InjectedChannel_1~ADC_InjectedChannel_4
  • Offset: 注入通道偏移值,12-bit 常用范围 0~0x0FFF。

ADC_GetInjectedConversionValue

uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel);
  • ADCx: ADC 实例。
  • ADC_InjectedChannel: ADC_InjectedChannel_1~ADC_InjectedChannel_4;返回对应注入数据寄存器值。

ADC_AnalogWatchdogCmd

void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog);
  • ADCx: ADC 实例。
  • ADC_AnalogWatchdog: 见本节 ADC_AnalogWatchdog_*

ADC_AnalogWatchdogThresholdsConfig

void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold, uint16_t LowThreshold);
  • ADCx: ADC 实例。
  • HighThreshold: 高阈值,12-bit 常用 0~0x0FFF。
  • LowThreshold: 低阈值,12-bit 常用 0~0x0FFF。

ADC_AnalogWatchdogSingleChannelConfig

void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel);
  • ADCx: ADC 实例。
  • ADC_Channel: 被单通道看门狗监控的通道,ADC_Channel_0~ADC_Channel_17

ADC_TempSensorVrefintCmd

void ADC_TempSensorVrefintCmd(FunctionalState NewState);
  • NewState: ENABLE 打开内部温度传感器和 Vrefint 通道,DISABLE 关闭;使用 ADC_Channel_16/17 前需要开启。

ADC_GetFlagStatus

FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);
  • ADCx: ADC 实例。
  • ADC_FLAG: ADC_FLAG_AWD, EOC, JEOC, JSTRT, STRT

ADC_ClearFlag

void ADC_ClearFlag(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);
  • ADCx: ADC 实例。
  • ADC_FLAG: 要清除的 ADC 标志;可组合。

ADC_GetITStatus

ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, uint16_t ADC_IT);
  • ADCx: ADC 实例。
  • ADC_IT: ADC_IT_EOC, ADC_IT_AWD, ADC_IT_JEOC

ADC_ClearITPendingBit

void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, uint16_t ADC_IT);
  • ADCx: ADC 实例。
  • ADC_IT: 要清除的 ADC 中断挂起位。

TIM:定时器 TIM1~TIM4

常用宏

参数 说明
TIMx TIM1, TIM2, TIM3, TIM4 F103CBT6:TIM1 为高级定时器,TIM2~4 为通用定时器
TIM_CounterMode TIM_CounterMode_Up, Down, CenterAligned1, CenterAligned2, CenterAligned3 计数方向/中心对齐模式
TIM_CKD TIM_CKD_DIV1, DIV2, DIV4 时钟分割,影响滤波/死区时钟
TIM_OCMode TIM_OCMode_Timing, Active, Inactive, Toggle, PWM1, PWM2 输出比较/PWM 模式
TIM_OutputState TIM_OutputState_Enable, Disable 主输出通道使能
TIM_OutputNState TIM_OutputNState_Enable, Disable 互补输出通道使能,仅 TIM1 相关
TIM_OCPolarity TIM_OCPolarity_High, Low 主输出有效极性
TIM_OCNPolarity TIM_OCNPolarity_High, Low 互补输出有效极性
TIM_OCIdleState TIM_OCIdleState_Set, Reset 空闲状态下主输出电平
TIM_OCNIdleState TIM_OCNIdleState_Set, Reset 空闲状态下互补输出电平
TIM_Channel TIM_Channel_1, 2, 3, 4 通道选择
TIM_ICPolarity TIM_ICPolarity_Rising, Falling, BothEdge 输入捕获极性;BothEdge 在部分函数/通道支持
TIM_ICSelection TIM_ICSelection_DirectTI, IndirectTI, TRC 输入捕获信号来源
TIM_ICPSC TIM_ICPSC_DIV1, DIV2, DIV4, DIV8 输入捕获预分频
TIM_IT TIM_IT_Update, CC1, CC2, CC3, CC4, COM, Trigger, Break 定时器中断源;TIM2~4 无 Break/COM 视功能而定
TIM_DMASource TIM_DMA_Update, CC1, CC2, CC3, CC4, COM, Trigger DMA 请求源
TIM_EventSource TIM_EventSource_Update, CC1, CC2, CC3, CC4, COM, Trigger, Break 软件事件源
TIM_FLAG TIM_FLAG_Update, CC1, CC2, CC3, CC4, COM, Trigger, Break, CC1OF, CC2OF, CC3OF, CC4OF 状态标志
TIM_PSCReloadMode TIM_PSCReloadMode_Update, Immediate 预分频器在更新事件或立即重装
TIM_OCPreload/TIM_OCFast/TIM_OCClear TIM_OCPreload_Enable/Disable, TIM_OCFast_Enable/Disable, TIM_OCClear_Enable/Disable 输出比较预装载、快速、清除功能
TIM_UpdateSource TIM_UpdateSource_Global, Regular 更新请求来源
TIM_OPMode TIM_OPMode_Single, Repetitive 单脉冲或重复模式
TIM_TRGOSource TIM_TRGOSource_Reset, Enable, Update, OC1, OC1Ref, OC2Ref, OC3Ref, OC4Ref 主模式 TRGO 输出源
TIM_SlaveMode TIM_SlaveMode_Reset, Gated, Trigger, External1 从模式控制器模式
TIM_InputTriggerSource TIM_TS_ITR0, ITR1, ITR2, ITR3, TI1F_ED, TI1FP1, TI2FP2, ETRF 触发输入选择
TIM_ExtTRGPrescaler TIM_ExtTRGPSC_OFF, DIV2, DIV4, DIV8 外部触发 ETR 预分频
TIM_ExtTRGPolarity TIM_ExtTRGPolarity_NonInverted, Inverted ETR 极性
TIM_EncoderMode TIM_EncoderMode_TI1, TI2, TI12 编码器接口模式
TIM_BDTR TIM_OSSRState_Enable/Disable, TIM_OSSIState_Enable/Disable, TIM_LOCKLevel_OFF/1/2/3, TIM_Break_Enable/Disable, TIM_BreakPolarity_Low/High, TIM_AutomaticOutput_Enable/Disable TIM1 刹车/死区寄存器配置

TIM_DeInit

void TIM_DeInit(TIM_TypeDef* TIMx);
  • TIMx: TIM1, TIM2, TIM3, TIM4;复位对应定时器寄存器。

TIM_TimeBaseInit

void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
  • TIMx: 定时器实例。
  • TIM_TimeBaseInitStruct: 时基结构体。
  • TIM_Prescaler: 预分频值 PSC,实际分频为 PSC+1,范围 0~65535。
  • TIM_CounterMode: TIM_CounterMode_Up, Down, CenterAligned1/2/3
  • TIM_Period: 自动重装载 ARR,范围 0~65535。
  • TIM_ClockDivision: TIM_CKD_DIV1, DIV2, DIV4
  • TIM_RepetitionCounter: 重复计数器,主要 TIM1 使用,0~255。

TIM_OC1Init

void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
  • TIMx: 定时器。
  • TIM_OCInitStruct: 输出比较结构体;字段见 TIM_OCMode, TIM_OutputState, TIM_Pulse, TIM_OCPolarity 等。配置通道 1。

TIM_OC2Init

void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
  • TIMx: 定时器。
  • TIM_OCInitStruct: 输出比较结构体;配置通道 2。

TIM_OC3Init

void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
  • TIMx: 定时器。
  • TIM_OCInitStruct: 输出比较结构体;配置通道 3。

TIM_OC4Init

void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
  • TIMx: 定时器。
  • TIM_OCInitStruct: 输出比较结构体;配置通道 4。

TIM_ICInit

void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
  • TIMx: 定时器。
  • TIM_ICInitStruct: 输入捕获结构体。
  • TIM_Channel: TIM_Channel_1~TIM_Channel_4
  • TIM_ICPolarity: TIM_ICPolarity_Rising, Falling, BothEdge
  • TIM_ICSelection: TIM_ICSelection_DirectTI, IndirectTI, TRC
  • TIM_ICPrescaler: TIM_ICPSC_DIV1, DIV2, DIV4, DIV8
  • TIM_ICFilter: 输入滤波,4 bit,范围 0x0~0xF。

TIM_PWMIConfig

void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
  • TIMx: 定时器。
  • TIM_ICInitStruct: PWM 输入捕获结构体;库会同时配置一对互补捕获通道。

TIM_BDTRConfig

void TIM_BDTRConfig(TIM_TypeDef* TIMx, TIM_BDTRInitTypeDef* TIM_BDTRInitStruct);
  • TIMx: 通常 TIM1
  • TIM_BDTRInitStruct: 刹车/死区结构体。字段包括 TIM_OSSRState, TIM_OSSIState, TIM_LOCKLevel, TIM_DeadTime, TIM_Break, TIM_BreakPolarity, TIM_AutomaticOutput

TIM_TimeBaseStructInit

void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
  • TIM_TimeBaseInitStruct: 写入时基默认值。

TIM_OCStructInit

void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct);
  • TIM_OCInitStruct: 写入输出比较默认值。

TIM_ICStructInit

void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct);
  • TIM_ICInitStruct: 写入输入捕获默认值。

TIM_BDTRStructInit

void TIM_BDTRStructInit(TIM_BDTRInitTypeDef* TIM_BDTRInitStruct);
  • TIM_BDTRInitStruct: 写入 BDTR 默认值。

TIM_Cmd

void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);
  • TIMx: 定时器。
  • NewState: ENABLE 使能计数器,DISABLE 停止计数。

TIM_CtrlPWMOutputs

void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState);
  • TIMx: 高级定时器,F103CBT6 为 TIM1
  • NewState: ENABLE 置 MOE 允许 PWM 输出,DISABLE 关闭主输出。

TIM_ITConfig

void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
  • TIMx: 定时器。
  • TIM_IT: TIM_IT_Update, CC1, CC2, CC3, CC4, COM, Trigger, Break,可组合。
  • NewState: ENABLEDISABLE

TIM_GenerateEvent

void TIM_GenerateEvent(TIM_TypeDef* TIMx, uint16_t TIM_EventSource);
  • TIMx: 定时器。
  • TIM_EventSource: TIM_EventSource_Update, CC1, CC2, CC3, CC4, COM, Trigger, Break,可组合。

TIM_DMAConfig

void TIM_DMAConfig(TIM_TypeDef* TIMx, uint16_t TIM_DMABase, uint16_t TIM_DMABurstLength);
  • TIMx: 定时器。
  • TIM_DMABase: DMA 突发传输基地址;如 TIM_DMABase_CR1, CR2, SMCR, DIER, SR, EGR, CCMR1, CCMR2, CCER, CNT, PSC, ARR, RCR, CCR1~CCR4, BDTR, DCR
  • TIM_DMABurstLength: 突发长度;TIM_DMABurstLength_1TransferTIM_DMABurstLength_18Transfers

TIM_DMACmd

void TIM_DMACmd(TIM_TypeDef* TIMx, uint16_t TIM_DMASource, FunctionalState NewState);
  • TIMx: 定时器。
  • TIM_DMASource: TIM_DMA_Update, CC1, CC2, CC3, CC4, COM, Trigger
  • NewState: ENABLEDISABLE

TIM_InternalClockConfig

void TIM_InternalClockConfig(TIM_TypeDef* TIMx);
  • TIMx: 定时器;选择内部时钟作为计数时钟。

TIM_ITRxExternalClockConfig

void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
  • TIMx: 定时器。
  • TIM_InputTriggerSource: TIM_TS_ITR0~TIM_TS_ITR3,将内部触发作为外部时钟。

TIM_TIxExternalClockConfig

void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource, uint16_t TIM_ICPolarity, uint16_t ICFilter);
  • TIMx: 定时器。
  • TIM_TIxExternalCLKSource: TIM_TIxExternalCLK1Source_TI1, TIM_TIxExternalCLK1Source_TI2, TIM_TIxExternalCLK1Source_TI1ED
  • TIM_ICPolarity: TIM_ICPolarity_RisingTIM_ICPolarity_Falling
  • ICFilter: 输入滤波 0x0~0xF。

TIM_ETRClockMode1Config

void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
  • TIMx: 定时器。
  • TIM_ExtTRGPrescaler: TIM_ExtTRGPSC_OFF, DIV2, DIV4, DIV8
  • TIM_ExtTRGPolarity: TIM_ExtTRGPolarity_NonInvertedInverted
  • ExtTRGFilter: ETR 滤波 0x0~0xF。

TIM_ETRClockMode2Config

void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
  • 参数同 TIM_ETRClockMode1Config;选择外部时钟模式 2。

TIM_ETRConfig

void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
  • TIMx: 定时器。
  • TIM_ExtTRGPrescaler: TIM_ExtTRGPSC_OFF/DIV2/DIV4/DIV8
  • TIM_ExtTRGPolarity: NonInvertedInverted
  • ExtTRGFilter: 0x0~0xF。

TIM_PrescalerConfig

void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode);
  • TIMx: 定时器。
  • Prescaler: PSC 值,0~65535。
  • TIM_PSCReloadMode: TIM_PSCReloadMode_UpdateTIM_PSCReloadMode_Immediate

TIM_CounterModeConfig

void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode);
  • TIMx: 定时器。
  • TIM_CounterMode: TIM_CounterMode_Up, Down, CenterAligned1/2/3

TIM_SelectInputTrigger

void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
  • TIMx: 定时器。
  • TIM_InputTriggerSource: TIM_TS_ITR0, ITR1, ITR2, ITR3, TI1F_ED, TI1FP1, TI2FP2, ETRF

TIM_EncoderInterfaceConfig

void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode, uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity);
  • TIMx: 通用定时器常用 TIM2~TIM4
  • TIM_EncoderMode: TIM_EncoderMode_TI1, TI2, TI12
  • TIM_IC1Polarity: TIM_ICPolarity_RisingFalling
  • TIM_IC2Polarity: TIM_ICPolarity_RisingFalling

TIM_ForcedOC1Config

void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
  • TIMx: 定时器。
  • TIM_ForcedAction: TIM_ForcedAction_ActiveTIM_ForcedAction_InActive;强制 CH1 比较输出。

TIM_ForcedOC2Config

void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
  • 参数同 TIM_ForcedOC1Config;作用于 CH2。

TIM_ForcedOC3Config

void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
  • 参数同 TIM_ForcedOC1Config;作用于 CH3。

TIM_ForcedOC4Config

void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
  • 参数同 TIM_ForcedOC1Config;作用于 CH4。

TIM_ARRPreloadConfig

void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);
  • TIMx: 定时器。
  • NewState: ENABLE 打开 ARR 预装载,DISABLE 关闭。

TIM_SelectCOM

void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState);
  • TIMx: 高级定时器,通常 TIM1
  • NewState: 选择是否用 COM 事件更新捕获比较控制位。

TIM_SelectCCDMA

void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState);
  • TIMx: 定时器。
  • NewState: ENABLE 由 CC 事件触发 DMA,DISABLE 由更新事件触发。

TIM_CCPreloadControl

void TIM_CCPreloadControl(TIM_TypeDef* TIMx, FunctionalState NewState);
  • TIMx: 高级定时器,通常 TIM1
  • NewState: ENABLE 使能捕获比较控制位预装载。

TIM_OC1PreloadConfig

void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
  • TIMx: 定时器。
  • TIM_OCPreload: TIM_OCPreload_EnableTIM_OCPreload_Disable

TIM_OC2PreloadConfig

void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
  • 参数同 TIM_OC1PreloadConfig;作用于 CH2。

TIM_OC3PreloadConfig

void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
  • 参数同 TIM_OC1PreloadConfig;作用于 CH3。

TIM_OC4PreloadConfig

void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
  • 参数同 TIM_OC1PreloadConfig;作用于 CH4。

TIM_OC1FastConfig

void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
  • TIMx: 定时器。
  • TIM_OCFast: TIM_OCFast_EnableTIM_OCFast_Disable;CH1 快速使能。

TIM_OC2FastConfig

void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
  • 参数同 TIM_OC1FastConfig;作用于 CH2。

TIM_OC3FastConfig

void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
  • 参数同 TIM_OC1FastConfig;作用于 CH3。

TIM_OC4FastConfig

void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
  • 参数同 TIM_OC1FastConfig;作用于 CH4。

TIM_ClearOC1Ref

void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
  • TIMx: 定时器。
  • TIM_OCClear: TIM_OCClear_EnableTIM_OCClear_Disable;外部触发时清除 OC1REF。

TIM_ClearOC2Ref

void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
  • 参数同 TIM_ClearOC1Ref;作用于 CH2。

TIM_ClearOC3Ref

void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
  • 参数同 TIM_ClearOC1Ref;作用于 CH3。

TIM_ClearOC4Ref

void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
  • 参数同 TIM_ClearOC1Ref;作用于 CH4。

TIM_OC1PolarityConfig

void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
  • TIMx: 定时器。
  • TIM_OCPolarity: TIM_OCPolarity_HighTIM_OCPolarity_Low

TIM_OC2PolarityConfig

void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
  • 参数同 TIM_OC1PolarityConfig;作用于 CH2。

TIM_OC3PolarityConfig

void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
  • 参数同 TIM_OC1PolarityConfig;作用于 CH3。

TIM_OC4PolarityConfig

void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
  • 参数同 TIM_OC1PolarityConfig;作用于 CH4。

TIM_OC1NPolarityConfig

void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
  • TIMx: 高级定时器 TIM1
  • TIM_OCNPolarity: TIM_OCNPolarity_HighTIM_OCNPolarity_Low

TIM_OC2NPolarityConfig

void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
  • 参数同 TIM_OC1NPolarityConfig;作用于 CH2N。

TIM_OC3NPolarityConfig

void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
  • 参数同 TIM_OC1NPolarityConfig;作用于 CH3N。

TIM_CCxCmd

void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx);
  • TIMx: 定时器。
  • TIM_Channel: TIM_Channel_1~TIM_Channel_4
  • TIM_CCx: TIM_CCx_EnableTIM_CCx_Disable

TIM_CCxNCmd

void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN);
  • TIMx: 高级定时器 TIM1
  • TIM_Channel: TIM_Channel_1~TIM_Channel_3 常用于互补输出。
  • TIM_CCxN: TIM_CCxN_EnableTIM_CCxN_Disable

TIM_SelectOCxM

void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode);
  • TIMx: 定时器。
  • TIM_Channel: TIM_Channel_1~TIM_Channel_4
  • TIM_OCMode: TIM_OCMode_Timing, Active, Inactive, Toggle, PWM1, PWM2, ForcedActive, ForcedInactive

TIM_UpdateDisableConfig

void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState NewState);
  • TIMx: 定时器。
  • NewState: ENABLE 禁止更新事件,DISABLE 允许更新事件。

TIM_UpdateRequestConfig

void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, uint16_t TIM_UpdateSource);
  • TIMx: 定时器。
  • TIM_UpdateSource: TIM_UpdateSource_GlobalTIM_UpdateSource_Regular

TIM_SelectHallSensor

void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState NewState);
  • TIMx: 定时器。
  • NewState: ENABLE 启用霍尔传感器接口,DISABLE 关闭。

TIM_SelectOnePulseMode

void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, uint16_t TIM_OPMode);
  • TIMx: 定时器。
  • TIM_OPMode: TIM_OPMode_SingleTIM_OPMode_Repetitive

TIM_SelectOutputTrigger

void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource);
  • TIMx: 定时器。
  • TIM_TRGOSource: TIM_TRGOSource_Reset, Enable, Update, OC1, OC1Ref, OC2Ref, OC3Ref, OC4Ref

TIM_SelectSlaveMode

void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);
  • TIMx: 定时器。
  • TIM_SlaveMode: TIM_SlaveMode_Reset, Gated, Trigger, External1

TIM_SelectMasterSlaveMode

void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_MasterSlaveMode);
  • TIMx: 定时器。
  • TIM_MasterSlaveMode: TIM_MasterSlaveMode_EnableTIM_MasterSlaveMode_Disable

TIM_SetCounter

void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter);
  • TIMx: 定时器。
  • Counter: CNT 当前计数值,0~65535。

TIM_SetAutoreload

void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload);
  • TIMx: 定时器。
  • Autoreload: ARR 自动重装载值,0~65535。

TIM_SetCompare1

void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1);
  • TIMx: 定时器。
  • Compare1: CCR1 比较值,0~65535;PWM 占空比常由 CCR/(ARR+1) 决定。

TIM_SetCompare2

void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2);
  • TIMx: 定时器。
  • Compare2: CCR2 比较值。

TIM_SetCompare3

void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3);
  • TIMx: 定时器。
  • Compare3: CCR3 比较值。

TIM_SetCompare4

void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4);
  • TIMx: 定时器。
  • Compare4: CCR4 比较值。

TIM_SetIC1Prescaler

void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
  • TIMx: 定时器。
  • TIM_ICPSC: TIM_ICPSC_DIV1, DIV2, DIV4, DIV8;作用于 CH1 捕获。

TIM_SetIC2Prescaler

void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
  • 参数同 TIM_SetIC1Prescaler;作用于 CH2。

TIM_SetIC3Prescaler

void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
  • 参数同 TIM_SetIC1Prescaler;作用于 CH3。

TIM_SetIC4Prescaler

void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
  • 参数同 TIM_SetIC1Prescaler;作用于 CH4。

TIM_SetClockDivision

void TIM_SetClockDivision(TIM_TypeDef* TIMx, uint16_t TIM_CKD);
  • TIMx: 定时器。
  • TIM_CKD: TIM_CKD_DIV1, DIV2, DIV4

TIM_GetCapture1

uint16_t TIM_GetCapture1(TIM_TypeDef* TIMx);
  • TIMx: 定时器;返回 CCR1 捕获/比较寄存器值。

TIM_GetCapture2

uint16_t TIM_GetCapture2(TIM_TypeDef* TIMx);
  • TIMx: 定时器;返回 CCR2 值。

TIM_GetCapture3

uint16_t TIM_GetCapture3(TIM_TypeDef* TIMx);
  • TIMx: 定时器;返回 CCR3 值。

TIM_GetCapture4

uint16_t TIM_GetCapture4(TIM_TypeDef* TIMx);
  • TIMx: 定时器;返回 CCR4 值。

TIM_GetCounter

uint16_t TIM_GetCounter(TIM_TypeDef* TIMx);
  • TIMx: 定时器;返回 CNT 当前计数值。

TIM_GetPrescaler

uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx);
  • TIMx: 定时器;返回 PSC 当前预分频值。

TIM_GetFlagStatus

FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
  • TIMx: 定时器。
  • TIM_FLAG: TIM_FLAG_Update, CC1, CC2, CC3, CC4, COM, Trigger, Break, CC1OF, CC2OF, CC3OF, CC4OF

TIM_ClearFlag

void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
  • TIMx: 定时器。
  • TIM_FLAG: 要清除的标志;可按位或组合。

TIM_GetITStatus

ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);
  • TIMx: 定时器。
  • TIM_IT: TIM_IT_Update, CC1, CC2, CC3, CC4, COM, Trigger, Break

TIM_ClearITPendingBit

void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);
  • TIMx: 定时器。
  • TIM_IT: 要清除的定时器中断挂起位。

USART:串口/同步串口 USART1~USART3

常用宏

参数 说明
USARTx USART1, USART2, USART3 F103CBT6 可用 USART;UART4/5 不适用
USART_WordLength USART_WordLength_8b, USART_WordLength_9b 数据位长度
USART_StopBits USART_StopBits_1, 0_5, 2, 1_5 停止位
USART_Parity USART_Parity_No, Even, Odd 无校验/偶校验/奇校验
USART_Mode USART_Mode_Rx, USART_Mode_Tx 接收/发送,可按位或
USART_HardwareFlowControl USART_HardwareFlowControl_None, RTS, CTS, RTS_CTS 硬件流控
USART_Clock USART_Clock_Enable, USART_Clock_Disable 同步模式时钟输出
USART_CPOL/USART_CPHA USART_CPOL_Low/High, USART_CPHA_1Edge/2Edge 同步时钟极性/相位
USART_LastBit USART_LastBit_Enable, USART_LastBit_Disable 是否输出最后一位时钟脉冲
USART_IT USART_IT_PE, TXE, TC, RXNE, IDLE, LBD, CTS, ERR, ORE_RX, ORE_ER, NE, FE 中断源;部分宏随库版本而异
USART_FLAG USART_FLAG_CTS, LBD, TXE, TC, RXNE, IDLE, ORE, NE, FE, PE 状态标志
USART_DMAReq USART_DMAReq_Tx, USART_DMAReq_Rx DMA 请求方向
USART_WakeUp USART_WakeUp_IdleLine, USART_WakeUp_AddressMark 静默模式唤醒方式
USART_LINBreakDetectLength USART_LINBreakDetectLength_10b, 11b LIN break 检测长度
USART_IrDAMode USART_IrDAMode_LowPower, USART_IrDAMode_Normal IrDA 模式

USART_DeInit

void USART_DeInit(USART_TypeDef* USARTx);
  • USARTx: USART1, USART2, USART3

USART_Init

void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
  • USARTx: USART 实例。
  • USART_InitStruct: 初始化结构体。
  • USART_BaudRate: 波特率,如 9600、115200。
  • USART_WordLength: USART_WordLength_8b9b
  • USART_StopBits: USART_StopBits_1, 0_5, 2, 1_5
  • USART_Parity: USART_Parity_No, Even, Odd
  • USART_Mode: USART_Mode_Rx | USART_Mode_Tx 等。
  • USART_HardwareFlowControl: None, RTS, CTS, RTS_CTS

USART_StructInit

void USART_StructInit(USART_InitTypeDef* USART_InitStruct);
  • USART_InitStruct: 写入默认异步串口配置,通常 9600/8N1/无流控/收发。

USART_ClockInit

void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);
  • USARTx: USART 实例。
  • USART_ClockInitStruct: 同步时钟结构体;字段为 USART_Clock, USART_CPOL, USART_CPHA, USART_LastBit

USART_ClockStructInit

void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct);
  • USART_ClockInitStruct: 写入同步时钟默认值。

USART_Cmd

void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
  • USARTx: USART 实例。
  • NewState: ENABLE 开启 USART,DISABLE 关闭。

USART_ITConfig

void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);
  • USARTx: USART 实例。
  • USART_IT: USART_IT_RXNE, TXE, TC, IDLE, PE, LBD, CTS, ERR 等。
  • NewState: ENABLEDISABLE

USART_DMACmd

void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState);
  • USARTx: USART 实例。
  • USART_DMAReq: USART_DMAReq_TxUSART_DMAReq_Rx
  • NewState: ENABLEDISABLE

USART_SetAddress

void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address);
  • USARTx: USART 实例。
  • USART_Address: 多处理器通信地址,4 bit 常用范围 0x0~0xF。

USART_WakeUpConfig

void USART_WakeUpConfig(USART_TypeDef* USARTx, uint16_t USART_WakeUp);
  • USARTx: USART 实例。
  • USART_WakeUp: USART_WakeUp_IdleLineUSART_WakeUp_AddressMark

USART_ReceiverWakeUpCmd

void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState NewState);
  • USARTx: USART 实例。
  • NewState: ENABLE 进入静默/接收器唤醒状态,DISABLE 退出。

USART_LINBreakDetectLengthConfig

void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint16_t USART_LINBreakDetectLength);
  • USARTx: USART 实例。
  • USART_LINBreakDetectLength: USART_LINBreakDetectLength_10b11b

USART_LINCmd

void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState);
  • USARTx: USART 实例。
  • NewState: ENABLE 开启 LIN 模式,DISABLE 关闭。

USART_SendData

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
  • USARTx: USART 实例。
  • Data: 要写入 DR 的数据;9-bit 模式下低 9 位有效,8-bit 模式低 8 位有效。

USART_ReceiveData

uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
  • USARTx: USART 实例;返回 DR 接收数据,低 8/9 位有效。

USART_SendBreak

void USART_SendBreak(USART_TypeDef* USARTx);
  • USARTx: USART 实例;发送 LIN break 帧。

USART_SetGuardTime

void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime);
  • USARTx: USART 实例。
  • USART_GuardTime: 智能卡模式保护时间,8 bit。

USART_SetPrescaler

void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler);
  • USARTx: USART 实例。
  • USART_Prescaler: IrDA/智能卡时钟分频,8 bit。

USART_SmartCardCmd

void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState);
  • USARTx: USART 实例。
  • NewState: ENABLE 开启智能卡模式,DISABLE 关闭。

USART_SmartCardNACKCmd

void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState);
  • USARTx: USART 实例。
  • NewState: ENABLE 开启智能卡 NACK,DISABLE 关闭。

USART_HalfDuplexCmd

void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState);
  • USARTx: USART 实例。
  • NewState: ENABLE 开启半双工单线模式,DISABLE 关闭。

USART_IrDAConfig

void USART_IrDAConfig(USART_TypeDef* USARTx, uint16_t USART_IrDAMode);
  • USARTx: USART 实例。
  • USART_IrDAMode: USART_IrDAMode_LowPowerUSART_IrDAMode_Normal

USART_IrDACmd

void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState);
  • USARTx: USART 实例。
  • NewState: ENABLE 开启 IrDA,DISABLE 关闭。

USART_GetFlagStatus

FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
  • USARTx: USART 实例。
  • USART_FLAG: USART_FLAG_TXE, TC, RXNE, IDLE, ORE, NE, FE, PE, CTS, LBD

USART_ClearFlag

void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);
  • USARTx: USART 实例。
  • USART_FLAG: 可清除的 USART 标志,如 USART_FLAG_TC, CTS, LBD 等;部分错误标志需按手册读 SR/DR 清除。

USART_GetITStatus

ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);
  • USARTx: USART 实例。
  • USART_IT: USART_IT_RXNE, TXE, TC, IDLE, PE, LBD, CTS, ERR 等。

USART_ClearITPendingBit

void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);
  • USARTx: USART 实例。
  • USART_IT: 要清除的 USART 中断挂起位;如 USART_IT_TC, USART_IT_LBD, USART_IT_CTS

SPI / I2S:串行外设接口 SPI1/SPI2

常用宏

参数 说明
SPIx SPI1, SPI2 F103CBT6 可用 SPI;SPI3 不适用
SPI_Direction SPI_Direction_2Lines_FullDuplex, 2Lines_RxOnly, 1Line_Rx, 1Line_Tx 双线全双工、双线只收、单线收/发
SPI_Mode SPI_Mode_Master, SPI_Mode_Slave 主机/从机
SPI_DataSize SPI_DataSize_8b, SPI_DataSize_16b 数据帧长度
SPI_CPOL/SPI_CPHA SPI_CPOL_Low/High, SPI_CPHA_1Edge/2Edge 时钟极性/相位
SPI_NSS SPI_NSS_Soft, SPI_NSS_Hard 软件/硬件片选管理
SPI_BaudRatePrescaler SPI_BaudRatePrescaler_2, _4, _8, _16, _32, _64, _128, _256 主机模式 SCK 分频
SPI_FirstBit SPI_FirstBit_MSB, SPI_FirstBit_LSB 先发高位/低位
SPI_I2S_IT SPI_I2S_IT_TXE, RXNE, ERR 中断源
SPI_I2S_DMAReq SPI_I2S_DMAReq_Tx, SPI_I2S_DMAReq_Rx DMA 请求方向
SPI_I2S_FLAG SPI_I2S_FLAG_TXE, RXNE, BSY, OVR, MODF, CRCERR, UDR, CHSIDE SPI/I2S 状态标志,部分仅 I2S
SPI_Direction for line SPI_Direction_Rx, SPI_Direction_Tx 单线双向模式下选择接收/发送方向
I2S_Mode I2S_Mode_SlaveTx, SlaveRx, MasterTx, MasterRx I2S 工作模式;具体是否可用看芯片/库配置
I2S_Standard I2S_Standard_Phillips, MSB, LSB, PCMShort, PCMLong I2S 标准
I2S_DataFormat I2S_DataFormat_16b, 16bextended, 24b, 32b I2S 数据格式
I2S_MCLKOutput I2S_MCLKOutput_Enable, Disable 主时钟输出
I2S_AudioFreq I2S_AudioFreq_192k, 96k, 48k, 44k, 32k, 22k, 16k, 11k, 8k, Default 音频采样率宏
I2S_CPOL I2S_CPOL_Low, I2S_CPOL_High I2S 空闲时钟极性

SPI_I2S_DeInit

void SPI_I2S_DeInit(SPI_TypeDef* SPIx);
  • SPIx: SPI1SPI2

SPI_Init

void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct);
  • SPIx: SPI 实例。
  • SPI_InitStruct: 初始化结构体。
  • SPI_Direction: SPI_Direction_2Lines_FullDuplex, 2Lines_RxOnly, 1Line_Rx, 1Line_Tx
  • SPI_Mode: SPI_Mode_MasterSPI_Mode_Slave
  • SPI_DataSize: SPI_DataSize_8b16b
  • SPI_CPOL: SPI_CPOL_LowHigh
  • SPI_CPHA: SPI_CPHA_1Edge2Edge
  • SPI_NSS: SPI_NSS_SoftHard
  • SPI_BaudRatePrescaler: _2_256
  • SPI_FirstBit: SPI_FirstBit_MSBLSB
  • SPI_CRCPolynomial: CRC 多项式值,常用 7;不用 CRC 也需给值。

SPI_StructInit

void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct);
  • SPI_InitStruct: 写入默认 SPI 配置。

I2S_Init

void I2S_Init(SPI_TypeDef* SPIx, I2S_InitTypeDef* I2S_InitStruct);
  • SPIx: SPI/I2S 实例;F103CBT6 是否支持对应 I2S 功能需以参考手册和库配置为准。
  • I2S_InitStruct: I2S 初始化结构体,字段包括 I2S_Mode, I2S_Standard, I2S_DataFormat, I2S_MCLKOutput, I2S_AudioFreq, I2S_CPOL

I2S_StructInit

void I2S_StructInit(I2S_InitTypeDef* I2S_InitStruct);
  • I2S_InitStruct: 写入默认 I2S 配置。

SPI_Cmd

void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState);
  • SPIx: SPI 实例。
  • NewState: ENABLE 使能 SPI,DISABLE 关闭。

I2S_Cmd

void I2S_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState);
  • SPIx: SPI/I2S 实例。
  • NewState: ENABLE 使能 I2S,DISABLE 关闭。

SPI_I2S_ITConfig

void SPI_I2S_ITConfig(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT, FunctionalState NewState);
  • SPIx: SPI/I2S 实例。
  • SPI_I2S_IT: SPI_I2S_IT_TXE, RXNE, ERR
  • NewState: ENABLEDISABLE

SPI_I2S_DMACmd

void SPI_I2S_DMACmd(SPI_TypeDef* SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState);
  • SPIx: SPI/I2S 实例。
  • SPI_I2S_DMAReq: SPI_I2S_DMAReq_TxSPI_I2S_DMAReq_Rx
  • NewState: ENABLEDISABLE

SPI_I2S_SendData

void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data);
  • SPIx: SPI/I2S 实例。
  • Data: 待发送数据;8-bit SPI 低 8 位有效,16-bit/I2S 低 16 位有效。

SPI_I2S_ReceiveData

uint16_t SPI_I2S_ReceiveData(SPI_TypeDef* SPIx);
  • SPIx: SPI/I2S 实例;返回接收数据寄存器值。

SPI_NSSInternalSoftwareConfig

void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, uint16_t SPI_NSSInternalSoft);
  • SPIx: SPI 实例。
  • SPI_NSSInternalSoft: SPI_NSSInternalSoft_SetSPI_NSSInternalSoft_Reset;软件 NSS 内部状态。

SPI_SSOutputCmd

void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState);
  • SPIx: SPI 实例。
  • NewState: ENABLE 使能 SS 输出,DISABLE 关闭;主机硬件 NSS 时使用。

SPI_DataSizeConfig

void SPI_DataSizeConfig(SPI_TypeDef* SPIx, uint16_t SPI_DataSize);
  • SPIx: SPI 实例。
  • SPI_DataSize: SPI_DataSize_8bSPI_DataSize_16b

SPI_TransmitCRC

void SPI_TransmitCRC(SPI_TypeDef* SPIx);
  • SPIx: SPI 实例;请求发送 CRC 值。

SPI_CalculateCRC

void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState);
  • SPIx: SPI 实例。
  • NewState: ENABLE 开启硬件 CRC 计算,DISABLE 关闭。

SPI_GetCRC

uint16_t SPI_GetCRC(SPI_TypeDef* SPIx, uint8_t SPI_CRC);
  • SPIx: SPI 实例。
  • SPI_CRC: SPI_CRC_TxSPI_CRC_Rx,选择读取发送/接收 CRC。

SPI_GetCRCPolynomial

uint16_t SPI_GetCRCPolynomial(SPI_TypeDef* SPIx);
  • SPIx: SPI 实例;返回 CRC 多项式寄存器值。

SPI_BiDirectionalLineConfig

void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, uint16_t SPI_Direction);
  • SPIx: SPI 实例。
  • SPI_Direction: SPI_Direction_TxSPI_Direction_Rx;单线双向模式下切换方向。

SPI_I2S_GetFlagStatus

FlagStatus SPI_I2S_GetFlagStatus(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG);
  • SPIx: SPI/I2S 实例。
  • SPI_I2S_FLAG: TXE, RXNE, BSY, OVR, MODF, CRCERR, UDR, CHSIDE 等。

SPI_I2S_ClearFlag

void SPI_I2S_ClearFlag(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG);
  • SPIx: SPI/I2S 实例。
  • SPI_I2S_FLAG: 要清除的可清标志,如 SPI_I2S_FLAG_CRCERR;OVR 等需按手册读写序列清除。

SPI_I2S_GetITStatus

ITStatus SPI_I2S_GetITStatus(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT);
  • SPIx: SPI/I2S 实例。
  • SPI_I2S_IT: SPI_I2S_IT_TXE, RXNE, ERR

SPI_I2S_ClearITPendingBit

void SPI_I2S_ClearITPendingBit(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT);
  • SPIx: SPI/I2S 实例。
  • SPI_I2S_IT: 要清除的中断挂起位;如错误类中断。

I2C:I2C1/I2C2

常用宏

参数 说明
I2Cx I2C1, I2C2 F103CBT6 可用 I2C
I2C_Mode I2C_Mode_I2C, I2C_Mode_SMBusDevice, I2C_Mode_SMBusHost I2C 或 SMBus 模式
I2C_DutyCycle I2C_DutyCycle_2, I2C_DutyCycle_16_9 快速模式占空比
I2C_Ack I2C_Ack_Enable, I2C_Ack_Disable 应答控制
I2C_AcknowledgedAddress I2C_AcknowledgedAddress_7bit, 10bit 本机地址长度
I2C_Direction I2C_Direction_Transmitter, I2C_Direction_Receiver 发送地址后指定主机读/写方向
I2C_IT I2C_IT_BUF, I2C_IT_EVT, I2C_IT_ERR 缓冲、事件、错误中断
I2C_NACKPosition I2C_NACKPosition_Next, I2C_NACKPosition_Current NACK 位置
I2C_SMBusAlert I2C_SMBusAlert_Low, I2C_SMBusAlert_High SMBus Alert 引脚电平
I2C_PECPosition I2C_PECPosition_Next, I2C_PECPosition_Current PEC 位置
I2C_EVENT I2C_EVENT_MASTER_MODE_SELECT, MASTER_TRANSMITTER_MODE_SELECTED, MASTER_RECEIVER_MODE_SELECTED, MASTER_BYTE_RECEIVED, MASTER_BYTE_TRANSMITTED, SLAVE_RECEIVER_ADDRESS_MATCHED, SLAVE_TRANSMITTER_ADDRESS_MATCHED, SLAVE_BYTE_RECEIVED, SLAVE_BYTE_TRANSMITTED, SLAVE_STOP_DETECTED 事件检查宏,通常配合 I2C_CheckEvent
I2C_FLAG I2C_FLAG_BUSY, MSL, TRA, GENCALL, SMBDEFAULT, SMBHOST, DUALF, BTF, ADDR, SB, RXNE, TXE, STOPF, AF, ARLO, BERR, OVR, PECERR, TIMEOUT, SMBALERT I2C 状态/错误标志

I2C_DeInit

void I2C_DeInit(I2C_TypeDef* I2Cx);
  • I2Cx: I2C1I2C2

I2C_Init

void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct);
  • I2Cx: I2C 实例。
  • I2C_InitStruct: 初始化结构体。
  • I2C_ClockSpeed: 目标 SCL 频率,标准模式常用 100000,快速模式 400000。
  • I2C_Mode: I2C_Mode_I2C, SMBusDevice, SMBusHost
  • I2C_DutyCycle: I2C_DutyCycle_2I2C_DutyCycle_16_9
  • I2C_OwnAddress1: 本机地址,7/10 bit 取决于配置。
  • I2C_Ack: I2C_Ack_EnableDisable
  • I2C_AcknowledgedAddress: I2C_AcknowledgedAddress_7bit10bit

I2C_StructInit

void I2C_StructInit(I2C_InitTypeDef* I2C_InitStruct);
  • I2C_InitStruct: 写入默认 I2C 配置。

I2C_Cmd

void I2C_Cmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
  • I2Cx: I2C 实例。
  • NewState: ENABLE 使能 I2C,DISABLE 关闭。

I2C_DMACmd

void I2C_DMACmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
  • I2Cx: I2C 实例。
  • NewState: ENABLE 开启 DMA 请求,DISABLE 关闭。

I2C_DMALastTransferCmd

void I2C_DMALastTransferCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
  • I2Cx: I2C 实例。
  • NewState: ENABLE 让下一次 DMA EOT 作为最后传输,DISABLE 关闭。

I2C_GenerateSTART

void I2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalState NewState);
  • I2Cx: I2C 实例。
  • NewState: ENABLE 产生 START,DISABLE 清除 START 位。

I2C_GenerateSTOP

void I2C_GenerateSTOP(I2C_TypeDef* I2Cx, FunctionalState NewState);
  • I2Cx: I2C 实例。
  • NewState: ENABLE 产生 STOP,DISABLE 清除 STOP 位。

I2C_AcknowledgeConfig

void I2C_AcknowledgeConfig(I2C_TypeDef* I2Cx, FunctionalState NewState);
  • I2Cx: I2C 实例。
  • NewState: ENABLE ACK,DISABLE NACK。

I2C_OwnAddress2Config

void I2C_OwnAddress2Config(I2C_TypeDef* I2Cx, uint8_t Address);
  • I2Cx: I2C 实例。
  • Address: 第二本机地址,7 bit 地址左对齐方式按库实现。

I2C_DualAddressCmd

void I2C_DualAddressCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
  • I2Cx: I2C 实例。
  • NewState: ENABLE 双地址响应,DISABLE 单地址。

I2C_GeneralCallCmd

void I2C_GeneralCallCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
  • I2Cx: I2C 实例。
  • NewState: ENABLE 响应 General Call 地址,DISABLE 不响应。

I2C_ITConfig

void I2C_ITConfig(I2C_TypeDef* I2Cx, uint16_t I2C_IT, FunctionalState NewState);
  • I2Cx: I2C 实例。
  • I2C_IT: I2C_IT_BUF, I2C_IT_EVT, I2C_IT_ERR,可组合。
  • NewState: ENABLEDISABLE

I2C_SendData

void I2C_SendData(I2C_TypeDef* I2Cx, uint8_t Data);
  • I2Cx: I2C 实例。
  • Data: 待发送字节。

I2C_ReceiveData

uint8_t I2C_ReceiveData(I2C_TypeDef* I2Cx);
  • I2Cx: I2C 实例;返回接收字节。

I2C_Send7bitAddress

void I2C_Send7bitAddress(I2C_TypeDef* I2Cx, uint8_t Address, uint8_t I2C_Direction);
  • I2Cx: I2C 实例。
  • Address: 7-bit 从机地址,通常左移 1 位后传入库期望格式;许多示例用 addr << 1
  • I2C_Direction: I2C_Direction_TransmitterI2C_Direction_Receiver

I2C_ReadRegister

uint16_t I2C_ReadRegister(I2C_TypeDef* I2Cx, uint8_t I2C_Register);
  • I2Cx: I2C 实例。
  • I2C_Register: 要读的 I2C 寄存器偏移;如 I2C_Register_CR1, CR2, OAR1, OAR2, DR, SR1, SR2, CCR, TRISE

I2C_SoftwareResetCmd

void I2C_SoftwareResetCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
  • I2Cx: I2C 实例。
  • NewState: ENABLE 置软件复位,DISABLE 释放复位。

I2C_NACKPositionConfig

void I2C_NACKPositionConfig(I2C_TypeDef* I2Cx, uint16_t I2C_NACKPosition);
  • I2Cx: I2C 实例。
  • I2C_NACKPosition: I2C_NACKPosition_NextCurrent

I2C_SMBusAlertConfig

void I2C_SMBusAlertConfig(I2C_TypeDef* I2Cx, uint16_t I2C_SMBusAlert);
  • I2Cx: I2C 实例。
  • I2C_SMBusAlert: I2C_SMBusAlert_LowHigh

I2C_TransmitPEC

void I2C_TransmitPEC(I2C_TypeDef* I2Cx, FunctionalState NewState);
  • I2Cx: I2C 实例。
  • NewState: ENABLE 发送 PEC,DISABLE 不发送。

I2C_PECPositionConfig

void I2C_PECPositionConfig(I2C_TypeDef* I2Cx, uint16_t I2C_PECPosition);
  • I2Cx: I2C 实例。
  • I2C_PECPosition: I2C_PECPosition_NextCurrent

I2C_CalculatePEC

void I2C_CalculatePEC(I2C_TypeDef* I2Cx, FunctionalState NewState);
  • I2Cx: I2C 实例。
  • NewState: ENABLE 开启 PEC 计算,DISABLE 关闭。

I2C_GetPEC

uint8_t I2C_GetPEC(I2C_TypeDef* I2Cx);
  • I2Cx: I2C 实例;读取 PEC 值。

I2C_ARPCmd

void I2C_ARPCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
  • I2Cx: I2C 实例。
  • NewState: ENABLE 开启 SMBus ARP,DISABLE 关闭。

I2C_StretchClockCmd

void I2C_StretchClockCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
  • I2Cx: I2C 实例。
  • NewState: ENABLE 允许时钟拉伸,DISABLE 禁止。

I2C_FastModeDutyCycleConfig

void I2C_FastModeDutyCycleConfig(I2C_TypeDef* I2Cx, uint16_t I2C_DutyCycle);
  • I2Cx: I2C 实例。
  • I2C_DutyCycle: I2C_DutyCycle_2I2C_DutyCycle_16_9

I2C_CheckEvent

ErrorStatus I2C_CheckEvent(I2C_TypeDef* I2Cx, uint32_t I2C_EVENT);
  • I2Cx: I2C 实例。
  • I2C_EVENT: 事件宏;常用 I2C_EVENT_MASTER_MODE_SELECT, MASTER_TRANSMITTER_MODE_SELECTED, MASTER_RECEIVER_MODE_SELECTED, MASTER_BYTE_TRANSMITTED, MASTER_BYTE_RECEIVED。返回 SUCCESS/ERROR

I2C_GetLastEvent

uint32_t I2C_GetLastEvent(I2C_TypeDef* I2Cx);
  • I2Cx: I2C 实例;返回 SR1/SR2 合成的最后事件值。

I2C_GetFlagStatus

FlagStatus I2C_GetFlagStatus(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG);
  • I2Cx: I2C 实例。
  • I2C_FLAG: I2C_FLAG_BUSY, ADDR, BTF, RXNE, TXE, STOPF, AF, ARLO, BERR, OVR, TIMEOUT 等。

I2C_ClearFlag

void I2C_ClearFlag(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG);
  • I2Cx: I2C 实例。
  • I2C_FLAG: 要清除的错误/状态标志;部分事件标志需按手册读 SR1/SR2 清除。

I2C_GetITStatus

ITStatus I2C_GetITStatus(I2C_TypeDef* I2Cx, uint32_t I2C_IT);
  • I2Cx: I2C 实例。
  • I2C_IT: 如 I2C_IT_SB, ADDR, BTF, RXNE, TXE, STOPF, BERR, ARLO, AF, OVR, PECERR, TIMEOUT, SMBALERT 等。

I2C_ClearITPendingBit

void I2C_ClearITPendingBit(I2C_TypeDef* I2Cx, uint32_t I2C_IT);
  • I2Cx: I2C 实例。
  • I2C_IT: 要清除的 I2C 中断挂起位。

CAN:bxCAN CAN1

常用宏

参数 说明
CANx CAN1 F103CBT6 只有 CAN1;无 CAN2
CAN_Mode CAN_Mode_Normal, CAN_Mode_LoopBack, CAN_Mode_Silent, CAN_Mode_Silent_LoopBack 正常、环回、静默、静默环回
CAN_SJW CAN_SJW_1tq, 2tq, 3tq, 4tq 同步跳转宽度
CAN_BS1 CAN_BS1_1tqCAN_BS1_16tq 时间段 1
CAN_BS2 CAN_BS2_1tqCAN_BS2_8tq 时间段 2
CAN_FilterMode CAN_FilterMode_IdMask, CAN_FilterMode_IdList 过滤器标识符-掩码/列表模式
CAN_FilterScale CAN_FilterScale_16bit, CAN_FilterScale_32bit 过滤器宽度
CAN_FilterFIFOAssignment CAN_Filter_FIFO0, CAN_Filter_FIFO1 匹配帧进入 FIFO0 或 FIFO1
CAN_IDE CAN_Id_Standard, CAN_Id_Extended 标准帧/扩展帧
CAN_RTR CAN_RTR_Data, CAN_RTR_Remote 数据帧/远程帧
CAN_IT CAN_IT_TME, FMP0, FF0, FOV0, FMP1, FF1, FOV1, EWG, EPV, BOF, LEC, ERR, WKU, SLK 发送邮箱空、FIFO、错误、唤醒/睡眠中断
CAN_FLAG CAN_FLAG_RQCP0/1/2, FMP0, FF0, FOV0, FMP1, FF1, FOV1, EWG, EPV, BOF, LEC, WKU, SLAK 状态标志
CAN_TxStatus CAN_TxStatus_Failed, Pending, Ok, NoMailBox 发送状态返回值

CAN_DeInit

void CAN_DeInit(CAN_TypeDef* CANx);
  • CANx: CAN1

CAN_Init

uint8_t CAN_Init(CAN_TypeDef* CANx, CAN_InitTypeDef* CAN_InitStruct);
  • CANx: CAN1
  • CAN_InitStruct: 初始化结构体。
  • CAN_TTCM: ENABLE 时间触发通信模式,DISABLE 关闭。
  • CAN_ABOM: 自动离线管理;ENABLE 自动从 bus-off 恢复。
  • CAN_AWUM: 自动唤醒模式。
  • CAN_NART: 非自动重传;ENABLE 表示不自动重发,DISABLE 自动重发。
  • CAN_RFLM: 接收 FIFO 锁定;ENABLE FIFO 满时锁定旧报文。
  • CAN_TXFP: 发送 FIFO 优先级;ENABLE 按请求顺序,DISABLE 按 ID 优先级。
  • CAN_Mode: Normal, LoopBack, Silent, Silent_LoopBack
  • CAN_SJW: CAN_SJW_1tq~4tq
  • CAN_BS1: CAN_BS1_1tq~16tq
  • CAN_BS2: CAN_BS2_1tq~8tq
  • CAN_Prescaler: 1~1024。返回 1 表示初始化成功,0 表示超时/失败。

CAN_FilterInit

void CAN_FilterInit(CAN_FilterInitTypeDef* CAN_FilterInitStruct);
  • CAN_FilterInitStruct: 过滤器结构体。
  • CAN_FilterNumber: 过滤器编号;F103 单 CAN 常用 0~13。
  • CAN_FilterMode: CAN_FilterMode_IdMaskIdList
  • CAN_FilterScale: CAN_FilterScale_16bit32bit
  • CAN_FilterIdHigh/Low: 过滤器 ID 高/低 16 位。
  • CAN_FilterMaskIdHigh/Low: 掩码或列表第二组 ID。
  • CAN_FilterFIFOAssignment: CAN_Filter_FIFO0CAN_Filter_FIFO1
  • CAN_FilterActivation: ENABLE 启用,DISABLE 禁用。

CAN_StructInit

void CAN_StructInit(CAN_InitTypeDef* CAN_InitStruct);
  • CAN_InitStruct: 写入默认 CAN 初始化参数。

CAN_SlaveStartBank

void CAN_SlaveStartBank(uint8_t CAN_BankNumber);
  • CAN_BankNumber: 双 CAN 设备中 CAN2 起始过滤器组;F103CBT6 无 CAN2,一般不用。

CAN_DBGFreeze

void CAN_DBGFreeze(CAN_TypeDef* CANx, FunctionalState NewState);
  • CANx: CAN1
  • NewState: ENABLE 调试暂停时冻结 CAN,DISABLE 不冻结。

CAN_TTComModeCmd

void CAN_TTComModeCmd(CAN_TypeDef* CANx, FunctionalState NewState);
  • CANx: CAN1
  • NewState: ENABLE 开启时间触发通信,DISABLE 关闭。

CAN_Transmit

uint8_t CAN_Transmit(CAN_TypeDef* CANx, CanTxMsg* TxMessage);
  • CANx: CAN1
  • TxMessage: 发送报文结构体。
  • StdId: 标准 ID,11 bit,0~0x7FF。
  • ExtId: 扩展 ID,29 bit,0~0x1FFFFFFF。
  • IDE: CAN_Id_StandardCAN_Id_Extended
  • RTR: CAN_RTR_DataCAN_RTR_Remote
  • DLC: 数据长度,0~8。
  • Data[8]: 数据字节。返回邮箱号或 CAN_TxStatus_NoMailBox

CAN_TransmitStatus

uint8_t CAN_TransmitStatus(CAN_TypeDef* CANx, uint8_t TransmitMailbox);
  • CANx: CAN1
  • TransmitMailbox: CAN_TxMailBox_0, _1, _2CAN_Transmit 返回的邮箱号。返回 CAN_TxStatus_Failed/Pending/Ok/NoMailBox

CAN_CancelTransmit

void CAN_CancelTransmit(CAN_TypeDef* CANx, uint8_t Mailbox);
  • CANx: CAN1
  • Mailbox: 要取消的邮箱,0~2。

CAN_Receive

void CAN_Receive(CAN_TypeDef* CANx, uint8_t FIFONumber, CanRxMsg* RxMessage);
  • CANx: CAN1
  • FIFONumber: CAN_FIFO0CAN_FIFO1
  • RxMessage: 接收报文结构体,字段包括 StdId, ExtId, IDE, RTR, DLC, Data[8], FMI

CAN_FIFORelease

void CAN_FIFORelease(CAN_TypeDef* CANx, uint8_t FIFONumber);
  • CANx: CAN1
  • FIFONumber: CAN_FIFO0CAN_FIFO1;释放 FIFO 输出邮箱。

CAN_MessagePending

uint8_t CAN_MessagePending(CAN_TypeDef* CANx, uint8_t FIFONumber);
  • CANx: CAN1
  • FIFONumber: CAN_FIFO0CAN_FIFO1;返回 FIFO 中挂起报文数。

CAN_ITConfig

void CAN_ITConfig(CAN_TypeDef* CANx, uint32_t CAN_IT, FunctionalState NewState);
  • CANx: CAN1
  • CAN_IT: CAN_IT_TME, FMP0, FF0, FOV0, FMP1, FF1, FOV1, EWG, EPV, BOF, LEC, ERR, WKU, SLK
  • NewState: ENABLEDISABLE

CAN_GetFlagStatus

FlagStatus CAN_GetFlagStatus(CAN_TypeDef* CANx, uint32_t CAN_FLAG);
  • CANx: CAN1
  • CAN_FLAG: 见本节 CAN_FLAG_*

CAN_ClearFlag

void CAN_ClearFlag(CAN_TypeDef* CANx, uint32_t CAN_FLAG);
  • CANx: CAN1
  • CAN_FLAG: 要清除的 CAN 标志。

CAN_GetITStatus

ITStatus CAN_GetITStatus(CAN_TypeDef* CANx, uint32_t CAN_IT);
  • CANx: CAN1
  • CAN_IT: 见本节 CAN_IT_*

CAN_ClearITPendingBit

void CAN_ClearITPendingBit(CAN_TypeDef* CANx, uint32_t CAN_IT);
  • CANx: CAN1
  • CAN_IT: 要清除的 CAN 中断挂起位。

CAN_Sleep

uint8_t CAN_Sleep(CAN_TypeDef* CANx);
  • CANx: CAN1;请求进入睡眠,返回操作状态。

CAN_WakeUp

uint8_t CAN_WakeUp(CAN_TypeDef* CANx);
  • CANx: CAN1;请求从睡眠唤醒,返回操作状态。

RTC / BKP / PWR:备份域、实时时钟与电源控制

常用宏

参数 说明
BKP_DR BKP_DR1BKP_DR10 F103 medium-density 备份数据寄存器
BKP_RTCOutputSource BKP_RTCOutputSource_None, CalibClock, Alarm, Second RTC 输出源
BKP_TamperPinLevel BKP_TamperPinLevel_High, Low 入侵检测有效电平
RTC_IT RTC_IT_OW, RTC_IT_ALR, RTC_IT_SEC 溢出、闹钟、秒中断
RTC_FLAG RTC_FLAG_RTOFF, RSF, OW, ALR, SEC RTC 操作完成、同步、事件标志
PWR_PVDLevel PWR_PVDLevel_2V2, 2V3, 2V4, 2V5, 2V6, 2V7, 2V8, 2V9 PVD 阈值等级
PWR_Regulator PWR_Regulator_ON, PWR_Regulator_LowPower STOP 模式调压器状态
PWR_STOPEntry PWR_STOPEntry_WFI, PWR_STOPEntry_WFE 进入 STOP 使用 WFI 或 WFE
PWR_FLAG PWR_FLAG_WU, PWR_FLAG_SB, PWR_FLAG_PVDO 唤醒、待机、PVD 输出标志

BKP_DeInit

void BKP_DeInit(void);
  • 无参数:复位备份外设寄存器。操作备份域前需使能 PWR/BKP 时钟并允许备份域访问。

BKP_TamperPinLevelConfig

void BKP_TamperPinLevelConfig(uint16_t BKP_TamperPinLevel);
  • BKP_TamperPinLevel: BKP_TamperPinLevel_HighBKP_TamperPinLevel_Low

BKP_TamperPinCmd

void BKP_TamperPinCmd(FunctionalState NewState);
  • NewState: ENABLE 开启入侵检测引脚,DISABLE 关闭。

BKP_ITConfig

void BKP_ITConfig(FunctionalState NewState);
  • NewState: ENABLE 开启 Tamper 中断,DISABLE 关闭。

BKP_RTCOutputConfig

void BKP_RTCOutputConfig(uint16_t BKP_RTCOutputSource);
  • BKP_RTCOutputSource: BKP_RTCOutputSource_None, CalibClock, Alarm, Second

BKP_SetRTCCalibrationValue

void BKP_SetRTCCalibrationValue(uint8_t CalibrationValue);
  • CalibrationValue: RTC 校准值,7 bit,范围 0x00~0x7F。

BKP_WriteBackupRegister

void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data);
  • BKP_DR: BKP_DR1~BKP_DR10
  • Data: 写入的 16-bit 数据。

BKP_ReadBackupRegister

uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR);
  • BKP_DR: BKP_DR1~BKP_DR10;返回该备份寄存器值。

BKP_GetFlagStatus

FlagStatus BKP_GetFlagStatus(void);
  • 无参数:读取 Tamper 事件标志 TEF

BKP_ClearFlag

void BKP_ClearFlag(void);
  • 无参数:清除 Tamper 事件标志。

BKP_GetITStatus

ITStatus BKP_GetITStatus(void);
  • 无参数:读取 Tamper 中断挂起状态。

BKP_ClearITPendingBit

void BKP_ClearITPendingBit(void);
  • 无参数:清除 Tamper 中断挂起位。

RTC_ITConfig

void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState);
  • RTC_IT: RTC_IT_OW, RTC_IT_ALR, RTC_IT_SEC,可组合。
  • NewState: ENABLEDISABLE

RTC_EnterConfigMode

void RTC_EnterConfigMode(void);
  • 无参数:进入 RTC 配置模式,修改计数器/预分频/闹钟前调用。

RTC_ExitConfigMode

void RTC_ExitConfigMode(void);
  • 无参数:退出 RTC 配置模式。

RTC_GetCounter

uint32_t RTC_GetCounter(void);
  • 无参数:读取 32-bit RTC 计数器。

RTC_SetCounter

void RTC_SetCounter(uint32_t CounterValue);
  • CounterValue: 写入 32-bit RTC 计数器值。

RTC_SetPrescaler

void RTC_SetPrescaler(uint32_t PrescalerValue);
  • PrescalerValue: RTC 预分频值,20 bit。若 LSE=32768 Hz,要 1 Hz 秒中断常设 32767。

RTC_SetAlarm

void RTC_SetAlarm(uint32_t AlarmValue);
  • AlarmValue: 32-bit 闹钟比较值。

RTC_GetDivider

uint32_t RTC_GetDivider(void);
  • 无参数:读取 RTC 分频器当前值。

RTC_WaitForLastTask

void RTC_WaitForLastTask(void);
  • 无参数:等待上一次 RTC 写操作完成。

RTC_WaitForSynchro

void RTC_WaitForSynchro(void);
  • 无参数:等待 RTC 寄存器与 APB 时钟同步;复位后读 RTC 前常调用。

RTC_GetFlagStatus

FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG);
  • RTC_FLAG: RTC_FLAG_RTOFF, RSF, OW, ALR, SEC

RTC_ClearFlag

void RTC_ClearFlag(uint16_t RTC_FLAG);
  • RTC_FLAG: 要清除的 RTC 标志;如 RTC_FLAG_SEC, ALR, OW, RSF

RTC_GetITStatus

ITStatus RTC_GetITStatus(uint16_t RTC_IT);
  • RTC_IT: RTC_IT_OW, RTC_IT_ALR, RTC_IT_SEC

RTC_ClearITPendingBit

void RTC_ClearITPendingBit(uint16_t RTC_IT);
  • RTC_IT: 要清除的 RTC 中断挂起位。

PWR_DeInit

void PWR_DeInit(void);
  • 无参数:复位 PWR 寄存器。

PWR_BackupAccessCmd

void PWR_BackupAccessCmd(FunctionalState NewState);
  • NewState: ENABLE 允许访问备份域 RTC/BKP,DISABLE 禁止。

PWR_PVDLevelConfig

void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel);
  • PWR_PVDLevel: PWR_PVDLevel_2V2, 2V3, 2V4, 2V5, 2V6, 2V7, 2V8, 2V9

PWR_PVDCmd

void PWR_PVDCmd(FunctionalState NewState);
  • NewState: ENABLE 开启 PVD,DISABLE 关闭。

PWR_WakeUpPinCmd

void PWR_WakeUpPinCmd(FunctionalState NewState);
  • NewState: ENABLE 使能 WKUP 引脚唤醒,DISABLE 禁用。

PWR_EnterSTOPMode

void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry);
  • PWR_Regulator: PWR_Regulator_ONPWR_Regulator_LowPower
  • PWR_STOPEntry: PWR_STOPEntry_WFIPWR_STOPEntry_WFE

PWR_EnterSTANDBYMode

void PWR_EnterSTANDBYMode(void);
  • 无参数:进入 Standby 模式。唤醒后等同复位流程。

PWR_GetFlagStatus

FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG);
  • PWR_FLAG: PWR_FLAG_WU, PWR_FLAG_SB, PWR_FLAG_PVDO

PWR_ClearFlag

void PWR_ClearFlag(uint32_t PWR_FLAG);
  • PWR_FLAG: PWR_FLAG_WUPWR_FLAG_SB,可组合清除唤醒/待机标志。

FLASH:片上 Flash 与选项字节

常用宏

参数 说明
FLASH_Latency FLASH_Latency_0, FLASH_Latency_1, FLASH_Latency_2 Flash 等待周期;72 MHz 常用 2
FLASH_HalfCycleAccess FLASH_HalfCycleAccess_Enable, Disable 半周期访问
FLASH_PrefetchBuffer FLASH_PrefetchBuffer_Enable, Disable 预取缓冲
FLASH_IT FLASH_IT_EOP, FLASH_IT_ERROR 操作结束/错误中断
FLASH_FLAG FLASH_FLAG_BSY, EOP, PGERR, WRPRTERR, OPTERR 忙、结束、编程错误、写保护错误、选项字节错误
FLASH_Status FLASH_BUSY, FLASH_ERROR_PG, FLASH_ERROR_WRP, FLASH_COMPLETE, FLASH_TIMEOUT Flash 操作状态
OB_IWDG OB_IWDG_SW, OB_IWDG_HW 独立看门狗由软件/硬件启动
OB_STOP OB_STOP_NoRST, OB_STOP_RST STOP 模式是否产生复位
OB_STDBY OB_STDBY_NoRST, OB_STDBY_RST Standby 模式是否产生复位
FLASH_WRProt FLASH_WRProt_Pages0to3FLASH_WRProt_Pages124to127, FLASH_WRProt_AllPages 页写保护掩码;F103CBT6 为 128 KB 时页大小 1 KB,注意容量差异

FLASH_SetLatency

void FLASH_SetLatency(uint32_t FLASH_Latency);
  • FLASH_Latency: FLASH_Latency_0, FLASH_Latency_1, FLASH_Latency_2。高频运行前先设置。

FLASH_HalfCycleAccessCmd

void FLASH_HalfCycleAccessCmd(uint32_t FLASH_HalfCycleAccess);
  • FLASH_HalfCycleAccess: FLASH_HalfCycleAccess_EnableFLASH_HalfCycleAccess_Disable

FLASH_PrefetchBufferCmd

void FLASH_PrefetchBufferCmd(uint32_t FLASH_PrefetchBuffer);
  • FLASH_PrefetchBuffer: FLASH_PrefetchBuffer_EnableFLASH_PrefetchBuffer_Disable

FLASH_Unlock

void FLASH_Unlock(void);
  • 无参数:解锁 Flash 编程/擦除控制寄存器。

FLASH_Lock

void FLASH_Lock(void);
  • 无参数:锁定 Flash 控制寄存器,防止误写。

FLASH_ErasePage

FLASH_Status FLASH_ErasePage(uint32_t Page_Address);
  • Page_Address: 要擦除页内任意地址,通常传页起始地址;返回 FLASH_COMPLETE 等状态。

FLASH_EraseAllPages

FLASH_Status FLASH_EraseAllPages(void);
  • 无参数:擦除用户 Flash 全部页;非常危险,慎用。

FLASH_EraseOptionBytes

FLASH_Status FLASH_EraseOptionBytes(void);
  • 无参数:擦除选项字节。

FLASH_ProgramWord

FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data);
  • Address: 目标 Flash 地址,通常 4 字节对齐更稳妥。
  • Data: 写入 32-bit 数据;底层按半字编程。

FLASH_ProgramHalfWord

FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data);
  • Address: 目标 Flash 地址,半字对齐。
  • Data: 写入 16-bit 数据。

FLASH_ProgramOptionByteData

FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data);
  • Address: 选项字节地址。
  • Data: 8-bit 选项数据。

FLASH_EnableWriteProtection

FLASH_Status FLASH_EnableWriteProtection(uint32_t FLASH_Pages);
  • FLASH_Pages: 写保护页掩码;FLASH_WRProt_Pages0to3 等或 FLASH_WRProt_AllPages,可组合。

FLASH_ReadOutProtection

FLASH_Status FLASH_ReadOutProtection(FunctionalState NewState);
  • NewState: ENABLE 开启读保护,DISABLE 关闭读保护;关闭读保护通常会触发全片擦除。

FLASH_UserOptionByteConfig

FLASH_Status FLASH_UserOptionByteConfig(uint16_t OB_IWDG, uint16_t OB_STOP, uint16_t OB_STDBY);
  • OB_IWDG: OB_IWDG_SWOB_IWDG_HW
  • OB_STOP: OB_STOP_NoRSTOB_STOP_RST
  • OB_STDBY: OB_STDBY_NoRSTOB_STDBY_RST

FLASH_GetUserOptionByte

uint32_t FLASH_GetUserOptionByte(void);
  • 无参数:读取用户选项字节。

FLASH_GetWriteProtectionOptionByte

uint32_t FLASH_GetWriteProtectionOptionByte(void);
  • 无参数:读取写保护选项字节掩码。

FLASH_GetReadOutProtectionStatus

FlagStatus FLASH_GetReadOutProtectionStatus(void);
  • 无参数:返回读保护状态 SET/RESET

FLASH_GetPrefetchBufferStatus

FlagStatus FLASH_GetPrefetchBufferStatus(void);
  • 无参数:返回预取缓冲状态。

FLASH_ITConfig

void FLASH_ITConfig(uint32_t FLASH_IT, FunctionalState NewState);
  • FLASH_IT: FLASH_IT_EOPFLASH_IT_ERROR
  • NewState: ENABLEDISABLE

FLASH_GetFlagStatus

FlagStatus FLASH_GetFlagStatus(uint32_t FLASH_FLAG);
  • FLASH_FLAG: FLASH_FLAG_BSY, EOP, PGERR, WRPRTERR, OPTERR

FLASH_ClearFlag

void FLASH_ClearFlag(uint32_t FLASH_FLAG);
  • FLASH_FLAG: 要清除的 Flash 标志;如 FLASH_FLAG_EOP, PGERR, WRPRTERR

FLASH_GetStatus

FLASH_Status FLASH_GetStatus(void);
  • 无参数:返回当前 Flash 状态。

FLASH_WaitForLastOperation

FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout);
  • Timeout: 等待超时计数;返回 FLASH_COMPLETE, FLASH_BUSY, FLASH_TIMEOUT 或错误状态。

CRC:硬件 CRC 计算单元

CRC_ResetDR

void CRC_ResetDR(void);
  • 无参数:复位 CRC 数据寄存器到初值。

CRC_CalcCRC

uint32_t CRC_CalcCRC(uint32_t Data);
  • Data: 输入的 32-bit 数据字。返回更新后的 CRC。

CRC_CalcBlockCRC

uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength);
  • pBuffer: 32-bit 数据数组。
  • BufferLength: 数组元素个数,不是字节数。返回块 CRC。

CRC_GetCRC

uint32_t CRC_GetCRC(void);
  • 无参数:读取当前 CRC 数据寄存器值。

CRC_SetIDRegister

void CRC_SetIDRegister(uint8_t IDValue);
  • IDValue: 写入独立 ID 寄存器的 8-bit 值,不参与 CRC 计算。

CRC_GetIDRegister

uint8_t CRC_GetIDRegister(void);
  • 无参数:读取 CRC ID 寄存器。

IWDG / WWDG:独立/窗口看门狗

常用宏

参数 说明
IWDG_WriteAccess IWDG_WriteAccess_Enable, IWDG_WriteAccess_Disable 允许/禁止写 PR/RLR
IWDG_Prescaler IWDG_Prescaler_4, 8, 16, 32, 64, 128, 256 LSI 分频
IWDG_FLAG IWDG_FLAG_PVU, IWDG_FLAG_RVU 预分频/重装载更新标志
WWDG_Prescaler WWDG_Prescaler_1, 2, 4, 8 PCLK1 分频
WWDG_FLAG WWDG_FLAG_EWIF 早期唤醒中断标志

IWDG_WriteAccessCmd

void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);
  • IWDG_WriteAccess: IWDG_WriteAccess_EnableIWDG_WriteAccess_Disable

IWDG_SetPrescaler

void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);
  • IWDG_Prescaler: IWDG_Prescaler_4, 8, 16, 32, 64, 128, 256

IWDG_SetReload

void IWDG_SetReload(uint16_t Reload);
  • Reload: 重装载值,12 bit,范围 0x000~0xFFF。

IWDG_ReloadCounter

void IWDG_ReloadCounter(void);
  • 无参数:喂狗,将重装载值装入计数器。

IWDG_Enable

void IWDG_Enable(void);
  • 无参数:启动独立看门狗;启动后通常只能复位关闭。

IWDG_GetFlagStatus

FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG);
  • IWDG_FLAG: IWDG_FLAG_PVUIWDG_FLAG_RVU

WWDG_DeInit

void WWDG_DeInit(void);
  • 无参数:复位窗口看门狗配置。

WWDG_SetPrescaler

void WWDG_SetPrescaler(uint32_t WWDG_Prescaler);
  • WWDG_Prescaler: WWDG_Prescaler_1, 2, 4, 8

WWDG_SetWindowValue

void WWDG_SetWindowValue(uint8_t WindowValue);
  • WindowValue: 窗口值,7 bit,通常 0x40~0x7F。

WWDG_EnableIT

void WWDG_EnableIT(void);
  • 无参数:开启早期唤醒中断 EWI。

WWDG_SetCounter

void WWDG_SetCounter(uint8_t Counter);
  • Counter: 计数器值,7 bit,通常 0x40~0x7F;用于喂窗口狗。

WWDG_Enable

void WWDG_Enable(uint8_t Counter);
  • Counter: 初始计数器值,通常 0x40~0x7F;启动 WWDG。

WWDG_GetFlagStatus

FlagStatus WWDG_GetFlagStatus(void);
  • 无参数:读取 WWDG_FLAG_EWIF

WWDG_ClearFlag

void WWDG_ClearFlag(void);
  • 无参数:清除早期唤醒中断标志。

DBGMCU:调试控制

常用宏

参数 说明
DBGMCU_Periph DBGMCU_SLEEP, DBGMCU_STOP, DBGMCU_STANDBY 调试低功耗模式控制
DBGMCU_IWDG_STOP, DBGMCU_WWDG_STOP 调试暂停时冻结看门狗
DBGMCU_TIM1_STOP, TIM2_STOP, TIM3_STOP, TIM4_STOP 调试暂停时冻结定时器;F103CBT6 常用 TIM1~4
DBGMCU_CAN1_STOP, DBGMCU_I2C1_SMBUS_TIMEOUT, DBGMCU_I2C2_SMBUS_TIMEOUT 调试暂停时冻结 CAN/I2C 超时

DBGMCU_GetREVID

uint32_t DBGMCU_GetREVID(void);
  • 无参数:返回芯片修订 ID。

DBGMCU_GetDEVID

uint32_t DBGMCU_GetDEVID(void);
  • 无参数:返回设备 ID。

DBGMCU_Config

void DBGMCU_Config(uint32_t DBGMCU_Periph, FunctionalState NewState);
  • DBGMCU_Periph: 调试冻结/低功耗配置掩码;F103CBT6 常用 DBGMCU_SLEEP, STOP, STANDBY, IWDG_STOP, WWDG_STOP, TIM1_STOP~TIM4_STOP, CAN1_STOP, I2C1_SMBUS_TIMEOUT, I2C2_SMBUS_TIMEOUT
  • NewState: ENABLE 开启配置,DISABLE 关闭。

USB FS:关于标准外设库范围

STM32F103CBT6 带 USB 2.0 full-speed device 外设,但 STM32F10x StdPeriph Driver 的 stm32f10x_*.h/.c 核心外设驱动通常不以 USB_Init(...) 这类参数式 API 暴露 USB。USB FS Device Library 是单独目录/协议栈,常见文件如 usb_core.*, usb_init.*, usb_regs.*, usb_int.*,其 API 不属于本速查的 StdPeriph 外设函数范围。

不适用于 STM32F103CBT6 的 StdPeriph 项

  • FSMC_*:外部存储控制器,F103 high-density 大封装常见;F103CBT6 LQFP48 medium-density 不具备。
  • SDIO_*:SDIO 外设,F103CBT6 不具备。
  • DAC_*:DAC 外设,F103CBT6 不具备。
  • CEC_*:HDMI CEC 多见于 value-line,F103CBT6 不具备。
  • ETH_*, CAN2, SPI3, TIM5~TIM14, ADC3, UART4/5:库中可见或其他 F1 子系列支持,但 F103CBT6 不适用。

交叉检查清单

  • 用任何外设前先开 RCC 时钟:GPIO 在 APB2,USART2/3、I2C、SPI2、TIM2~4、CAN、USB 在 APB1。
  • AFIO 相关功能需要 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE)
  • EXTI 使用 GPIO 引脚时,顺序通常是:开 GPIO/AFIO 时钟 → 配 GPIO 输入 → GPIO_EXTILineConfigEXTI_InitNVIC_Init
  • ADC 使用前通常:配置 ADC 时钟 → 开 ADC/GPIO 时钟 → GPIO 模拟输入 → ADC_InitADC_Cmd → 复位校准/校准 → 配通道 → 触发转换。
  • TIM1 输出 PWM 时,除了通道输出使能,还要调用 TIM_CtrlPWMOutputs(TIM1, ENABLE)
  • CAN 与 USB 在部分封装上复用 PA11/PA12;同时使用需按引脚复用方案检查。