STM32标准库常用函数-不断更新

一、RCC

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//APB2总线A引脚时钟使能

二、GPIO



GPIO_InitTypeDef  GPIO_InitStructure;//GPIO配置结构体
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//GPIO模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;//引脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//引脚速率
GPIO_Init(GPIOA,&GPIO_InitStructure);//针对引脚初始化这些配置

GPIO_SetBits(GPIOA,GPIO_Pin_0 | GPIO_Pin_1);//引脚置为高电平1
GPIO_ResetBits(GPIOA,GPIO_Pin_0 | GPIO_Pin_1);//引脚置为低电平0
GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);//对引脚设置0或1
void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);//对GPIO16个引脚一起设置,低位为0脚

GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12);//获取引脚电平状态,SET为高电平1,RESET为低电平0
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);//获取GPIO16个引脚的状态
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//获取输出引脚的状态
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);//获取GPIO16个输出引脚的状态,直接返回16byte

三、AFIO

void GPIO_AFIODeInit(void);//复位清除AFIO外设寄存器
void GPIO_PinLockConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//锁定GPIO配置
void GPIO_EventOutputConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);//选择用作事件输出的GPIO引脚
void GPIO_EventOutputCmd(FunctionalState NewState);//中断使能事件输出
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState);//引脚重映射
void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource);//外部中断配置AFIO的数据选择器
void GPIO_ETH_MediaInterfaceConfig(uint32_t GPIO_ETH_MediaInterface);//以太网使用函数

四、EXTI

void EXTI_DeInit(void);//清除EXTI寄存器内容,恢复成上电状态
void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct);//初始化EXTI外设
void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct);//EXTI配置结构体变量赋默认值
void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line);//软件触发外部中断,指定中断线
//一般读写标志位,能不能触发中断的标志位都能读取
FlagStatus EXTI_GetFlagStatus(uint32_t EXTI_Line);//获取指定的状态标志位是否置1  主程序使用
void EXTI_ClearFlag(uint32_t EXTI_Line);//对置1 的指定标志位清除标志位  主程序使用
//只能读写与中断有关的标志位,并对中断是否允许做出了判断
ITStatus EXTI_GetITStatus(uint32_t EXTI_Line);//中断函数内使用  获取中断标志位是否置1
void EXTI_ClearITPendingBit(uint32_t EXTI_Line);//中断函数内使用  清除置1的中断挂起标志位

五、NVIC

void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);//指定中断分组方式
void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);//根据结构体初始化NVIC
void NVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset);//设置中断向量表
void NVIC_SystemLPConfig(uint8_t LowPowerMode, FunctionalState NewState);//系统低功耗配置

六、TIMER

void TIM_DeInit(TIM_TypeDef* TIMx);//定时器恢复缺省值

void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);//时基单元初始化

void TIM_TimeBaseStructInit(TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);//把时基单元结构体赋默认值

void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);//使能计数器,定时器使能控制

void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);//使能定时器中断输出信号


//时基单元始终选择部分
void TIM_InternalClockConfig(TIM_TypeDef* TIMx);//选择内部时钟
void TIM_ITRxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);//选择其他定时器的时钟,要根据手册接入从定时器
void TIM_TIxExternalClockConfig(TIM_TypeDef* TIMx, uint16_t TIM_TIxExternalCLKSource,
                                uint16_t TIM_ICPolarity, uint16_t ICFilter);//选择其他外部捕获的时钟,需要指定外部引脚、极性、滤波器
void TIM_ETRClockMode1Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,uint16_t ExtTRGFilter);//ETR输入的外部时钟模式1,需要指定外部触发预分频器、极性、滤波器
void TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);//ETR输入的外部时钟模式2,需要指定外部触发预分频器、极性、滤波器
void TIM_ETRConfig(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, uint16_t TIM_ExtTRGPolarity,uint16_t ExtTRGFilter);//用来配置ETR引脚的滤波器、预分频器、极性选择等


连接NVIC后用NVIC_Init

void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode);//单独更改预分频值的函数,指定预分频值和预分频写入模式(是否使用影子寄存器)

void TIM_CounterModeConfig(TIM_TypeDef* TIMx, uint16_t TIM_CounterMode);//定时器计数模式改变函数

void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState);//自动重装器ARR预装功能使能,影子寄存器是否使用

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);



七、PWM-TIMER输出比较模式

用于配置输出比较模块初始化
void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);

输出比较的初始化结构体赋默认值
void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct);

配置强制输出模式
void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);

配置CCR寄存器的预装功能,影子寄存器,不会立即生效的功能
void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);

用来配置快速使能的,单脉冲模式内容
void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);

外部事件时清除REF,有介绍
void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);


void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);//用来单独设置比较输出的极性
void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);//高级定时器中互补通道的配置
void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
//在结构体初始化时也可以设置极性

用来单独修改输出使能参数的
void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx);
void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN);

void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode);//选择输出比较模式

用来单独修改CCR寄存器值的函数
void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1);
void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2);
void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3);
void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4);








八、PWMI-TIMER输入捕获模式

使用输入捕获结构体,配置输入捕获单元,单一的配置一个通道
void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
使用输入捕获结构体,配置输入捕获单元,可以快速配置两个交叉通道
void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);

给输入捕获结构体赋初始值
void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct);

选择输入触发源TRGI,选择从模式的触发源选择,可以用来进行触发CNT计数清零
void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);

选择输入触发源TRGO,选择主模式的触发源选择
void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource);

选择从模式,选择被触发源触发的从模式动作
void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);

设置指定TIM的输入捕获通道的分频器
void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);

获取指定TIM的输入捕获通道的CCR,输入捕获模式下,CCR只读
uint16_t TIM_GetCapture1(TIM_TypeDef* TIMx);
uint16_t TIM_GetCapture2(TIM_TypeDef* TIMx);
uint16_t TIM_GetCapture3(TIM_TypeDef* TIMx);
uint16_t TIM_GetCapture4(TIM_TypeDef* TIMx);

八、Encoder-TIMER编码器接口

//定时器编码器接口配置
void TIM_EncoderInterfaceConfig(TIM_TypeDef* TIMx, uint16_t TIM_EncoderMode,
                                uint16_t TIM_IC1Polarity, uint16_t TIM_IC2Polarity);

九、ADC

//用来配置ADCCLK分频器,2468分频,只能使用6、8
void RCC_ADCCLKConfig(uint32_t RCC_PCLK2);

void ADC_DeInit(ADC_TypeDef* ADCx);//恢复缺省配置
void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);//初始化
void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct);//结构体初始化

void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);//给ADC上电

void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState);//开启DMA输出信号的

void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState);//中断输出控制

void ADC_ResetCalibration(ADC_TypeDef* ADCx);//复位校准
FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx);//获取复位校准状态
void ADC_StartCalibration(ADC_TypeDef* ADCx);//开始校准
FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx);//获取开始校准状态


void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);//软件触发ADC转换

FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx);//没啥用,转换标志位每次开始转换会自动清除,所以不能判断
FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);//获取相关标志位状态,可以查看转换是否结束

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规则组通道配置,常用

void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);//ADC外部触发转换控制,就是是否允许外部触发

uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);//获取ADC转换的数据寄存器,获取转换值,读取转换结果
uint32_t ADC_GetDualModeConversionValue(void);//ADC获取双模式转换值,双ADC模式时使用



//STM32注入组配置
void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv);
void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx);
void ADC_InjectedChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);
void ADC_InjectedSequencerLengthConfig(ADC_TypeDef* ADCx, uint8_t Length);
void ADC_SetInjectedOffset(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel, uint16_t Offset);
uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel);

//看门狗配置
void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog);//看门狗开关
void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold, uint16_t LowThreshold);//看门狗配置阈值
void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel);//配置看门狗通道

//温度传感器和内部电压控制
void ADC_TempSensorVrefintCmd(FunctionalState NewState);


FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);//获取标志位状态
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);//清除中断挂起

十、DMA+ADC

//DMA恢复缺省配置
void DMA_DeInit(DMA_Channel_TypeDef* DMAy_Channelx);
//DMA配置初始化函数
void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct);
//DMA结构体初始化
void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct);
//DMA使能
void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState);
//DMA中断输出使能
void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState);
//DMA设置当前传输数据计数器寄存器
void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber); 
//DMA获取当前传输数据计数器寄存器  返回传输计数器的值
uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx);
//DMA标志位获取 用于主函数
FlagStatus DMA_GetFlagStatus(uint32_t DMAy_FLAG);
//DMA标志清空 用于主函数
void DMA_ClearFlag(uint32_t DMAy_FLAG);
//DMA中断标志位获取  用于中断函数内部
ITStatus DMA_GetITStatus(uint32_t DMAy_IT);
//DMA中断标志位清空  用于中断函数内部
void DMA_ClearITPendingBit(uint32_t DMAy_IT);

十一、USART

初始化函数:
void USART_DeInit(USART_TypeDef* USARTx);
void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct);
void USART_StructInit(USART_InitTypeDef* USART_InitStruct);

配置时钟同步输出、极性、相位:
void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct);
void USART_ClockStructInit(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-DMA
void USART_DMACmd(USART_TypeDef* USARTx, uint16_t USART_DMAReq, FunctionalState NewState);

设置地址、唤醒、LAN等:
void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address);
void USART_WakeUpConfig(USART_TypeDef* USARTx, uint16_t USART_WakeUp);
void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, uint16_t USART_LINBreakDetectLength);
void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState NewState);

发送数据接收数据(读写DR寄存器):
void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);
uint16_t USART_ReceiveData(USART_TypeDef* USARTx);


智能卡、Irda:
void USART_SendBreak(USART_TypeDef* USARTx);
void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime);
void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler);
void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState);
void USART_IrDAConfig(USART_TypeDef* USARTx, uint16_t USART_IrDAMode);
void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState);


标志位相关函数:
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
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);

十二、I2C

void I2C_DeInit(I2C_TypeDef* I2Cx);//I2C外设寄存器重置
void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct);//I2C初始化
void I2C_StructInit(I2C_InitTypeDef* I2C_InitStruct);//I2C结构体初始化
void I2C_Cmd(I2C_TypeDef* I2Cx, FunctionalState NewState);//I2C使能开启

void I2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalState NewState);//I2C生成启动信号更改为主机模式
void I2C_GenerateSTOP(I2C_TypeDef* I2Cx, FunctionalState NewState);//I2C请求结束信号

void I2C_AcknowledgeConfig(I2C_TypeDef* I2Cx, FunctionalState NewState);//主机I2C接收到信号后是否应答配置

void I2C_SendData(I2C_TypeDef* I2Cx, uint8_t Data);//发送数据到DR
uint8_t I2C_ReceiveData(I2C_TypeDef* I2Cx);//接收DR数据

void I2C_Send7bitAddress(I2C_TypeDef* I2Cx, uint8_t Address, uint8_t I2C_Direction);//发送7bit地址


ErrorStatus I2C_CheckEvent(I2C_TypeDef* I2Cx, uint32_t I2C_EVENT);//I2C EV事件获取
uint32_t I2C_GetLastEvent(I2C_TypeDef* I2Cx);//I2C获取事件状态
FlagStatus I2C_GetFlagStatus(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG);//I2C获取相关标志位
void I2C_ClearFlag(I2C_TypeDef* I2Cx, uint32_t I2C_FLAG);//I2C清除标志位

ITStatus I2C_GetITStatus(I2C_TypeDef* I2Cx, uint32_t I2C_IT);//获取中断相关标志位
void I2C_ClearITPendingBit(I2C_TypeDef* I2Cx, uint32_t I2C_IT);//清除中断标志位

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值