STM32F4xx之库函数

发布时间:2024年01月07日

一、库函数介绍

库函数与寄存器的区别
库函数:不需要自己写很多代码,可以利用软件生成代码。使用的时候必须添加库文件。库文件是芯片厂商写好了。占用空间大。
寄存器:自己写的代码量大,没有软件生成代码。使用的时候不需要库文件。占用空间小。
当一款芯片在库函数开发的情况下由于内存不够,可以使用寄存器开发。

库文件介绍

1、如何找到各个模块的库函数

二、新建库函数工程

1. 先保证寄存器版本的工程能用
2. 添加一个全局宏定义

3.先建立包含对应的库函数的文件夹

4.把库函数的文件夹从官方的库函数文件夹里整个复制下来

5.包含库函数相应的头文件路径

初始化外设的小技巧:

一般都可以看到两种函数:

Init:初始化

Cmd:使能定时器

三、库函数的使用

1、RCC函数

使能/除能AHB1外设时钟
原形:void RCC_AHB1PeriphClockCmd ?( uint32_t ?RCC_AHB1Periph, ?FunctionalState ?NewState )
作用:使能/除能AHB1外设时钟
参数:
RCC_AHB1Periph :要对AHB1那边外设进行时钟使能/除能操作(可以多个外设一起时钟使能、除能)
可取的值:
RCC_AHB1Periph_GPIOA: GPIOA clock?
RCC_AHB1Periph_GPIOB: GPIOB clock?
RCC_AHB1Periph_GPIOC: GPIOC clock?
RCC_AHB1Periph_GPIOD: GPIOD clock?
RCC_AHB1Periph_GPIOE: GPIOE clock?
RCC_AHB1Periph_GPIOF: GPIOF clock?
RCC_AHB1Periph_GPIOG: GPIOG clock?
RCC_AHB1Periph_GPIOH: GPIOH clock?
RCC_AHB1Periph_GPIOI: GPIOI clock?
RCC_AHB1Periph_GPIOJ: GPIOJ clock (STM32F42xxx/43xxx devices)?
RCC_AHB1Periph_GPIOK: GPIOK clock (STM32F42xxx/43xxx devices)?
RCC_AHB1Periph_CRC: CRC clock?
RCC_AHB1Periph_BKPSRAM: BKPSRAM interface clock?
RCC_AHB1Periph_CCMDATARAMEN CCM data RAM interface clock?
RCC_AHB1Periph_DMA1: DMA1 clock?
RCC_AHB1Periph_DMA2: DMA2 clock?
RCC_AHB1Periph_DMA2D: DMA2D clock (STM32F429xx/439xx devices)?
RCC_AHB1Periph_ETH_MAC: Ethernet MAC clock?
RCC_AHB1Periph_ETH_MAC_Tx: Ethernet Transmission clock?
RCC_AHB1Periph_ETH_MAC_Rx: Ethernet Reception clock?
RCC_AHB1Periph_ETH_MAC_PTP: Ethernet PTP clock?
RCC_AHB1Periph_OTG_HS: USB OTG HS clock?
RCC_AHB1Periph_OTG_HS_ULPI: USB OTG HS ULPI clock


NewState:可取值:ENABLE 或 DISABLE

2、低功耗模式(睡眠模式)时AHB1外设时钟使能/除能

原形:void RCC_AHB1PeriphClockLPModeCmd ?( uint32_t ?RCC_AHB1Periph, FunctionalState ?NewState );


3、AHB1外设模块进行复位----相关模块的寄存器值变成默认值

原形:void RCC_AHB1PeriphResetCmd ?( uint32_t ?RCC_AHB1Periph, ?FunctionalState ?NewState );
允许多个AHB外设同时进行复位操作
使用示例:(往往类型以下示例同时使用)
RCC_AHB1PeriphResetCmd ?(RCC_AHB1Periph_GPIOA, ?ENABLE ); ? //对端口A进行复位
RCC_AHB1PeriphResetCmd ?(RCC_AHB1Periph_GPIOA, ?DISABLE); ? //停止对端口A的复位

4、APB1外设时钟使能

原形:void RCC_APB1PeriphClockCmd ?( uint32_t ?RCC_APB1Periph, ?FunctionalState ?NewState ) ?;
作用:对APB1总线外设时钟使能/除能 (可以多个外设同时操作)
参数:
?APB1Periph:
RCC_APB1Periph_TIM2: TIM2 clock?
RCC_APB1Periph_TIM3: TIM3 clock?
RCC_APB1Periph_TIM4: TIM4 clock?
RCC_APB1Periph_TIM5: TIM5 clock?
RCC_APB1Periph_TIM6: TIM6 clock?
RCC_APB1Periph_TIM7: TIM7 clock?
RCC_APB1Periph_TIM12: TIM12 clock?
RCC_APB1Periph_TIM13: TIM13 clock?
RCC_APB1Periph_TIM14: TIM14 clock?
RCC_APB1Periph_LPTIM1: LPTIM1 clock (STM32F410xx devices)?
RCC_APB1Periph_WWDG: WWDG clock?
RCC_APB1Periph_SPI2: SPI2 clock?
RCC_APB1Periph_SPI3: SPI3 clock?
RCC_APB1Periph_SPDIF: SPDIF RX clock (STM32F446xx devices)?
RCC_APB1Periph_USART2: USART2 clock?
RCC_APB1Periph_USART3: USART3 clock?
RCC_APB1Periph_UART4: UART4 clock?
RCC_APB1Periph_UART5: UART5 clock?
RCC_APB1Periph_I2C1: I2C1 clock?
RCC_APB1Periph_I2C2: I2C2 clock?
RCC_APB1Periph_I2C3: I2C3 clock?
RCC_APB1Periph_FMPI2C1: FMPI2C1 clock?
RCC_APB1Periph_CAN1: CAN1 clock?
RCC_APB1Periph_CAN2: CAN2 clock?
RCC_APB1Periph_CEC: CEC clock (STM32F446xx devices)?
RCC_APB1Periph_PWR: PWR clock?
RCC_APB1Periph_DAC: DAC clock?
RCC_APB1Periph_UART7: UART7 clock?
RCC_APB1Periph_UART8: UART8 clock
NewState:ENABLE或 DISABLE

5、APB2外设时钟使能

原形:void RCC_APB2PeriphClockCmd? ( uint32_t? RCC_APB2Periph,?? FunctionalState? NewState);

作用:对APB2总线外设时钟使能/除能 (可以多个外设同时操作)

参数:

RCC_APB2Periph

RCC_APB2Periph_TIM1: TIM1 clock

RCC_APB2Periph_TIM8: TIM8 clock

RCC_APB2Periph_USART1: USART1 clock

RCC_APB2Periph_USART6: USART6 clock

RCC_APB2Periph_ADC1: ADC1 clock

RCC_APB2Periph_ADC2: ADC2 clock

RCC_APB2Periph_ADC3: ADC3 clock

RCC_APB2Periph_SDIO: SDIO clock

RCC_APB2Periph_SPI1: SPI1 clock

RCC_APB2Periph_SPI4: SPI4 clock

RCC_APB2Periph_SYSCFG: SYSCFG clock

RCC_APB2Periph_TIM9: TIM9 clock

RCC_APB2Periph_TIM10: TIM10 clock

RCC_APB2Periph_TIM11: TIM11 clock

RCC_APB2Periph_SPI5: SPI5 clock

RCC_APB2Periph_SPI6: SPI6 clock

RCC_APB2Periph_SAI1: SAI1 clock (STM32F42xxx/43xxx/446xx/469xx/479xx devices)

RCC_APB2Periph_SAI2: SAI2 clock (STM32F446xx devices)

RCC_APB2Periph_LTDC: LTDC clock (STM32F429xx/439xx devices)

RCC_APB2Periph_DSI: DSI clock (STM32F469_479xx devices)

RCC_APB2Periph_DFSDM: DFSDM Clock (STM32F412xG Devices)

NewState:ENABLE或 DISABLE

6、备份区域复位

原形:void RCC_BackupResetCmd? ( FunctionalState? NewState )?

作用:对备份区域复位/停止复位操作------RCC_BDCR的16位

参数:NewState:ENABLE或 DISABLE

7、清除复位标志

原形:void RCC_ClearFlag? ( void ) ;

8、获取相关时钟的频率

原理:void RCC_GetClocksFreq? ( RCC_ClocksTypeDef *? RCC_Clocks )?

作用:获取系统时钟、AHB APB1 APB2时钟频率

参数:

typedef struct

{

? uint32_t SYSCLK_Frequency; /*!<? SYSCLK clock frequency expressed in Hz */

? uint32_t HCLK_Frequency;?? /*!<? HCLK clock frequency expressed in Hz?? */

? uint32_t PCLK1_Frequency;? /*!<? PCLK1 clock frequency expressed in Hz? */

? uint32_t PCLK2_Frequency;? /*!<? PCLK2 clock frequency expressed in Hz? */

}RCC_ClocksTypeDef;

四、GPIO相关库函数

1、GPIO_DeInit
函数原型:
void GPIO_DeInit ?( GPIO_TypeDef * ?GPIOx )
函数功能:复位GPIOx.让GPIOx所有寄存器变成默认值
参数:
GPIOx,:如果使用的芯片是STM32F405xx/407xx and STM32F415xx/417xx,x的值可以为(A到K);如果使用的芯片是STM32F42xxx/43xxx,x的值可以为(A到I);如果使用的芯片是STM32F401xx,x的值可以为(A, B, C, D 和 H);
返回值: 无
注意事项:
默认状态下,所有GPIO口都是浮空输入(除了JTAG)
例子:

GPIO_DeInit (GPIOA );??? //复位端口A

2、GPIO_Init

函数原型:
void GPIO_Init ?( GPIO_TypeDef * ?GPIOx, ? GPIO_InitTypeDef * ?GPIO_InitStruct ?);
功能:根据GPIO_InitStruct结构变量的值,来初始化GPIOx
参数:GPIOx:
GPIO_InitStruct:为GPIO_InitTypeDef的一个结构体变量

结构体变量原型:

typedef struct
{
? uint32_t ?GPIO_Pin; ? ? ? ? ? ? ? //哪个管脚
? GPIOMode_TypeDef ?GPIO_Mode; ? ?//模式
? GPIOSpeed_TypeDef ?GPIO_Speed; ? ?//输出速度
?GPIOOType_TypeDef ?GPIO_OType; ? ? ?//输出类型
?GPIOPuPd_TypeDef ? GPIO_PuPd; ? ? ? //上下拉
}GPIO_InitTypeDef;

成员取值:

GPIO_Pin:

#define? GPIO_Pin_0?? ((uint16_t)0x0001)

#define? GPIO_Pin_1?? ((uint16_t)0x0002)

#define? GPIO_Pin_2?? ((uint16_t)0x0004)

#define? GPIO_Pin_3?? ((uint16_t)0x0008)

#define? GPIO_Pin_4?? ((uint16_t)0x0010)

#define? GPIO_Pin_5?? ((uint16_t)0x0020)

#define? GPIO_Pin_6?? ((uint16_t)0x0040)

#define? GPIO_Pin_7?? ((uint16_t)0x0080)

#define? GPIO_Pin_8?? ((uint16_t)0x0100)

#define? GPIO_Pin_9?? ((uint16_t)0x0200)

#define? GPIO_Pin_10?? ((uint16_t)0x0400)

#define? GPIO_Pin_11?? ((uint16_t)0x0800)

#define? GPIO_Pin_12?? ((uint16_t)0x1000)

#define? GPIO_Pin_13?? ((uint16_t)0x2000)

#define? GPIO_Pin_14?? ((uint16_t)0x4000)

#define? GPIO_Pin_15?? ((uint16_t)0x8000)

#define? GPIO_Pin_All?? ((uint16_t)0xFFFF)

GPIO_Mode:

typedef enum

{

? GPIO_Mode_IN?? = 0x00,??? ?/*!< GPIO Input Mode 普通功能输入*/

? GPIO_Mode_OUT? = 0x01,?? ?/*!< GPIO Output Mode普通功能输出 */

? GPIO_Mode_AF?? = 0x02, ??/*!< GPIO Alternate function Mode复用功能 */

? GPIO_Mode_AN?? = 0x03? ??/*!< GPIO Analog Mode模拟功能模式 */

}GPIOMode_TypeDef;

GPIO_Speed:

typedef enum

{

? GPIO_Low_Speed???? = 0x00, /*!< Low speed?? 2MHZ */

? GPIO_Medium_Speed? = 0x01, /*!< Medium speed 25MHZ */

? GPIO_Fast_Speed??? = 0x02, /*!< Fast speed?? 50MHZ */

? GPIO_High_Speed??? = 0x03? /*!< High speed? 100MHZ */

}GPIOSpeed_TypeDef;

GPIO_OType:

typedef enum

{

? GPIO_OType_PP = 0x00,????? //推挽

? GPIO_OType_OD = 0x01????? //开漏

}GPIOOType_TypeDef;

GPIO_PuPd:

typedef enum

{

? GPIO_PuPd_NOPULL = 0x00,???? //不上拉也不下拉

? GPIO_PuPd_UP???? = 0x01,???? //上拉

? GPIO_PuPd_DOWN?? = 0x02??? //下拉

}GPIOPuPd_TypeDef;

例子:

GPIO_InitTypeDef ? GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType=GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz;
GPIO_Init ?( GPIOA, ?&GPIO_InitStruct );

3、GPIO_PinAFConfig

函数原型:
void GPIO_PinAFConfig ( GPIO_TypeDef * ?GPIOx, ?uint16_t ?GPIO_PinSource, ?uint8_t ?GPIO_AF )
功能:设置管脚的复用功能,一次只能设置一个管脚的复用功能
参数:GPIOx
GPIO_PinSource
GPIO_AF
返回值: 无
参数:
GPIO_PinSource:可以取得值:GPIO_PinSourcex ----x可以为(0..15)//?


GPIO_AF:

GPIO_AF_RTC_50Hz? : Connect RTC_50Hz pin to AF0 (default after reset)

GPIO_AF_MCO? : Connect MCO pin (MCO1 and MCO2) to AF0 (default after reset)

GPIO_AF_TAMPER? : Connect TAMPER pins (TAMPER_1 and TAMPER_2) to AF0 (default after reset)

GPIO_AF_SWJ? : Connect SWJ pins (SWD and JTAG)to AF0 (default after reset)

GPIO_AF_TRACE? : Connect TRACE pins to AF0 (default after reset)

GPIO_AF_TIM1? : Connect TIM1 pins to AF1

GPIO_AF_TIM2? : Connect TIM2 pins to AF1

GPIO_AF_TIM3? : Connect TIM3 pins to AF2

GPIO_AF_TIM4? : Connect TIM4 pins to AF2

GPIO_AF_TIM5? : Connect TIM5 pins to AF2

GPIO_AF_TIM8? : Connect TIM8 pins to AF3

GPIO_AF_TIM9? : Connect TIM9 pins to AF3

GPIO_AF_TIM10? : Connect TIM10 pins to AF3

GPIO_AF_TIM11? : Connect TIM11 pins to AF3

GPIO_AF_I2C1? : Connect I2C1 pins to AF4

GPIO_AF_I2C2? : Connect I2C2 pins to AF4

GPIO_AF_I2C3? : Connect I2C3 pins to AF4

GPIO_AF_SPI1? : Connect SPI1 pins to AF5

GPIO_AF_SPI2? : Connect SPI2/I2S2 pins to AF5

GPIO_AF_SPI4? : Connect SPI4 pins to AF5

GPIO_AF_SPI5? : Connect SPI5 pins to AF5

GPIO_AF_SPI6? : Connect SPI6 pins to AF5

GPIO_AF_SAI1? : Connect SAI1 pins to AF6 for STM32F42xxx/43xxx devices.

GPIO_AF_SPI3? : Connect SPI3/I2S3 pins to AF6

GPIO_AF_I2S3ext? : Connect I2S3ext pins to AF7

GPIO_AF_USART1? : Connect USART1 pins to AF7

GPIO_AF_USART2? : Connect USART2 pins to AF7

GPIO_AF_USART3? : Connect USART3 pins to AF7

GPIO_AF_UART4? : Connect UART4 pins to AF8

GPIO_AF_UART5? : Connect UART5 pins to AF8

GPIO_AF_USART6? : Connect USART6 pins to AF8

GPIO_AF_UART7? : Connect UART7 pins to AF8

GPIO_AF_UART8? : Connect UART8 pins to AF8

GPIO_AF_CAN1? : Connect CAN1 pins to AF9

GPIO_AF_CAN2? : Connect CAN2 pins to AF9

GPIO_AF_TIM12? : Connect TIM12 pins to AF9

GPIO_AF_TIM13? : Connect TIM13 pins to AF9

GPIO_AF_TIM14? : Connect TIM14 pins to AF9

GPIO_AF_OTG_FS? : Connect OTG_FS pins to AF10

GPIO_AF_OTG_HS? : Connect OTG_HS pins to AF10

GPIO_AF_ETH? : Connect ETHERNET pins to AF11

GPIO_AF_FSMC? : Connect FSMC pins to AF12

GPIO_AF_FMC? : Connect FMC pins to AF12 for STM32F42xxx/43xxx devices.

GPIO_AF_OTG_HS_FS? : Connect OTG HS (configured in FS) pins to AF12

GPIO_AF_SDIO? : Connect SDIO pins to AF12

GPIO_AF_DCMI? : Connect DCMI pins to AF13

GPIO_AF_LTDC? : Connect LTDC pins to AF14 for STM32F429xx/439xx devices.

GPIO_AF_EVENTOUT? : Connect EVENTOUT pins to AF15

例子:

GPIO_PinAFConfig? (GPIOA,? GPIO_PinSource9,? GPIO_AF_USART1 );

4、GPIO_PinLockConfig

原型:
void GPIO_PinLockConfig ?( GPIO_TypeDef * ?GPIOx, ?uint16_t ?GPIO_Pin ?)
功能:锁定端口设置
例:
GPIO_PinLockConfig( GPIOA, GPIO_Pin_9);

5、GPIO_ReadInputData
原型:
uint16_t ?GPIO_ReadInputData ?( GPIO_TypeDef * ?GPIOx ) ?
功能:读取某个端口的(IDR)值
例:
u16 ?a;
a=GPIO_ReadInputData ?(GPIOA );

6、GPIO_ReadInputDataBit
原型:
uint8_t GPIO_ReadInputDataBit ?( GPIO_TypeDef * ?GPIOx, uint16_t ?GPIO_Pin )
功能:读取某个端口的(IDR)某一位的值
例:
if(GPIO_ReadInputDataBit ?(GPIOA, GPIO_Pin_0 )== Bit_SET)
{
;
}

7、GPIO_ReadOutputData
原型:
uint16_t GPIO_ReadOutputData ?( GPIO_TypeDef * ?GPIOx ) ?
功能:读取某个端口的(ODR)值
例:
u16 ?data;
data=GPIO_ReadOutputData ?(GPIOA);

8、GPIO_ReadOutputDataBit
原型:
uint8_t GPIO_ReadOutputDataBit ?( GPIO_TypeDef * ?GPIOx, ?uint16_t ?GPIO_Pin )?
功能:读取某个端口的(ODR某一位的值
例:
u8 sta;
sta=GPIO_ReadOutputDataBit ?( GPIOA,GPIO_Pin_2 );

9、GPIO_ResetBits
原型:
void GPIO_ResetBits ?( GPIO_TypeDef * ?GPIOx, ?uint16_t ?GPIO_Pin )
功能:对某个管脚清0操作
例:
GPIO_ResetBits ?( GPIOA, GPIO_Pin_1 );

10、GPIO_SetBits
原型:
void ?GPIO_SetBits ?( GPIO_TypeDef * ?GPIOx, ?uint16_t ?GPIO_Pin )
功能:对某个管脚置1操作
例:
GPIO_SetBits ?( GPIOA, GPIO_Pin_1 );

11、GPIO_StructInit
原型:
void GPIO_StructInit ( GPIO_InitTypeDef * ?GPIO_InitStruct ) ?
功能:对GPIO_InitStruct结构体变量按缺省值写入,缺省值如下
GPIO_InitStruct.GPIO_Pin ?= GPIO_Pin_All;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;

例:
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_StructInit ( &GPIO_InitStruct);
GPIO_Init ?( GPIOF, ?&GPIO_InitStruct );

12、GPIO_ToggleBits
原型:
void GPIO_ToggleBits ?( GPIO_TypeDef * ?GPIOx, ?uint16_t ?GPIO_Pin )
功能:对某个管脚座翻转输出操作
例:
GPIO_ToggleBits ?( GPIOA, GPIO_Pin_9 ) ;

13、GPIO_Write
原型:
void GPIO_Write ?( GPIO_TypeDef * ?GPIOx, uint16_t ?PortVal )
功能:对某个端口做输出操作
例:
GPIO_Write ?( GPIOA, 0X1234 );


14、GPIO_WriteBit
原型:
void GPIO_WriteBit ?( GPIO_TypeDef * ?GPIOx,uint16_t ?GPIO_Pin, ?BitAction ?BitVal)
功能:对某个端口某一位做置1或清0操作
例:
GPIO_WriteBit( ?GPIOA , GPIO_Pin_9, ?Bit_RESET );

五、USART相关库函数

1、USART_ClearFlag
原型:void USART_ClearFlag ?( USART_TypeDef * ?USARTx, ?uint16_t ?USART_FLAG ?)
功能:清串口相关标志(一次可以清除多个标志)
参数:USARTx: ? 串口的首地址
USART_FLAG:待清除标志

参数USARTx可取值:
USART1 ~ USART8
参数USART_FLAG可取的值:
USART_FLAG_CTS: CTS 标志
USART_FLAG_LBD: 清除lin 断路检测标志?
USART_FLAG_TC: 清发送完成标志
USART_FLAG_RXNE: 清接收缓存器非空标志

2、USART_ClearITPendingBit
原型:USART_ClearITPendingBit ?( USART_TypeDef * ?USARTx, ?uint16_t ?USART_IT )
功能:清串口中断相关标志(一次只能清除一个标志)
参数:USARTx: ? 串口的首地址
USART_FLAG:待清除标志
参数USARTx可取值:
USART1 ~ USART8
参数USART_IT可取的值:
USART_FLAG_CTS: CTS 标志
USART_FLAG_LBD: 清除lin 断路检测标志?
USART_FLAG_TC: 清发送完成标志
USART_FLAG_RXNE: 清接收缓存器非空标志

3、USART_Cmd
原型:
void USART_Cmd ?( USART_TypeDef * ?USARTx, ?FunctionalState ?NewState )
功能:开启/关闭串口
参数:USARTx: ? 串口的首地址
NewState: 使能/除能操作
参数SARTx:USART1 ~ USART8
参数NewState:ENABLE or DISABLE

4、USART_DeInit
原型:void USART_DeInit ?( USART_TypeDef * ?USARTx ) ?
功能:复位串口-----使其相关寄存器值变成默认值

5、USART_DMACmd
原型:void USART_DMACmd ?( USART_TypeDef * ?USARTx, ? ?uint16_t ?USART_DMAReq, ? ?FunctionalState ?NewState ?);
功能:使能/除能串口DMA功能
参数:
USARTx:USART1 ~ USART8
USART_DMAReq: USART_DMAReq_Tx(发送DMA) ? USART_DMAReq_Rx(接收DMA)
NewState: ENABLE / DISABLE

6、USART_GetFlagStatus
原型:FlagStatus USART_GetFlagStatus ?( USART_TypeDef * ?USARTx, ?uint16_t ?USART_FLAG ?)
功能:获取相关标志,查询相关标志是否被置位
参数:
USARTx------- USART1 ~ USART8
USART_FLAG:
USART_FLAG_CTS: CTS 标志?
USART_FLAG_LBD: LIN 断路检测标志?
USART_FLAG_TXE: 发送缓存器空标志?
USART_FLAG_TC: 发送完成标志?
USART_FLAG_RXNE: 接收缓存器非空标志
USART_FLAG_IDLE: 空闲标志?
USART_FLAG_ORE: 上溢错误标志
USART_FLAG_NE: 噪声标志
USART_FLAG_FE: 帧错误标志
USART_FLAG_PE: 奇偶校验错误标志
返回值:SET (相关标志被置1)RESET(相关标志位0

7、USART_GetITStatus
原型:ITStatus USART_GetITStatus ?( USART_TypeDef * ?USARTx, ?uint16_t ?USART_IT ?)
功能:查询相关中断产生与否,参数同上

8、USART_Init
原型:void USART_Init ?( USART_TypeDef * ?USARTx, ?USART_InitTypeDef * ?USART_InitStruct ?)
功能:串口初始化
参数:USARTx-------- USART1 ~ USART8
USART_InitStruct------初始化串口参数
结构体原型:
typedef struct
{
? uint32_t ?USART_BaudRate; ? ?//波特率
? uint16_t ?USART_WordLength; ? //字长
? uint16_t ?USART_StopBits; ? ? ? //停止位
? uint16_t ?USART_Parity; ? ? ? //校验
? uint16_t ?USART_Mode; ? ? ? ? ? //模式
? uint16_t ?USART_HardwareFlowControl;//流控
} USART_InitTypeDef;
结构体成员值:
USART_WordLength : ?USART_WordLength_8b ? USART_WordLength_9b ?
USART_StopBits :USART_StopBits_1 ?USART_StopBits0 _5 ?USART_StopBits1 _5 ?USART_StopBits2
USART_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_CTS

9、USART_ITConfig
原型:void USART_ITConfig ?( USART_TypeDef * ?USARTx, ?uint16_t ?USART_IT, ?FunctionalState ?NewState )
功能:使能/除能相关中断(一次只能开启或者关闭一个中断)

10、USART_ReceiveData
原型:uint16_t USART_ReceiveData ?( USART_TypeDef * ?USARTx ) ?
功能:读取DR寄存器

11、USART_SendData
原型:void USART_SendData ?( USART_TypeDef * ?USARTx, ?uint16_t ?Data ?)
功能:发送数据

使用uart库函数的时候要注意一下stm32f4xx.h中123行的设置:

文章来源:https://blog.csdn.net/weixin_52483742/article/details/135431092
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。