Article / 2
正文
本文以 STM32F103CBT6 与 STM32F10x StdPeriph 标准外设库为参考,按外设分类整理常用函数的参数含义、作用范围与可选宏值。内容侧重初始化、配置与控制接口,便于在编写驱动、移植例程或查阅库源码时快速定位参数用途。
AI 创作提示:本文档由 AI 辅助生成与整理。
STM32F103CBT6,按 STM32F103xB / medium-density 设备理解,常见宏定义为 STM32F10X_MD。FunctionalState NewState:ENABLE 开启,DISABLE 关闭。FlagStatus/ITStatus 返回 SET 或 RESET。ErrorStatus 返回 SUCCESS 或 ERROR。GPIOA、USART1、TIM2 来自 stm32f10x.h。若一个参数是寄存器位掩码,通常可以用按位或 | 组合;若是模式枚举,只能选一个。| 类型/参数 | 可用值 | 含义 |
|---|---|---|
FunctionalState |
ENABLE, DISABLE |
开关控制 |
FlagStatus, ITStatus |
SET, RESET |
标志位/中断挂起状态 |
ErrorStatus |
SUCCESS, ERROR |
成功/失败 |
BitAction |
Bit_SET, Bit_RESET |
GPIO 单个位写入动作 |
ITStatus |
SET, RESET |
中断是否发生/挂起 |
常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
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 时钟源 |
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
NVIC_PriorityGroup: 设置中断优先级分组;取值见本节 NVIC_PriorityGroup_*。常用 NVIC_PriorityGroup_2 或 NVIC_PriorityGroup_4。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。void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset);
NVIC_VectTab: 向量表位置;NVIC_VectTab_FLASH 或 NVIC_VectTab_RAM。Offset: 向量表偏移,必须按芯片要求对齐,常用于 BootLoader 跳转,例如 0x0000, 0x3000, 0x5000。void NVIC_SystemLPConfig(uint8_t LowPowerMode, FunctionalState NewState);
LowPowerMode: Cortex-M3 系统低功耗控制位;NVIC_LP_SEVONPEND, NVIC_LP_SLEEPDEEP, NVIC_LP_SLEEPONEXIT。NewState: ENABLE 置位该控制位,DISABLE 清除该控制位。void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource);
SysTick_CLKSource: SysTick 时钟源;SysTick_CLKSource_HCLK 或 SysTick_CLKSource_HCLK_Div8。常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
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_2 … RCC_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 中断源 |
void RCC_DeInit(void);
void RCC_HSEConfig(uint32_t RCC_HSE);
RCC_HSE: HSE 状态;RCC_HSE_OFF, RCC_HSE_ON, RCC_HSE_Bypass。ErrorStatus RCC_WaitForHSEStartUp(void);
SUCCESS 或 ERROR。void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue);
HSICalibrationValue: HSI 校准值,5 bit,范围 0x00~0x1F。void RCC_HSICmd(FunctionalState NewState);
NewState: ENABLE 打开 HSI,DISABLE 关闭 HSI。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_2 到 RCC_PLLMul_16。void RCC_PLLCmd(FunctionalState NewState);
NewState: ENABLE 打开 PLL,DISABLE 关闭 PLL;切换 PLL 配置前通常需先关闭。void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource);
RCC_SYSCLKSource: 系统时钟源;RCC_SYSCLKSource_HSI, RCC_SYSCLKSource_HSE, RCC_SYSCLKSource_PLLCLK。uint8_t RCC_GetSYSCLKSource(void);
0x00=HSI, 0x04=HSE, 0x08=PLL。void RCC_HCLKConfig(uint32_t RCC_SYSCLK);
RCC_SYSCLK: AHB/HCLK 分频;RCC_SYSCLK_Div1, _Div2, _Div4, _Div8, _Div16, _Div64, _Div128, _Div256, _Div512。void RCC_PCLK1Config(uint32_t RCC_HCLK);
RCC_HCLK: APB1 分频;RCC_HCLK_Div1, _Div2, _Div4, _Div8, _Div16。APB1 常用不超过 36 MHz。void RCC_PCLK2Config(uint32_t RCC_HCLK);
RCC_HCLK: APB2 分频;RCC_HCLK_Div1, _Div2, _Div4, _Div8, _Div16。void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState);
RCC_IT: 中断源;RCC_IT_LSIRDY, LSERDY, HSIRDY, HSERDY, PLLRDY, CSS,可按位或组合。NewState: ENABLE 开启,DISABLE 关闭。void RCC_USBCLKConfig(uint32_t RCC_USBCLKSource);
RCC_USBCLKSource: USB 时钟分频;RCC_USBCLKSource_PLLCLK_1Div5, RCC_USBCLKSource_PLLCLK_Div1。72 MHz PLL 下选 _1Div5。void RCC_ADCCLKConfig(uint32_t RCC_PCLK2);
RCC_PCLK2: ADC 分频;RCC_PCLK2_Div2, _Div4, _Div6, _Div8。void RCC_LSEConfig(uint8_t RCC_LSE);
RCC_LSE: LSE 状态;RCC_LSE_OFF, RCC_LSE_ON, RCC_LSE_Bypass。void RCC_LSICmd(FunctionalState NewState);
NewState: ENABLE 打开 LSI,DISABLE 关闭 LSI。void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource);
RCC_RTCCLKSource: RTC 时钟源;RCC_RTCCLKSource_LSE, RCC_RTCCLKSource_LSI, RCC_RTCCLKSource_HSE_Div128。void RCC_RTCCLKCmd(FunctionalState NewState);
NewState: ENABLE 使能 RTC 时钟,DISABLE 关闭 RTC 时钟。void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks);
RCC_Clocks: 输出结构体指针,字段有 SYSCLK_Frequency, HCLK_Frequency, PCLK1_Frequency, PCLK2_Frequency, ADCCLK_Frequency。void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
RCC_AHBPeriph: AHB 外设时钟掩码;F103CBT6 常用 RCC_AHBPeriph_DMA1, SRAM, FLITF, CRC。NewState: ENABLE 打开时钟,DISABLE 关闭。void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
RCC_APB2Periph: APB2 外设时钟掩码;F103CBT6 常用 AFIO, GPIOA~GPIOE, ADC1, ADC2, TIM1, SPI1, USART1。NewState: ENABLE 或 DISABLE。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: ENABLE 或 DISABLE。void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
RCC_APB2Periph: 要复位的 APB2 外设;同 RCC_APB2PeriphClockCmd。NewState: ENABLE 置复位,DISABLE 释放复位。void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
RCC_APB1Periph: 要复位的 APB1 外设;同 RCC_APB1PeriphClockCmd。NewState: ENABLE 置复位,DISABLE 释放复位。void RCC_BackupResetCmd(FunctionalState NewState);
NewState: ENABLE 复位备份域,DISABLE 释放;会影响 RTC/BKP 配置。void RCC_ClockSecuritySystemCmd(FunctionalState NewState);
NewState: ENABLE 打开 CSS,HSE 故障时触发 NMI;DISABLE 关闭。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。FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG);
RCC_FLAG: 查询标志;RCC_FLAG_HSIRDY, HSERDY, PLLRDY, LSERDY, LSIRDY, PINRST, PORRST, SFTRST, IWDGRST, WWDGRST, LPWRRST。void RCC_ClearFlag(void);
PINRST, PORRST, SFTRST 等。ITStatus RCC_GetITStatus(uint8_t RCC_IT);
RCC_IT: 查询中断挂起位;RCC_IT_LSIRDY, LSERDY, HSIRDY, HSERDY, PLLRDY, CSS。void RCC_ClearITPendingBit(uint8_t RCC_IT);
RCC_IT: 要清除的 RCC 中断挂起位;取值同 RCC_GetITStatus。常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
GPIOx |
GPIOA, GPIOB, GPIOC, GPIOD, GPIOE |
F103CBT6 LQFP48 常见端口资源;端口时钟需先开。库宏还可能支持 GPIOF/G,本型号不适用 |
GPIO_Pin |
GPIO_Pin_0 … GPIO_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_PortSourceGPIOA … GPIO_PortSourceGPIOG |
EXTI/事件输出端口源;F103CBT6 常用 A~E |
GPIO_PinSource |
GPIO_PinSource0 … GPIO_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 相关重映射 |
void GPIO_DeInit(GPIO_TypeDef* GPIOx);
GPIOx: 要复位的端口;GPIOA~GPIOE 常用于 F103CBT6。void GPIO_AFIODeInit(void);
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
GPIOx: 目标端口,如 GPIOA。GPIO_InitStruct: 配置结构体指针。GPIO_Pin: 要配置的引脚掩码;GPIO_Pin_0~GPIO_Pin_15 或 GPIO_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。void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
GPIO_InitStruct: 被写入默认值的结构体指针;默认一般为 GPIO_Pin_All, GPIO_Speed_2MHz, GPIO_Mode_IN_FLOATING。uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
GPIOx: 端口。GPIO_Pin: 单个引脚,GPIO_Pin_0~GPIO_Pin_15,不要传多个位。返回 0 或 1。uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
GPIOx: 端口。返回整个 IDR 输入寄存器低 16 位。uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
GPIOx: 端口。GPIO_Pin: 单个引脚宏;返回 ODR 中该位的状态。uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
GPIOx: 端口。返回整个 ODR 输出锁存寄存器低 16 位。void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
GPIOx: 端口。GPIO_Pin: 要置 1 的引脚掩码,可用 GPIO_Pin_0 | GPIO_Pin_1。void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
GPIOx: 端口。GPIO_Pin: 要清 0 的引脚掩码。void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
GPIOx: 端口。GPIO_Pin: 单个或多个引脚掩码。BitVal: Bit_SET 写 1,Bit_RESET 写 0。void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
GPIOx: 端口。PortVal: 写入 ODR 的 16 位值;每一位对应一个引脚输出锁存。void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
GPIOx: 端口。GPIO_Pin: 要锁定配置的引脚掩码;锁定后直到下一次复位才可修改配置。void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
GPIO_PortSource: 事件输出端口源;GPIO_PortSourceGPIOA~GPIO_PortSourceGPIOE 常用。GPIO_PinSource: 事件输出引脚源;GPIO_PinSource0~GPIO_PinSource15。void GPIO_EventOutputCmd(FunctionalState NewState);
NewState: ENABLE 开启 AFIO 事件输出,DISABLE 关闭。void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
GPIO_Remap: 重映射项;常用见本节 GPIO_Remap_*,例如 GPIO_Remap_SWJ_JTAGDisable 释放 PB3/PB4/PA15 但保留 SWD。NewState: ENABLE 使能该重映射,DISABLE 关闭。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。void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface);
GPIO_ETH_MediaInterface: GPIO_ETH_MediaInterface_MII 或 GPIO_ETH_MediaInterface_RMII。仅 connectivity-line 以太网设备使用;F103CBT6 不适用。常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
EXTI_Line |
EXTI_Line0 … EXTI_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 |
是否使能该线 |
void EXTI_DeInit(void);
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);
EXTI_InitStruct: 配置结构体指针。EXTI_Line: EXTI 线,EXTI_Line0~EXTI_Line18 常用于 F103CBT6。EXTI_Mode: EXTI_Mode_Interrupt 或 EXTI_Mode_Event。EXTI_Trigger: EXTI_Trigger_Rising, EXTI_Trigger_Falling, EXTI_Trigger_Rising_Falling。EXTI_LineCmd: ENABLE 或 DISABLE。void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct);
EXTI_InitStruct: 写入默认值;通常 line none/中断模式/下降沿/禁用。void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);
EXTI_Line: 软件触发的 EXTI 线;EXTI_Line0~EXTI_Line18。FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);
EXTI_Line: 查询挂起标志的 EXTI 线;返回 SET/RESET。void EXTI_ClearFlag(uint32_t EXTI_Line);
EXTI_Line: 要清除的 EXTI 挂起标志;可按位或组合。ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
EXTI_Line: 查询中断挂起状态的 EXTI 线;返回 SET/RESET。void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
EXTI_Line: 清除中断挂起位的 EXTI 线;中断服务函数内常用。常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
DMAy_Channelx |
DMA1_Channel1 … DMA1_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/TE1 … GL7/TC7/HT7/TE7 |
DMA1 各通道全局/完成/半传输/错误标志 |
void DMA_DeInit(DMA_Channel_TypeDef* DMAy_Channelx);
DMAy_Channelx: 要复位的通道;F103CBT6 用 DMA1_Channel1~DMA1_Channel7。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_PeripheralDST 或 DMA_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_Normal 或 DMA_Mode_Circular。DMA_Priority: DMA_Priority_Low/Medium/High/VeryHigh。DMA_M2M: DMA_M2M_Enable 或 DMA_M2M_Disable。void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct);
DMA_InitStruct: 写入默认 DMA 配置,便于再修改。void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState);
DMAy_Channelx: DMA 通道。NewState: ENABLE 启动通道,DISABLE 关闭通道。改 CNDTR/地址前需先关闭。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: ENABLE 或 DISABLE。void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber);
DMAy_Channelx: DMA 通道。DataNumber: 当前传输数据单元数量;通常 1~65535。uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx);
DMAy_Channelx: DMA 通道。返回尚未传输的数据单元数量。FlagStatus DMA_GetFlagStatus(uint32_t DMAy_FLAG);
DMAy_FLAG: DMA 标志;F103CBT6 用 DMA1_FLAG_GLx, TCx, HTx, TEx,x=1…7。void DMA_ClearFlag(uint32_t DMAy_FLAG);
DMAy_FLAG: 要清除的 DMA 标志;可按位或组合。ITStatus DMA_GetITStatus(uint32_t DMAy_IT);
DMAy_IT: DMA 中断挂起位;如 DMA1_IT_TC1, DMA1_IT_HT1, DMA1_IT_TE1 到通道 7。void DMA_ClearITPendingBit(uint32_t DMAy_IT);
DMAy_IT: 要清除的 DMA 中断挂起位;通常在 DMA ISR 中使用。常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
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_0 … ADC_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 |
模拟看门狗监控范围 |
void ADC_DeInit(ADC_TypeDef* ADCx);
ADCx: ADC1 或 ADC2;复位对应 ADC 外设。void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
ADCx: ADC1 或 ADC2。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_Right 或 ADC_DataAlign_Left。ADC_NbrOfChannel: 规则序列通道数量,1~16。void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct);
ADC_InitStruct: 写入默认 ADC 配置。void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);
ADCx: ADC1 或 ADC2。NewState: ENABLE 开启 ADC,DISABLE 关闭 ADC。void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState);
ADCx: 通常 ADC1/ADC2。NewState: ENABLE 打开 ADC DMA 请求,DISABLE 关闭。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: ENABLE 或 DISABLE。void ADC_ResetCalibration(ADC_TypeDef* ADCx);
ADCx: ADC 实例;启动复位校准寄存器。FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx);
ADCx: ADC 实例;返回复位校准是否仍在进行。void ADC_StartCalibration(ADC_TypeDef* ADCx);
ADCx: ADC 实例;启动校准。通常上电使能 ADC 后先复位校准再校准。FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx);
ADCx: ADC 实例;返回校准是否仍在进行。void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
ADCx: ADC 实例。NewState: ENABLE 触发规则组软件转换;DISABLE 停止/无效。FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx);
ADCx: ADC 实例;查询规则组软件启动状态位。void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number);
ADCx: ADC 实例。Number: 间断模式下每次转换的规则通道数,1~8。void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
ADCx: ADC 实例。NewState: ENABLE 开启规则组间断模式,DISABLE 关闭。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_1Cycles5 到 ADC_SampleTime_239Cycles5。void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
ADCx: ADC 实例。NewState: ENABLE 允许规则组外部触发,DISABLE 禁止。软件触发常设 ENABLE 后调用软件启动。uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);
ADCx: ADC 实例;读取规则组转换结果,12-bit 有效,受对齐方式影响。uint32_t ADC_GetDualModeConversionValue(void);
void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
ADCx: ADC 实例。NewState: ENABLE 规则组结束后自动注入转换,DISABLE 关闭。void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
ADCx: ADC 实例。NewState: ENABLE 注入组间断模式,DISABLE 关闭。void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv);
ADCx: ADC 实例。ADC_ExternalTrigInjecConv: 注入组外部触发源;见本节 ADC_ExternalTrigInjecConv_*。void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
ADCx: ADC 实例。NewState: ENABLE 允许注入组外部触发,DISABLE 禁止。void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
ADCx: ADC 实例。NewState: ENABLE 启动注入组软件转换。FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx);
ADCx: ADC 实例;查询注入组软件启动状态位。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: 采样时间宏。void ADC_InjectedSequencerLengthConfig(ADC_TypeDef* ADCx, uint8_t Length);
ADCx: ADC 实例。Length: 注入序列长度,1~4。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。uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel);
ADCx: ADC 实例。ADC_InjectedChannel: ADC_InjectedChannel_1~ADC_InjectedChannel_4;返回对应注入数据寄存器值。void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog);
ADCx: ADC 实例。ADC_AnalogWatchdog: 见本节 ADC_AnalogWatchdog_*。void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold, uint16_t LowThreshold);
ADCx: ADC 实例。HighThreshold: 高阈值,12-bit 常用 0~0x0FFF。LowThreshold: 低阈值,12-bit 常用 0~0x0FFF。void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel);
ADCx: ADC 实例。ADC_Channel: 被单通道看门狗监控的通道,ADC_Channel_0~ADC_Channel_17。void ADC_TempSensorVrefintCmd(FunctionalState NewState);
NewState: ENABLE 打开内部温度传感器和 Vrefint 通道,DISABLE 关闭;使用 ADC_Channel_16/17 前需要开启。FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);
ADCx: ADC 实例。ADC_FLAG: ADC_FLAG_AWD, EOC, JEOC, JSTRT, STRT。void ADC_ClearFlag(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);
ADCx: ADC 实例。ADC_FLAG: 要清除的 ADC 标志;可组合。ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, uint16_t ADC_IT);
ADCx: ADC 实例。ADC_IT: ADC_IT_EOC, ADC_IT_AWD, ADC_IT_JEOC。void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, uint16_t ADC_IT);
ADCx: ADC 实例。ADC_IT: 要清除的 ADC 中断挂起位。常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
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 刹车/死区寄存器配置 |
void TIM_DeInit(TIM_TypeDef* TIMx);
TIMx: TIM1, TIM2, TIM3, TIM4;复位对应定时器寄存器。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。void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
TIMx: 定时器。TIM_OCInitStruct: 输出比较结构体;字段见 TIM_OCMode, TIM_OutputState, TIM_Pulse, TIM_OCPolarity 等。配置通道 1。void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
TIMx: 定时器。TIM_OCInitStruct: 输出比较结构体;配置通道 2。void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
TIMx: 定时器。TIM_OCInitStruct: 输出比较结构体;配置通道 3。void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
TIMx: 定时器。TIM_OCInitStruct: 输出比较结构体;配置通道 4。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。void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
TIMx: 定时器。TIM_ICInitStruct: PWM 输入捕获结构体;库会同时配置一对互补捕获通道。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。void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
TIM_TimeBaseInitStruct: 写入时基默认值。void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct);
TIM_OCInitStruct: 写入输出比较默认值。void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct);
TIM_ICInitStruct: 写入输入捕获默认值。void TIM_BDTRStructInit(TIM_BDTRInitTypeDef* TIM_BDTRInitStruct);
TIM_BDTRInitStruct: 写入 BDTR 默认值。void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);
TIMx: 定时器。NewState: ENABLE 使能计数器,DISABLE 停止计数。void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState);
TIMx: 高级定时器,F103CBT6 为 TIM1。NewState: ENABLE 置 MOE 允许 PWM 输出,DISABLE 关闭主输出。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: ENABLE 或 DISABLE。void TIM_GenerateEvent(TIM_TypeDef* TIMx, uint16_t TIM_EventSource);
TIMx: 定时器。TIM_EventSource: TIM_EventSource_Update, CC1, CC2, CC3, CC4, COM, Trigger, Break,可组合。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_1Transfer 到 TIM_DMABurstLength_18Transfers。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: ENABLE 或 DISABLE。void TIM_InternalClockConfig(TIM_TypeDef* TIMx);
TIMx: 定时器;选择内部时钟作为计数时钟。void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
TIMx: 定时器。TIM_InputTriggerSource: TIM_TS_ITR0~TIM_TS_ITR3,将内部触发作为外部时钟。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_Rising 或 TIM_ICPolarity_Falling。ICFilter: 输入滤波 0x0~0xF。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_NonInverted 或 Inverted。ExtTRGFilter: ETR 滤波 0x0~0xF。void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
TIM_ETRClockMode1Config;选择外部时钟模式 2。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: NonInverted 或 Inverted。ExtTRGFilter: 0x0~0xF。void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode);
TIMx: 定时器。Prescaler: PSC 值,0~65535。TIM_PSCReloadMode: TIM_PSCReloadMode_Update 或 TIM_PSCReloadMode_Immediate。void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode);
TIMx: 定时器。TIM_CounterMode: TIM_CounterMode_Up, Down, CenterAligned1/2/3。void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
TIMx: 定时器。TIM_InputTriggerSource: TIM_TS_ITR0, ITR1, ITR2, ITR3, TI1F_ED, TI1FP1, TI2FP2, ETRF。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_Rising 或 Falling。TIM_IC2Polarity: TIM_ICPolarity_Rising 或 Falling。void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
TIMx: 定时器。TIM_ForcedAction: TIM_ForcedAction_Active 或 TIM_ForcedAction_InActive;强制 CH1 比较输出。void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
TIM_ForcedOC1Config;作用于 CH2。void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
TIM_ForcedOC1Config;作用于 CH3。void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
TIM_ForcedOC1Config;作用于 CH4。void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);
TIMx: 定时器。NewState: ENABLE 打开 ARR 预装载,DISABLE 关闭。void TIM_SelectCOM(TIM_TypeDef* TIMx, FunctionalState NewState);
TIMx: 高级定时器,通常 TIM1。NewState: 选择是否用 COM 事件更新捕获比较控制位。void TIM_SelectCCDMA(TIM_TypeDef* TIMx, FunctionalState NewState);
TIMx: 定时器。NewState: ENABLE 由 CC 事件触发 DMA,DISABLE 由更新事件触发。void TIM_CCPreloadControl(TIM_TypeDef* TIMx, FunctionalState NewState);
TIMx: 高级定时器,通常 TIM1。NewState: ENABLE 使能捕获比较控制位预装载。void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
TIMx: 定时器。TIM_OCPreload: TIM_OCPreload_Enable 或 TIM_OCPreload_Disable。void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
TIM_OC1PreloadConfig;作用于 CH2。void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
TIM_OC1PreloadConfig;作用于 CH3。void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
TIM_OC1PreloadConfig;作用于 CH4。void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
TIMx: 定时器。TIM_OCFast: TIM_OCFast_Enable 或 TIM_OCFast_Disable;CH1 快速使能。void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
TIM_OC1FastConfig;作用于 CH2。void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
TIM_OC1FastConfig;作用于 CH3。void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
TIM_OC1FastConfig;作用于 CH4。void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
TIMx: 定时器。TIM_OCClear: TIM_OCClear_Enable 或 TIM_OCClear_Disable;外部触发时清除 OC1REF。void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
TIM_ClearOC1Ref;作用于 CH2。void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
TIM_ClearOC1Ref;作用于 CH3。void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
TIM_ClearOC1Ref;作用于 CH4。void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
TIMx: 定时器。TIM_OCPolarity: TIM_OCPolarity_High 或 TIM_OCPolarity_Low。void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
TIM_OC1PolarityConfig;作用于 CH2。void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
TIM_OC1PolarityConfig;作用于 CH3。void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
TIM_OC1PolarityConfig;作用于 CH4。void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
TIMx: 高级定时器 TIM1。TIM_OCNPolarity: TIM_OCNPolarity_High 或 TIM_OCNPolarity_Low。void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
TIM_OC1NPolarityConfig;作用于 CH2N。void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
TIM_OC1NPolarityConfig;作用于 CH3N。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_Enable 或 TIM_CCx_Disable。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_Enable 或 TIM_CCxN_Disable。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。void TIM_UpdateDisableConfig(TIM_TypeDef* TIMx, FunctionalState NewState);
TIMx: 定时器。NewState: ENABLE 禁止更新事件,DISABLE 允许更新事件。void TIM_UpdateRequestConfig(TIM_TypeDef* TIMx, uint16_t TIM_UpdateSource);
TIMx: 定时器。TIM_UpdateSource: TIM_UpdateSource_Global 或 TIM_UpdateSource_Regular。void TIM_SelectHallSensor(TIM_TypeDef* TIMx, FunctionalState NewState);
TIMx: 定时器。NewState: ENABLE 启用霍尔传感器接口,DISABLE 关闭。void TIM_SelectOnePulseMode(TIM_TypeDef* TIMx, uint16_t TIM_OPMode);
TIMx: 定时器。TIM_OPMode: TIM_OPMode_Single 或 TIM_OPMode_Repetitive。void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource);
TIMx: 定时器。TIM_TRGOSource: TIM_TRGOSource_Reset, Enable, Update, OC1, OC1Ref, OC2Ref, OC3Ref, OC4Ref。void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);
TIMx: 定时器。TIM_SlaveMode: TIM_SlaveMode_Reset, Gated, Trigger, External1。void TIM_SelectMasterSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_MasterSlaveMode);
TIMx: 定时器。TIM_MasterSlaveMode: TIM_MasterSlaveMode_Enable 或 TIM_MasterSlaveMode_Disable。void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter);
TIMx: 定时器。Counter: CNT 当前计数值,0~65535。void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload);
TIMx: 定时器。Autoreload: ARR 自动重装载值,0~65535。void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1);
TIMx: 定时器。Compare1: CCR1 比较值,0~65535;PWM 占空比常由 CCR/(ARR+1) 决定。void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2);
TIMx: 定时器。Compare2: CCR2 比较值。void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3);
TIMx: 定时器。Compare3: CCR3 比较值。void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4);
TIMx: 定时器。Compare4: CCR4 比较值。void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
TIMx: 定时器。TIM_ICPSC: TIM_ICPSC_DIV1, DIV2, DIV4, DIV8;作用于 CH1 捕获。void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
TIM_SetIC1Prescaler;作用于 CH2。void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
TIM_SetIC1Prescaler;作用于 CH3。void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
TIM_SetIC1Prescaler;作用于 CH4。void TIM_SetClockDivision(TIM_TypeDef* TIMx, uint16_t TIM_CKD);
TIMx: 定时器。TIM_CKD: TIM_CKD_DIV1, DIV2, DIV4。uint16_t TIM_GetCapture1(TIM_TypeDef* TIMx);
TIMx: 定时器;返回 CCR1 捕获/比较寄存器值。uint16_t TIM_GetCapture2(TIM_TypeDef* TIMx);
TIMx: 定时器;返回 CCR2 值。uint16_t TIM_GetCapture3(TIM_TypeDef* TIMx);
TIMx: 定时器;返回 CCR3 值。uint16_t TIM_GetCapture4(TIM_TypeDef* TIMx);
TIMx: 定时器;返回 CCR4 值。uint16_t TIM_GetCounter(TIM_TypeDef* TIMx);
TIMx: 定时器;返回 CNT 当前计数值。uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx);
TIMx: 定时器;返回 PSC 当前预分频值。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。void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
TIMx: 定时器。TIM_FLAG: 要清除的标志;可按位或组合。ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);
TIMx: 定时器。TIM_IT: TIM_IT_Update, CC1, CC2, CC3, CC4, COM, Trigger, Break。void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);
TIMx: 定时器。TIM_IT: 要清除的定时器中断挂起位。常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
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 模式 |
void USART_DeInit(USART_TypeDef* USARTx);
USARTx: USART1, USART2, USART3。void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
USARTx: USART 实例。USART_InitStruct: 初始化结构体。USART_BaudRate: 波特率,如 9600、115200。USART_WordLength: USART_WordLength_8b 或 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: None, RTS, CTS, RTS_CTS。void USART_StructInit(USART_InitTypeDef* USART_InitStruct);
USART_InitStruct: 写入默认异步串口配置,通常 9600/8N1/无流控/收发。void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);
USARTx: USART 实例。USART_ClockInitStruct: 同步时钟结构体;字段为 USART_Clock, USART_CPOL, USART_CPHA, USART_LastBit。void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct);
USART_ClockInitStruct: 写入同步时钟默认值。void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
USARTx: USART 实例。NewState: ENABLE 开启 USART,DISABLE 关闭。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: ENABLE 或 DISABLE。void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState);
USARTx: USART 实例。USART_DMAReq: USART_DMAReq_Tx 或 USART_DMAReq_Rx。NewState: ENABLE 或 DISABLE。void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address);
USARTx: USART 实例。USART_Address: 多处理器通信地址,4 bit 常用范围 0x0~0xF。void USART_WakeUpConfig(USART_TypeDef* USARTx, uint16_t USART_WakeUp);
USARTx: USART 实例。USART_WakeUp: USART_WakeUp_IdleLine 或 USART_WakeUp_AddressMark。void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState NewState);
USARTx: USART 实例。NewState: ENABLE 进入静默/接收器唤醒状态,DISABLE 退出。void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint16_t USART_LINBreakDetectLength);
USARTx: USART 实例。USART_LINBreakDetectLength: USART_LINBreakDetectLength_10b 或 11b。void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState);
USARTx: USART 实例。NewState: ENABLE 开启 LIN 模式,DISABLE 关闭。void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
USARTx: USART 实例。Data: 要写入 DR 的数据;9-bit 模式下低 9 位有效,8-bit 模式低 8 位有效。uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
USARTx: USART 实例;返回 DR 接收数据,低 8/9 位有效。void USART_SendBreak(USART_TypeDef* USARTx);
USARTx: USART 实例;发送 LIN break 帧。void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime);
USARTx: USART 实例。USART_GuardTime: 智能卡模式保护时间,8 bit。void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler);
USARTx: USART 实例。USART_Prescaler: IrDA/智能卡时钟分频,8 bit。void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState);
USARTx: USART 实例。NewState: ENABLE 开启智能卡模式,DISABLE 关闭。void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState);
USARTx: USART 实例。NewState: ENABLE 开启智能卡 NACK,DISABLE 关闭。void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState);
USARTx: USART 实例。NewState: ENABLE 开启半双工单线模式,DISABLE 关闭。void USART_IrDAConfig(USART_TypeDef* USARTx, uint16_t USART_IrDAMode);
USARTx: USART 实例。USART_IrDAMode: USART_IrDAMode_LowPower 或 USART_IrDAMode_Normal。void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState);
USARTx: USART 实例。NewState: ENABLE 开启 IrDA,DISABLE 关闭。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。void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);
USARTx: USART 实例。USART_FLAG: 可清除的 USART 标志,如 USART_FLAG_TC, CTS, LBD 等;部分错误标志需按手册读 SR/DR 清除。ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);
USARTx: USART 实例。USART_IT: USART_IT_RXNE, TXE, TC, IDLE, PE, LBD, CTS, ERR 等。void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);
USARTx: USART 实例。USART_IT: 要清除的 USART 中断挂起位;如 USART_IT_TC, USART_IT_LBD, USART_IT_CTS。常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
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 空闲时钟极性 |
void SPI_I2S_DeInit(SPI_TypeDef* SPIx);
SPIx: SPI1 或 SPI2。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_Master 或 SPI_Mode_Slave。SPI_DataSize: SPI_DataSize_8b 或 16b。SPI_CPOL: SPI_CPOL_Low 或 High。SPI_CPHA: SPI_CPHA_1Edge 或 2Edge。SPI_NSS: SPI_NSS_Soft 或 Hard。SPI_BaudRatePrescaler: _2 到 _256。SPI_FirstBit: SPI_FirstBit_MSB 或 LSB。SPI_CRCPolynomial: CRC 多项式值,常用 7;不用 CRC 也需给值。void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct);
SPI_InitStruct: 写入默认 SPI 配置。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。void I2S_StructInit(I2S_InitTypeDef* I2S_InitStruct);
I2S_InitStruct: 写入默认 I2S 配置。void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState);
SPIx: SPI 实例。NewState: ENABLE 使能 SPI,DISABLE 关闭。void I2S_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState);
SPIx: SPI/I2S 实例。NewState: ENABLE 使能 I2S,DISABLE 关闭。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: ENABLE 或 DISABLE。void SPI_I2S_DMACmd(SPI_TypeDef* SPIx, uint16_t SPI_I2S_DMAReq, FunctionalState NewState);
SPIx: SPI/I2S 实例。SPI_I2S_DMAReq: SPI_I2S_DMAReq_Tx 或 SPI_I2S_DMAReq_Rx。NewState: ENABLE 或 DISABLE。void SPI_I2S_SendData(SPI_TypeDef* SPIx, uint16_t Data);
SPIx: SPI/I2S 实例。Data: 待发送数据;8-bit SPI 低 8 位有效,16-bit/I2S 低 16 位有效。uint16_t SPI_I2S_ReceiveData(SPI_TypeDef* SPIx);
SPIx: SPI/I2S 实例;返回接收数据寄存器值。void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, uint16_t SPI_NSSInternalSoft);
SPIx: SPI 实例。SPI_NSSInternalSoft: SPI_NSSInternalSoft_Set 或 SPI_NSSInternalSoft_Reset;软件 NSS 内部状态。void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState);
SPIx: SPI 实例。NewState: ENABLE 使能 SS 输出,DISABLE 关闭;主机硬件 NSS 时使用。void SPI_DataSizeConfig(SPI_TypeDef* SPIx, uint16_t SPI_DataSize);
SPIx: SPI 实例。SPI_DataSize: SPI_DataSize_8b 或 SPI_DataSize_16b。void SPI_TransmitCRC(SPI_TypeDef* SPIx);
SPIx: SPI 实例;请求发送 CRC 值。void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState);
SPIx: SPI 实例。NewState: ENABLE 开启硬件 CRC 计算,DISABLE 关闭。uint16_t SPI_GetCRC(SPI_TypeDef* SPIx, uint8_t SPI_CRC);
SPIx: SPI 实例。SPI_CRC: SPI_CRC_Tx 或 SPI_CRC_Rx,选择读取发送/接收 CRC。uint16_t SPI_GetCRCPolynomial(SPI_TypeDef* SPIx);
SPIx: SPI 实例;返回 CRC 多项式寄存器值。void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, uint16_t SPI_Direction);
SPIx: SPI 实例。SPI_Direction: SPI_Direction_Tx 或 SPI_Direction_Rx;单线双向模式下切换方向。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 等。void SPI_I2S_ClearFlag(SPI_TypeDef* SPIx, uint16_t SPI_I2S_FLAG);
SPIx: SPI/I2S 实例。SPI_I2S_FLAG: 要清除的可清标志,如 SPI_I2S_FLAG_CRCERR;OVR 等需按手册读写序列清除。ITStatus SPI_I2S_GetITStatus(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT);
SPIx: SPI/I2S 实例。SPI_I2S_IT: SPI_I2S_IT_TXE, RXNE, ERR。void SPI_I2S_ClearITPendingBit(SPI_TypeDef* SPIx, uint8_t SPI_I2S_IT);
SPIx: SPI/I2S 实例。SPI_I2S_IT: 要清除的中断挂起位;如错误类中断。常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
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 状态/错误标志 |
void I2C_DeInit(I2C_TypeDef* I2Cx);
I2Cx: I2C1 或 I2C2。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_2 或 I2C_DutyCycle_16_9。I2C_OwnAddress1: 本机地址,7/10 bit 取决于配置。I2C_Ack: I2C_Ack_Enable 或 Disable。I2C_AcknowledgedAddress: I2C_AcknowledgedAddress_7bit 或 10bit。void I2C_StructInit(I2C_InitTypeDef* I2C_InitStruct);
I2C_InitStruct: 写入默认 I2C 配置。void I2C_Cmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
I2Cx: I2C 实例。NewState: ENABLE 使能 I2C,DISABLE 关闭。void I2C_DMACmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
I2Cx: I2C 实例。NewState: ENABLE 开启 DMA 请求,DISABLE 关闭。void I2C_DMALastTransferCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
I2Cx: I2C 实例。NewState: ENABLE 让下一次 DMA EOT 作为最后传输,DISABLE 关闭。void I2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalState NewState);
I2Cx: I2C 实例。NewState: ENABLE 产生 START,DISABLE 清除 START 位。void I2C_GenerateSTOP(I2C_TypeDef* I2Cx, FunctionalState NewState);
I2Cx: I2C 实例。NewState: ENABLE 产生 STOP,DISABLE 清除 STOP 位。void I2C_AcknowledgeConfig(I2C_TypeDef* I2Cx, FunctionalState NewState);
I2Cx: I2C 实例。NewState: ENABLE ACK,DISABLE NACK。void I2C_OwnAddress2Config(I2C_TypeDef* I2Cx, uint8_t Address);
I2Cx: I2C 实例。Address: 第二本机地址,7 bit 地址左对齐方式按库实现。void I2C_DualAddressCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
I2Cx: I2C 实例。NewState: ENABLE 双地址响应,DISABLE 单地址。void I2C_GeneralCallCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
I2Cx: I2C 实例。NewState: ENABLE 响应 General Call 地址,DISABLE 不响应。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: ENABLE 或 DISABLE。void I2C_SendData(I2C_TypeDef* I2Cx, uint8_t Data);
I2Cx: I2C 实例。Data: 待发送字节。uint8_t I2C_ReceiveData(I2C_TypeDef* I2Cx);
I2Cx: I2C 实例;返回接收字节。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_Transmitter 或 I2C_Direction_Receiver。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。void I2C_SoftwareResetCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
I2Cx: I2C 实例。NewState: ENABLE 置软件复位,DISABLE 释放复位。void I2C_NACKPositionConfig(I2C_TypeDef* I2Cx, uint16_t I2C_NACKPosition);
I2Cx: I2C 实例。I2C_NACKPosition: I2C_NACKPosition_Next 或 Current。void I2C_SMBusAlertConfig(I2C_TypeDef* I2Cx, uint16_t I2C_SMBusAlert);
I2Cx: I2C 实例。I2C_SMBusAlert: I2C_SMBusAlert_Low 或 High。void I2C_TransmitPEC(I2C_TypeDef* I2Cx, FunctionalState NewState);
I2Cx: I2C 实例。NewState: ENABLE 发送 PEC,DISABLE 不发送。void I2C_PECPositionConfig(I2C_TypeDef* I2Cx, uint16_t I2C_PECPosition);
I2Cx: I2C 实例。I2C_PECPosition: I2C_PECPosition_Next 或 Current。void I2C_CalculatePEC(I2C_TypeDef* I2Cx, FunctionalState NewState);
I2Cx: I2C 实例。NewState: ENABLE 开启 PEC 计算,DISABLE 关闭。uint8_t I2C_GetPEC(I2C_TypeDef* I2Cx);
I2Cx: I2C 实例;读取 PEC 值。void I2C_ARPCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
I2Cx: I2C 实例。NewState: ENABLE 开启 SMBus ARP,DISABLE 关闭。void I2C_StretchClockCmd(I2C_TypeDef* I2Cx, FunctionalState NewState);
I2Cx: I2C 实例。NewState: ENABLE 允许时钟拉伸,DISABLE 禁止。void I2C_FastModeDutyCycleConfig(I2C_TypeDef* I2Cx, uint16_t I2C_DutyCycle);
I2Cx: I2C 实例。I2C_DutyCycle: I2C_DutyCycle_2 或 I2C_DutyCycle_16_9。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。uint32_t I2C_GetLastEvent(I2C_TypeDef* I2Cx);
I2Cx: I2C 实例;返回 SR1/SR2 合成的最后事件值。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 等。void I2C_ClearFlag(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG);
I2Cx: I2C 实例。I2C_FLAG: 要清除的错误/状态标志;部分事件标志需按手册读 SR1/SR2 清除。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 等。void I2C_ClearITPendingBit(I2C_TypeDef* I2Cx, uint32_t I2C_IT);
I2Cx: I2C 实例。I2C_IT: 要清除的 I2C 中断挂起位。常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
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_1tq … CAN_BS1_16tq |
时间段 1 |
CAN_BS2 |
CAN_BS2_1tq … CAN_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 |
发送状态返回值 |
void CAN_DeInit(CAN_TypeDef* CANx);
CANx: CAN1。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 表示超时/失败。void CAN_FilterInit(CAN_FilterInitTypeDef* CAN_FilterInitStruct);
CAN_FilterInitStruct: 过滤器结构体。CAN_FilterNumber: 过滤器编号;F103 单 CAN 常用 0~13。CAN_FilterMode: CAN_FilterMode_IdMask 或 IdList。CAN_FilterScale: CAN_FilterScale_16bit 或 32bit。CAN_FilterIdHigh/Low: 过滤器 ID 高/低 16 位。CAN_FilterMaskIdHigh/Low: 掩码或列表第二组 ID。CAN_FilterFIFOAssignment: CAN_Filter_FIFO0 或 CAN_Filter_FIFO1。CAN_FilterActivation: ENABLE 启用,DISABLE 禁用。void CAN_StructInit(CAN_InitTypeDef* CAN_InitStruct);
CAN_InitStruct: 写入默认 CAN 初始化参数。void CAN_SlaveStartBank(uint8_t CAN_BankNumber);
CAN_BankNumber: 双 CAN 设备中 CAN2 起始过滤器组;F103CBT6 无 CAN2,一般不用。void CAN_DBGFreeze(CAN_TypeDef* CANx, FunctionalState NewState);
CANx: CAN1。NewState: ENABLE 调试暂停时冻结 CAN,DISABLE 不冻结。void CAN_TTComModeCmd(CAN_TypeDef* CANx, FunctionalState NewState);
CANx: CAN1。NewState: ENABLE 开启时间触发通信,DISABLE 关闭。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_Standard 或 CAN_Id_Extended。RTR: CAN_RTR_Data 或 CAN_RTR_Remote。DLC: 数据长度,0~8。Data[8]: 数据字节。返回邮箱号或 CAN_TxStatus_NoMailBox。uint8_t CAN_TransmitStatus(CAN_TypeDef* CANx, uint8_t TransmitMailbox);
CANx: CAN1。TransmitMailbox: CAN_TxMailBox_0, _1, _2 或 CAN_Transmit 返回的邮箱号。返回 CAN_TxStatus_Failed/Pending/Ok/NoMailBox。void CAN_CancelTransmit(CAN_TypeDef* CANx, uint8_t Mailbox);
CANx: CAN1。Mailbox: 要取消的邮箱,0~2。void CAN_Receive(CAN_TypeDef* CANx, uint8_t FIFONumber, CanRxMsg* RxMessage);
CANx: CAN1。FIFONumber: CAN_FIFO0 或 CAN_FIFO1。RxMessage: 接收报文结构体,字段包括 StdId, ExtId, IDE, RTR, DLC, Data[8], FMI。void CAN_FIFORelease(CAN_TypeDef* CANx, uint8_t FIFONumber);
CANx: CAN1。FIFONumber: CAN_FIFO0 或 CAN_FIFO1;释放 FIFO 输出邮箱。uint8_t CAN_MessagePending(CAN_TypeDef* CANx, uint8_t FIFONumber);
CANx: CAN1。FIFONumber: CAN_FIFO0 或 CAN_FIFO1;返回 FIFO 中挂起报文数。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: ENABLE 或 DISABLE。FlagStatus CAN_GetFlagStatus(CAN_TypeDef* CANx, uint32_t CAN_FLAG);
CANx: CAN1。CAN_FLAG: 见本节 CAN_FLAG_*。void CAN_ClearFlag(CAN_TypeDef* CANx, uint32_t CAN_FLAG);
CANx: CAN1。CAN_FLAG: 要清除的 CAN 标志。ITStatus CAN_GetITStatus(CAN_TypeDef* CANx, uint32_t CAN_IT);
CANx: CAN1。CAN_IT: 见本节 CAN_IT_*。void CAN_ClearITPendingBit(CAN_TypeDef* CANx, uint32_t CAN_IT);
CANx: CAN1。CAN_IT: 要清除的 CAN 中断挂起位。uint8_t CAN_Sleep(CAN_TypeDef* CANx);
CANx: CAN1;请求进入睡眠,返回操作状态。uint8_t CAN_WakeUp(CAN_TypeDef* CANx);
CANx: CAN1;请求从睡眠唤醒,返回操作状态。常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
BKP_DR |
BKP_DR1 … BKP_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 输出标志 |
void BKP_DeInit(void);
void BKP_TamperPinLevelConfig(uint16_t BKP_TamperPinLevel);
BKP_TamperPinLevel: BKP_TamperPinLevel_High 或 BKP_TamperPinLevel_Low。void BKP_TamperPinCmd(FunctionalState NewState);
NewState: ENABLE 开启入侵检测引脚,DISABLE 关闭。void BKP_ITConfig(FunctionalState NewState);
NewState: ENABLE 开启 Tamper 中断,DISABLE 关闭。void BKP_RTCOutputConfig(uint16_t BKP_RTCOutputSource);
BKP_RTCOutputSource: BKP_RTCOutputSource_None, CalibClock, Alarm, Second。void BKP_SetRTCCalibrationValue(uint8_t CalibrationValue);
CalibrationValue: RTC 校准值,7 bit,范围 0x00~0x7F。void BKP_WriteBackupRegister(uint16_t BKP_DR, uint16_t Data);
BKP_DR: BKP_DR1~BKP_DR10。Data: 写入的 16-bit 数据。uint16_t BKP_ReadBackupRegister(uint16_t BKP_DR);
BKP_DR: BKP_DR1~BKP_DR10;返回该备份寄存器值。FlagStatus BKP_GetFlagStatus(void);
TEF。void BKP_ClearFlag(void);
ITStatus BKP_GetITStatus(void);
void BKP_ClearITPendingBit(void);
void RTC_ITConfig(uint16_t RTC_IT, FunctionalState NewState);
RTC_IT: RTC_IT_OW, RTC_IT_ALR, RTC_IT_SEC,可组合。NewState: ENABLE 或 DISABLE。void RTC_EnterConfigMode(void);
void RTC_ExitConfigMode(void);
uint32_t RTC_GetCounter(void);
void RTC_SetCounter(uint32_t CounterValue);
CounterValue: 写入 32-bit RTC 计数器值。void RTC_SetPrescaler(uint32_t PrescalerValue);
PrescalerValue: RTC 预分频值,20 bit。若 LSE=32768 Hz,要 1 Hz 秒中断常设 32767。void RTC_SetAlarm(uint32_t AlarmValue);
AlarmValue: 32-bit 闹钟比较值。uint32_t RTC_GetDivider(void);
void RTC_WaitForLastTask(void);
void RTC_WaitForSynchro(void);
FlagStatus RTC_GetFlagStatus(uint16_t RTC_FLAG);
RTC_FLAG: RTC_FLAG_RTOFF, RSF, OW, ALR, SEC。void RTC_ClearFlag(uint16_t RTC_FLAG);
RTC_FLAG: 要清除的 RTC 标志;如 RTC_FLAG_SEC, ALR, OW, RSF。ITStatus RTC_GetITStatus(uint16_t RTC_IT);
RTC_IT: RTC_IT_OW, RTC_IT_ALR, RTC_IT_SEC。void RTC_ClearITPendingBit(uint16_t RTC_IT);
RTC_IT: 要清除的 RTC 中断挂起位。void PWR_DeInit(void);
void PWR_BackupAccessCmd(FunctionalState NewState);
NewState: ENABLE 允许访问备份域 RTC/BKP,DISABLE 禁止。void PWR_PVDLevelConfig(uint32_t PWR_PVDLevel);
PWR_PVDLevel: PWR_PVDLevel_2V2, 2V3, 2V4, 2V5, 2V6, 2V7, 2V8, 2V9。void PWR_PVDCmd(FunctionalState NewState);
NewState: ENABLE 开启 PVD,DISABLE 关闭。void PWR_WakeUpPinCmd(FunctionalState NewState);
NewState: ENABLE 使能 WKUP 引脚唤醒,DISABLE 禁用。void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry);
PWR_Regulator: PWR_Regulator_ON 或 PWR_Regulator_LowPower。PWR_STOPEntry: PWR_STOPEntry_WFI 或 PWR_STOPEntry_WFE。void PWR_EnterSTANDBYMode(void);
FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG);
PWR_FLAG: PWR_FLAG_WU, PWR_FLAG_SB, PWR_FLAG_PVDO。void PWR_ClearFlag(uint32_t PWR_FLAG);
PWR_FLAG: PWR_FLAG_WU 或 PWR_FLAG_SB,可组合清除唤醒/待机标志。常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
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_Pages0to3 … FLASH_WRProt_Pages124to127, FLASH_WRProt_AllPages |
页写保护掩码;F103CBT6 为 128 KB 时页大小 1 KB,注意容量差异 |
void FLASH_SetLatency(uint32_t FLASH_Latency);
FLASH_Latency: FLASH_Latency_0, FLASH_Latency_1, FLASH_Latency_2。高频运行前先设置。void FLASH_HalfCycleAccessCmd(uint32_t FLASH_HalfCycleAccess);
FLASH_HalfCycleAccess: FLASH_HalfCycleAccess_Enable 或 FLASH_HalfCycleAccess_Disable。void FLASH_PrefetchBufferCmd(uint32_t FLASH_PrefetchBuffer);
FLASH_PrefetchBuffer: FLASH_PrefetchBuffer_Enable 或 FLASH_PrefetchBuffer_Disable。void FLASH_Unlock(void);
void FLASH_Lock(void);
FLASH_Status FLASH_ErasePage(uint32_t Page_Address);
Page_Address: 要擦除页内任意地址,通常传页起始地址;返回 FLASH_COMPLETE 等状态。FLASH_Status FLASH_EraseAllPages(void);
FLASH_Status FLASH_EraseOptionBytes(void);
FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data);
Address: 目标 Flash 地址,通常 4 字节对齐更稳妥。Data: 写入 32-bit 数据;底层按半字编程。FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data);
Address: 目标 Flash 地址,半字对齐。Data: 写入 16-bit 数据。FLASH_Status FLASH_ProgramOptionByteData(uint32_t Address, uint8_t Data);
Address: 选项字节地址。Data: 8-bit 选项数据。FLASH_Status FLASH_EnableWriteProtection(uint32_t FLASH_Pages);
FLASH_Pages: 写保护页掩码;FLASH_WRProt_Pages0to3 等或 FLASH_WRProt_AllPages,可组合。FLASH_Status FLASH_ReadOutProtection(FunctionalState NewState);
NewState: ENABLE 开启读保护,DISABLE 关闭读保护;关闭读保护通常会触发全片擦除。FLASH_Status FLASH_UserOptionByteConfig(uint16_t OB_IWDG, uint16_t OB_STOP, uint16_t OB_STDBY);
OB_IWDG: OB_IWDG_SW 或 OB_IWDG_HW。OB_STOP: OB_STOP_NoRST 或 OB_STOP_RST。OB_STDBY: OB_STDBY_NoRST 或 OB_STDBY_RST。uint32_t FLASH_GetUserOptionByte(void);
uint32_t FLASH_GetWriteProtectionOptionByte(void);
FlagStatus FLASH_GetReadOutProtectionStatus(void);
SET/RESET。FlagStatus FLASH_GetPrefetchBufferStatus(void);
void FLASH_ITConfig(uint32_t FLASH_IT, FunctionalState NewState);
FLASH_IT: FLASH_IT_EOP 或 FLASH_IT_ERROR。NewState: ENABLE 或 DISABLE。FlagStatus FLASH_GetFlagStatus(uint32_t FLASH_FLAG);
FLASH_FLAG: FLASH_FLAG_BSY, EOP, PGERR, WRPRTERR, OPTERR。void FLASH_ClearFlag(uint32_t FLASH_FLAG);
FLASH_FLAG: 要清除的 Flash 标志;如 FLASH_FLAG_EOP, PGERR, WRPRTERR。FLASH_Status FLASH_GetStatus(void);
FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout);
Timeout: 等待超时计数;返回 FLASH_COMPLETE, FLASH_BUSY, FLASH_TIMEOUT 或错误状态。void CRC_ResetDR(void);
uint32_t CRC_CalcCRC(uint32_t Data);
Data: 输入的 32-bit 数据字。返回更新后的 CRC。uint32_t CRC_CalcBlockCRC(uint32_t pBuffer[], uint32_t BufferLength);
pBuffer: 32-bit 数据数组。BufferLength: 数组元素个数,不是字节数。返回块 CRC。uint32_t CRC_GetCRC(void);
void CRC_SetIDRegister(uint8_t IDValue);
IDValue: 写入独立 ID 寄存器的 8-bit 值,不参与 CRC 计算。uint8_t CRC_GetIDRegister(void);
常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
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 |
早期唤醒中断标志 |
void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAccess);
IWDG_WriteAccess: IWDG_WriteAccess_Enable 或 IWDG_WriteAccess_Disable。void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);
IWDG_Prescaler: IWDG_Prescaler_4, 8, 16, 32, 64, 128, 256。void IWDG_SetReload(uint16_t Reload);
Reload: 重装载值,12 bit,范围 0x000~0xFFF。void IWDG_ReloadCounter(void);
void IWDG_Enable(void);
FlagStatus IWDG_GetFlagStatus(uint16_t IWDG_FLAG);
IWDG_FLAG: IWDG_FLAG_PVU 或 IWDG_FLAG_RVU。void WWDG_DeInit(void);
void WWDG_SetPrescaler(uint32_t WWDG_Prescaler);
WWDG_Prescaler: WWDG_Prescaler_1, 2, 4, 8。void WWDG_SetWindowValue(uint8_t WindowValue);
WindowValue: 窗口值,7 bit,通常 0x40~0x7F。void WWDG_EnableIT(void);
void WWDG_SetCounter(uint8_t Counter);
Counter: 计数器值,7 bit,通常 0x40~0x7F;用于喂窗口狗。void WWDG_Enable(uint8_t Counter);
Counter: 初始计数器值,通常 0x40~0x7F;启动 WWDG。FlagStatus WWDG_GetFlagStatus(void);
WWDG_FLAG_EWIF。void WWDG_ClearFlag(void);
常用宏
| 参数 | 宏 | 说明 |
|---|---|---|
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 超时 |
uint32_t DBGMCU_GetREVID(void);
uint32_t DBGMCU_GetDEVID(void);
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 关闭。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 外设函数范围。
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_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE)。GPIO_EXTILineConfig → EXTI_Init → NVIC_Init。ADC_Init → ADC_Cmd → 复位校准/校准 → 配通道 → 触发转换。TIM_CtrlPWMOutputs(TIM1, ENABLE)。