STM32F4xx之库函数

一、库函数介绍

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

库文件介绍

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行的设置:

STM32F4xx HAL库函数API是ST公司为STM32F4系列微控制器提供的一套软件开发工具,用于简化硬件的配置和驱动编程。该库函数API包含了各种功能函数,方便开发者进行快速开发和调试。 STM32F4xx HAL库函数API的详细资料说明包括以下几个方面: 1. 函数命名规范:每个函数的命名规范通常包括前缀“HAL_”和功能描述的后缀,例如HAL_GPIO_Init函数用于初始化GPIO端口。这种命名规范使得开发者可以快速理解函数的功能。 2. 函数参数说明:每个函数的参数都有详细的说明,包括参数的数据类型、参数的含义以及使用方法。这些说明有助于开发者正确地使用函数,并减少错误。 3. 返回值说明:每个函数的返回值都有详细的说明,包括返回值的数据类型、返回值的含义以及可能的错误代码。这些说明有助于开发者判断函数是否执行成功,并根据返回值进行相应的处理。 4. 使用示例:每个函数都有使用示例,用于演示函数的调用方法和函数的功能。这些示例可以帮助开发者更好地理解函数的使用方法,并快速上手。 5. 库函数索引:提供了一个库函数索引,方便开发者快速查找需要的函数。索引按照功能分类,并提供了函数的名称、功能描述和函数原型等信息。 总之,STM32F4xx HAL库函数API的详细资料说明提供了对每个函数的全面描述和使用指南,帮助开发者快速掌握和使用STM32F4系列微控制器的功能和驱动编程。开发者可以根据自己的需求查找相应的函数,并根据函数的参数和返回值进行正确的调用和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值