By TSBread
排序方式按照学习顺序&代码执行顺序自上而下
stm32f10x_rcc:void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
RCC_AHBPeriph_XXX。ENABLE、DISABLE共 2 个枚举成员void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
RCC_APB1Periph_XXX。ENABLE、DISABLE共 2 个枚举成员void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
RCC_APB2Periph_XXX。如要开启 GPIOA 的时钟则为RCC_APB2Periph_GPIOA、AFIO 的则为RCC_APB2Periph_AFIOENABLE、DISABLE共 2 个枚举成员void RCC_ADCCLKConfig(uint32_t RCC_PCLK2);
RCC_PCLK2_Div2、RCC_PCLK2_Div4、RCC_PCLK2_Div6、RCC_PCLK2_Div8stm32f10x_gpio:void GPIO_DeInit(GPIO_TypeDef* GPIOx);:
GPIOA、GPIOB、GPIOC、...void GPIO_AFIODeInit(GPIO_TypeDef* GPIOx);:
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);:
GPIOA、GPIOB、GPIOC、...GPIO_Pin:通过宏定义指向 GPIO 的 16 个引脚,包含GPIO_Pin_1~15和GPIO_Pin_All共 17 个宏定义。可使用|一次性控制多个引脚GPIO_Speed:决定 GPIO 最大电平反转速度,包含GPIO_Speed_10MHz、GPIO_Speed_2MHz、GPIO_Speed_50MHz共 3 个枚举成员GPIO_Mode:配置 GPIO 的输入/输出模式,包含: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_PPvoid GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct);
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
GPIOA、GPIOB、GPIOC、...GPIO_Pin_1~15和GPIO_Pin_All共 17 个宏定义。可使用|一次性控制多个引脚uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
GPIOA、GPIOB、GPIOC、...uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
GPIOA、GPIOB、GPIOC、...GPIO_Pin_1~15和GPIO_Pin_All共 17 个宏定义。可使用|一次性控制多个引脚uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
GPIOA、GPIOB、GPIOC、...void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
GPIOA、GPIOB、GPIOC、...GPIO_Pin_1~15和GPIO_Pin_All共 17 个宏定义。可使用|一次性控制多个引脚void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
GPIOA、GPIOB、GPIOC、...GPIO_Pin_1~15和GPIO_Pin_All共 17 个宏定义。可使用|一次性控制多个引脚void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
BitVal的值GPIOA、GPIOB、GPIOC、...GPIO_Pin_1~15和GPIO_Pin_All共 17 个宏定义。可使用|一次性控制多个引脚Bit_RESET(低电平)、Bit_SET(高电平)共 2 个枚举成员void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);
GPIOA、GPIOB、GPIOC、...void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);
ENABLE、DISABLE共 2 个枚举成员PA13、PA14、PA15、PB3、PB4、默认复用了调试端口,如果要复用则需要先关闭调式端口的复用然后再开启(能不用就不用)void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);
GPIO_PortSourceGPIOA~GGPIO_PinSource0~15stm32f10x_exti:void EXTI_DeInit(void);
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);
EXTI_Line:通过宏定义指向 EXTI 的 20 个引脚(0~15 为 GPIO_Pin 中断源),包含EXTI_Line0~19。可使用|一次性选择多个引脚EXTI_Mode:指定外部中断线响应模式(中断模式 / 事件模式),包含EXTI_Mode_Interrupt、EXTI_Mode_Event共 2 个枚举成员EXTI_Trigger:选择外部中断触发模式(上升沿 / 下降沿 / 双边沿),包含EXTI_Trigger_Rising、EXTI_Trigger_Falling、EXTI_Trigger_Rising_Falling共 3 个枚举成员EXTI_LineCmd:选择中断线的新状态(开启 / 关闭),包含ENABLE、DISABLE共 2 个枚举成员void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct);
void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);
FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);
RESET、SET共 2 个枚举成员void EXTI_ClearFlag(uint32_t EXTI_Line);
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);
RESET、SET共 2 个枚举成员void EXTI_ClearITPendingBit(uint32_t EXTI_Line);
misc:*因为 NVIC 是内核外设所以 NVIC 相关函数也在 misc(杂项)中
void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);
NVIC_PriorityGroup_0:0 位抢占优先级,4 位响应优先级NVIC_PriorityGroup_1:1 位抢占优先级,3 位响应优先级NVIC_PriorityGroup_2:2 位抢占优先级,2 位响应优先级NVIC_PriorityGroup_3:3 位抢占优先级,1 位响应优先级NVIC_PriorityGroup_4:4 位抢占优先级,0 位响应优先级void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);
功能:使用结构体参数来初始化 NVIC
参数:
初始化结构体指针,包含成员:
NVIC_IRQChannel:指定一个中断通道,参数参考下图 👇


NVIC_IRQChannelPreemptionPriority:指定抢占优先级(取值范围参考表内值)
NVIC_IRQChannelSubPriority:指定响应优先级(取值范围参考表内值)
NVIC_IRQChannelCmd:指定中断通道是使能还是失能(开启 / 关闭),包含ENABLE、DISABLE共 2 个枚举成员
*注意:设置结构体.抢占&响应优先级的取值范围应参考下表 👇

startup_stm32f10x_md.s:*为了获取中断函数名称
void 中断函数名称(void);

stm32f10x_tim:void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
功能:时基单元初始化
参数:
选择某个定时器
时基单元参数结构体,包含成员:
TIM_Prescaler:PSC 预分频器的值
TIM_CounterMode:计数模式,包含:
TIM_CounterMode_Up:向上计数TIM_CounterMode_Down:向下计数TIM_CounterMode_CenterAligned1:中央对齐模式 1,在上升 -> 下降 -> 上升的下降处产生中断TIM_CounterMode_CenterAligned2:中央对齐模式 2,在上升 -> 下降 -> 上升的上升处产生中断TIM_CounterMode_CenterAligned3:中央对齐模式 3,在上升 -> 下降 -> 上升的上升和下降处均可产生中断TIM_Period:周期,也就是 ARR 自动重装的值
TIM_ClockDivision:指定时钟要分频多少,位于外部输入的输入滤波。在一个固定的时钟频率 f 下进行采样,若连续 n 个采样点电平都相同则说明输入信号稳定,将采样值输出;否则说明信号有抖动,保持上一次的输出或直接输出低电平(频率越低采样点数越多,滤波效果越好,信号延迟就越大)。包含:TIM_CKD_DIV1(一般选这个即可)、TIM_CKD_DIV2、TIM_CKD_DIV4
TIM_RepetitionCounter:重复计数器的值(高级定时器),若不用则给 0 即可
*注意:
TIM_GetCounter和TIM_SetCounter来进行读写CK_CNT_OV = CK_PSC(72MHz) / (PSC + 1) / (ARR + 1)。因为预分频器和自动重装器都有一个数的偏差,给参数赋值时可以使用预设值 - 1(如要频率为 1Hz,则.TIM_Prescaler = 7200 - 1、.TIM_Period = 1000 - 1即可)。自动重装值越高频率越高*注意:因为该函数在末尾会立刻更新预分频器更新,导致生成一个更新事件,从而使得更新中断同时发生,会置更新标志位,所以会导致刚一上电就会立即进入中断函数。解决方法:在TIM_TimeBaseInit后用TIM_ClearFlag手动清除TIM_FLAG_Update的更新标志位即可
void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);
void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);
ENABLE、DISABLE共 2 个枚举成员void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
TIM_IT_Update: 更新中断TIM_IT_CC1: TIM Capture Compare 1 Interrupt sourceTIM_IT_CC2: TIM Capture Compare 2 Interrupt sourceTIM_IT_CC3: TIM Capture Compare 3 Interrupt sourceTIM_IT_CC4: TIM Capture Compare 4 Interrupt sourceTIM_IT_COM: TIM Commutation Interrupt sourceTIM_IT_Trigger: TIM Trigger Interrupt sourceTIM_IT_Break: TIM Break Interrupt sourceENABLE、DISABLE共 2 个枚举成员以下函数对应时基单元的时钟源选择部分:
void TIM_InternalClockConfig(TIM_TypeDef* TIMx);
void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
ITRx其他定时器的时钟作为时基单元的时钟源,实现级联功能ITR0~3接口,包含TIM_TS_ITR0、TIM_TS_ITR1、TIM_TS_ITR2、TIM_TS_ITR3共 4 个宏定义void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource, uint16_t TIM_ICPolarity, uint16_t ICFilter);
TIx捕获通道的时钟作为时基单元的时钟源TIx具体的某个引脚void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
ETR输入的外部时钟而言,模式 1 与模式 2 是等效的,若不需要触发输入的功能则两个函数可以互换void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
功能:选择 ETR 通过外部时钟模式 2输入的时钟作为时基单元的时钟源
参数:
选择定时器
对 ETR 的外部时钟做分频,包含:TIM_ExtTRGPSC_OFF、TIM_ExtTRGPSC_DIV2、TIM_ExtTRGPSC_DIV4、TIM_ExtTRGPSC_DIV8
输入的极性,包含:TIM_ExtTRGPolarity_Inverted(反向,低电平/下降沿有效)、TIM_ExtTRGPolarity_NonInverted(不反向,高电平/上升沿有效)
输入的滤波器,值区间在 0x00~0x0F,决定采样频率 f 和采样点 n 的
值参考下图 👇

*注意:对于ETR输入的外部时钟而言,模式 1 与模式 2 是等效的,若不需要触发输入的功能则两个函数可以互换
void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);
ETR引脚的预分频器、极性、滤波器等参数void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode);
TIM_PSCReloadMode_Update:使用缓冲器,更新事件发生后再修改TIM_PSCReloadMode_Immediate:不使用缓冲器,直接修改void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode);
void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);
#TIM 定时中断/#计数器无预装时序和#TIM 定时中断/#计数器有预装时序)。当使能时启用,ARR 的值会在更新事件触发后修改;失能时,ARR 的值会立即修改ENABLE、DISABLE共 2 个枚举成员void TIM_SetCounter(TIM_TypeDef* TIMx, uint16_t Counter);
void TIM_SetAutoreload(TIM_TypeDef* TIMx, uint16_t Autoreload);
uint16_t TIM_GetCounter(TIM_TypeDef* TIMx);
uint16_t TIM_GetPrescaler(TIM_TypeDef* TIMx);
FlagStatus TIM_GetFlagStatus(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
void TIM_ClearFlag(TIM_TypeDef* TIMx, uint16_t TIM_FLAG);
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);
参数:
TIM_FLAG:
TIM_IT:
*注意:与 EXTI 后 4 个函数作用相同,可参考#stm32f10x_exti部分
void TIM_OCxInit(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
功能:用来配置 1 ~ 4 通道的输出比较单元模块
参数:
选择定时器
输出比较初始化结构体,包含:
TIM_OCMode:设置输出比较模式,详细解释参考(#通用输出比较通道/输出模式控制器的模式框图)。包含:
TIM_OCMode_Active:相等时置有效电平TIM_OCMode_Inactive:相等时置无效电平TIM_OCMode_PWM1:PWM 模式 1(常用)TIM_OCMode_PWM2:PWM 模式 2(PWM 模式 1 的取反)TIM_OCMode_Timing:冻结模式TIM_OCMode_Toggle:相等时置电平翻转TIM_OutputState:设置输出使能,包含:
TIM_OutputNState_Disable:失能TIM_OutputNState_Enable:使能TIM_OutputNState:高级定时器使用
TIM_Pulse:设置初始 CCR 值(直译是脉冲(?))。要求输出一个 0 ~ FFFF 的值
TIM_OCPolarity:设置输出比较的极性,包含:
TIM_OCPolarity_High:置 0,极性不翻转(常用)TIM_OCPolarity_Low:置 1,极性翻转(High 值为 0,Low 为 1。差点被名字骗了...)TIM_OCNPolarity:高级定时器使用
TIM_OCIdleState:高级定时器使用
TIM_OCNIdleState:高级定时器使用
void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct);
void TIM_ForcedOC1~4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
#通用输出比较通道/输出模式控制器的模式框图)。一般不用void TIM_OC1~4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
void TIM_OC1~4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
void TIM_ClearOC1~4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
void TIM_OC1~4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx);
void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode);
void TIM_SetCompare1~4(TIM_TypeDef* TIMx, uint16_t Compare1);
void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState);
void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
功能:配置输入捕获单元。单一的配置一个通道
参数:
选择定时器
配置结构体,包含:
TIM_Channel:选择具体配置哪一通道,包含:TIM_Channel_1、TIM_Channel_2、TIM_Channel_3、TIM_Channel_4
TIM_ICFilter:选择输入捕获的滤波器,区间 0 ~ F。如果信号有毛刺和噪声,就可以增大滤波器参数,有效避免干扰。越大滤波效果越好
与外部触发信号的滤波器参数相同,可参考下图 👇

TIM_ICPolarity:对应边沿检测的极性选择,包含:
TIM_ICPolarity_BothEdge:上升/下降沿都触发TIM_ICPolarity_Falling:下降沿触发TIM_ICPolarity_Rising:上升沿触发TIM_ICPrescaler:触发信号分频器(位于数据选择器后,CCR 之前),1 分频则每次输入触发都有效,2 分频则需要 2 次触发信号...,以此类推,包含:TIM_ICPSC_DIV1、TIM_ICPSC_DIV2、TIM_ICPSC_DIV4、TIM_ICPSC_DIV8
TIM_ICSelection:选择触发信号从哪个引脚输入(对应极性选择至分频器之间的数据选择器),包含:
TIM_ICSelection_DirectTI:直连通道(对应自己 CH 输入的信号)TIM_ICSelection_IndirectTI:交叉通道(对应另一路 CH 输入的信号)TIM_ICSelection_TRC:void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct);
void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
主从触发模式:
void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
TRGI。对应触发源选择模式TIM_TS_ITR0、TIM_TS_ITR1、TIM_TS_ITR2、TIM_TS_ITR3、TIM_TS_TI1F_ED、TIM_TS_TI1FP1、TIM_TS_TI2FP2、TIM_TS_ETRFvoid TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource);
TRGO。对应主模式void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);
TIM_SlaveMode_Reset、TIM_SlaveMode_Gated、TIM_SlaveMode_Trigger、TIM_SlaveMode_External1void TIM_SetIC1~4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
uint16_t TIM_GetCapture1~4(TIM_TypeDef* TIMx);
stm32f10x_adc:void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);
ADC_Mode :ADC 的工作模式,包含:
ADC_Mode_Independent:独立模式,ADC1 和 ADC2 各转换个的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_ScanConvMode :选择扫描转换模式,ENABLE选择扫描转换模式,DISABLE选择非扫描转换模式,包含:ENABLE、DISABLEADC_ContinuousConvMode :选择连续转换模式,ENABLE选择连续转换模式,DISABLE选择单次转换模式,包含:ENABLE、DISABLEADC_ExternalTrigConv :外部触发转换选择,触发控制的触发源,包含:
ADC_ExternalTrigConv_T1_CC1:ADC_ExternalTrigConv_T1_CC2:ADC_ExternalTrigConv_T2_CC2:ADC_ExternalTrigConv_T3_TRGO:ADC_ExternalTrigConv_T4_CC4:ADC_ExternalTrigConv_Ext_IT11_TIM8_TRGO:ADC_ExternalTrigConv_T1_CC3:ADC_ExternalTrigConv_None:不使用外部触发,使用软件触发ADC_ExternalTrigConv_T3_CC1:ADC_ExternalTrigConv_T2_CC3:ADC_ExternalTrigConv_T8_CC1:ADC_ExternalTrigConv_T8_TRGO:ADC_ExternalTrigConv_T5_CC1:ADC_ExternalTrigConv_T5_CC3:ADC_DataAlign:数据对齐方式,一般选右对齐,包含:ADC_DataAlign_Right、ADC_DataAlign_LeftADC_NbrOfChannel :通道数目,指定在扫描模式下总共会用到几个通道void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);
ENABLE、DISABLE共 2 个枚举成员void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState);
用于控制校准的函数(在 ADC 初始化完成后,依次调用即可):
void ADC_ResetCalibration(ADC_TypeDef* ADCx);
FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx);
RESET(复位校准完成)或SET(复位开始)void ADC_StartCalibration(ADC_TypeDef* ADCx);
FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx);
RESET(校准完成)或SET(开始校准)void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx);
ADC_GetFlagStatus来获取EOF。没啥用,一般不用配置 ADC 间断模式:
void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number);
void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);
ADC_Channel_0、ADC_Channel_1、ADC_Channel_2、ADC_Channel_3、ADC_Channel_4、ADC_Channel_5、ADC_Channel_6、ADC_Channel_7、ADC_Channel_8、ADC_Channel_9、ADC_Channel_10、ADC_Channel_11、ADC_Channel_12、ADC_Channel_13、ADC_Channel_14、ADC_Channel_15、ADC_Channel_16、ADC_Channel_17ADC_SampleTime_1Cycles5 : Sample time equal to 1.5 cyclesADC_SampleTime_7Cycles5 : Sample time equal to 7.5 cyclesADC_SampleTime_13Cycles5 : Sample time equal to 13.5 cyclesADC_SampleTime_28Cycles5 : Sample time equal to 28.5 cyclesADC_SampleTime_41Cycles5 : Sample time equal to 41.5 cyclesADC_SampleTime_55Cycles5 : Sample time equal to 55.5 cyclesADC_SampleTime_71Cycles5 : Sample time equal to 71.5 cyclesADC_SampleTime_239Cycles5: Sample time equal to 239.5 cyclesvoid ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);
ADC_DR,从而自动清除 EOC 标志位uint32_t ADC_GetDualModeConversionValue(void);
函数名中带Injected均为注入组的相关配置
函数名中带AnalogWatchdog均为模拟看门狗的相关配置
void ADC_TempSensorVrefintCmd(FunctionalState NewState);
FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);
ADC_FLAG_AWD:模拟看门狗触发ADC_FLAG_EOC:规则/注入组转换完成ADC_FLAG_JEOC:注入组转换完成ADC_FLAG_JSTRT:注入组开始转换ADC_FLAG_STRT:规则组开始转换RESET(转换未完成)或SET(转换完成)void ADC_ClearFlag(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);
ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, uint16_t ADC_IT);
void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, uint16_t ADC_IT);
stm32f10x_dma:void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct);
DMA1~2_Channel1~7(DMA1)/1~5(DMA2)DMA_PeripheralBaseAddr:外设站点的起始地址DMA_PeripheralDataSize:外设站点的数据宽度,包含:DMA_PeripheralDataSize_Byte(uint8_t)、DMA_PeripheralDataSize_HalfWord(uint16_t)、DMA_PeripheralDataSize_Word(uint32_t)DMA_PeripheralInc;:外设站点的数据地址是否自增,包含:DMA_PeripheralInc_Disable、DMA_PeripheralInc_EnableDMA_MemoryBaseAddr:存储器站点的起始地址DMA_MemoryDataSize:存储器站点的数据宽度,包含:DMA_MemoryDataSize_Byte(uint8_t)、DMA_MemoryDataSize_HalfWord(uint16_t)、DMA_MemoryDataSize_Word(uint32_t)DMA_MemoryInc;:存储器站点的数据地址是否自增,包含:DMA_MemoryInc_Disable、DMA_MemoryInc_EnableDMA_DIR:数据传输方向,包含:DMA_DIR_PeripheralDST(destination 目的地,外设站点作为目的地。存储器 -> 外设 )、DMA_DIR_PeripheralSRC(source 源头,外设站点作为源端。外设 -> 存储器)DMA_BufferSize:缓冲区大小,也就是传输计数器。以数据单元指定缓存区大小(要传送几个数据单元,数据单元等于传输源站点的数据宽度)DMA_Mode:传输模式,也就是是否使用自动重装,包含:DMA_Mode_Circular(自动重装。该模式不能应用在存储器到存储器模式下,也就是自动重装和软甲触发不能同时使用)、DMA_Mode_Normal(不自动重装)DMA_M2M:选择是否是存储器到存储器,也就是选择硬件触发还是软件触发,包含:DMA_M2M_Disable(硬件触发)、DMA_M2M_Enable(软件触发)DMA_Priority:指定通道的软件优先级,按照参数要求给优先级,包含:DMA_Priority_High、DMA_Priority_Low、DMA_Priority_Medium、DMA_Priority_VeryHighvoid DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState);
void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState);
DMA1~2_Channel1~7(DMA1)/1~5(DMA2)DMA_IT_TC(转运完成)、DMA_IT_HT(转运过半)、DMA_IT_TE(转运错误)void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber);
传输计数器写入数据uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx);
传输计数器的值。可以查看还剩多少数据没有被转运FlagStatus DMA_GetFlagStatus(uint32_t DMAy_FLAG);
DMAy_FLAG_GLx(DMAy 的 x 通道的全局标志位)、DMAy_FLAG_TCx(DMAy 的 x 通道的转运完成标志位)、DMAy_FLAG_HTx(DMAy 的 x 通道的转运过半标志位)、DMAy_FLAG_TEx(DMAy 的 x 通道的转运错误标志位)RESET(正在运行)、SET(完成)void DMA_ClearFlag(uint32_t DMAy_FLAG);
DMAy_FLAG_GLx(DMAy 的 x 通道的全局标志位)、DMAy_FLAG_TCx(DMAy 的 x 通道的转运完成标志位)、DMAy_FLAG_HTx(DMAy 的 x 通道的转运过半标志位)、DMAy_FLAG_TEx(DMAy 的 x 通道的转运错误标志位)ITStatus DMA_GetITStatus(uint32_t DMAy_IT);
DMAy_IT_GLx(DMAy 的 x 通道的全局挂起位)、DMAy_IT_TCx(DMAy 的 x 通道的转运完成挂起位)、DMAy_IT_HTx(DMAy 的 x 通道的转运过半挂起位)、DMAy_IT_TEx(DMAy 的 x 通道的转运错误挂起位)RESET(正在运行)、SET(完成)void DMA_ClearITPendingBit(uint32_t DMAy_IT);
DMAy_IT_GLx(DMAy 的 x 通道的全局挂起位)、DMAy_IT_TCx(DMAy 的 x 通道的转运完成挂起位)、DMAy_IT_HTx(DMAy 的 x 通道的转运过半挂起位)、DMAy_IT_TEx(DMAy 的 x 通道的转运错误挂起位)stm32f10x_usart:void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
USART_BaudRate:波特率,可以直接写一个波特率的数值,如 9600USART_WordLength:字长,包含:USART_WordLength_8b、USART_WordLength_9bUSART_StopBits:停止位,包含:USART_StopBits_1、USART_StopBits_0_5、USART_StopBits_2、USART_StopBits_1_5USART_Parity:校验位,包含:USART_Parity_No(无校验)、USART_Parity_Even(偶校验)、USART_Parity_Odd(奇校验)USART_Mode:选择模式,包含:USART_Mode_Rx(接收)、USART_Mode_Tx(发送)。如果既要发送又要接收就用按位或|USART_HardwareFlowControl:硬件流控制,包含:USART_HardwareFlowControl_None、USART_HardwareFlowControl_RTS、USART_HardwareFlowControl_CTS、USART_HardwareFlowControl_RTS_CTSvoid USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);
void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState);
USART_IT_TXE:发送寄存器空USART_IT_RXNE:接收数据寄存器非空void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState);
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
USART_DR,从而自动清除标志位USART_FLAG_TXE:发送寄存器空USART_FLAG_RXNE:接收数据寄存器非空USART_FLAG_NE:数据有噪音void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG);
ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);