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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/299019.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT c++和qml交互实例

文章目录 一、demo效果图二、c和qml交互的基本方式1、qml访问C类对象 三、关键代码1、工程结构图2、c代码MainWindow.cppMainQuickView.cppStudentInfoView.cppStudentInfoModel.cpp 3、qml代码main.qmlMainQuickTopRect.qmlMainQuickMiddleRect.qmlMainQuickMiddleTableRect.q…

@Async正确使用姿势

Async注解可以使被修饰的方法成为异步方法&#xff0c;简单且方便&#xff0c;这篇文章将教你如何正确的使用它 先谈谈大多数人对Aysnc的认识&#xff1a; 如果直接使用Async&#xff0c;未指定线程池 并且 容器内也没有beanName为taskExecutor的bean&#xff0c;则会使…

im6ull学习总结(三-3)freetype

1、Freetype简介 FreeType是一个开源的字体渲染引擎&#xff0c;主要用于将字体文件转换为位图或矢量图形&#xff0c;并在屏幕上渲染出高质量的字体。它提供了一组API&#xff0c;使开发者能够在自己的应用程序中使用和呈现字体。 FreeType最初是作为一个独立项目开发的&…

欢乐钓鱼^^

欢迎来到程序小院 欢乐钓鱼 玩法&#xff1a;点击鼠标左键左右晃动的鱼钩&#xff0c;下方左右移动的鱼对准鱼的方向即可进行钓鱼&#xff0c; 不同的鱼不同的分数&#xff0c;快去钓鱼吧^^开始游戏https://www.ormcc.com/play/gameStart/241 html <div id"gamediv&qu…

(leetcode)替换所有的问号 -- 模拟算法

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 本题链接 力扣&#xff08;LeetCode&#xff09; 输入描述 string modifyString(string s) 输入一个字符串&#xff0c;字符串中仅包含小写字母和 ‘?’ 字符。 输出描述 将问号替换为小写字母&#xff0c;且这个替…

数据结构期末复习

章节知识点分析 第一章绪论 基本概念 数据 数据元素&#xff08;记录、表目&#xff0c;是数据集合中一个个体&#xff09; 数据项&#xff1a;一个数据元素可由若干数据项组成 数据对象&#xff1a;性质相同的数据元素的集合&#xff0c;是数据的一个子集 数据结构&…

LLM漫谈(二)| QAnything支持任意格式文件或数据库的本地知识库问答系统

一、QAnything介绍 QAnything (Question and Answer based on Anything) 是致力于支持任意格式文件或数据库的本地知识库问答系统&#xff0c;可断网安装使用。 您的任何格式的本地文件都可以往里扔&#xff0c;即可获得准确、快速、靠谱的问答体验。 目前已支持格式: PDF&…

MiniCom串口调试工具使用

一、程序安装 执行下面代码&#xff0c;安装minicom。 sudo apt-get install minicom 二、查看串口设备名称 先拔掉串口运行下面指令&#xff0c;获得所有设备名称,插上串口再运行一次&#xff0c;新增的就是串口设备名称&#xff0c;记住串口设备名称&#xff0c;以串口设备名…

LeetCode-整数反转(7)

题目描述&#xff1a; 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231&#xff0c;231− 1] &#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff0…

[4K80 AI ISP IPC芯片]

4K80 AI ISP IPC芯片 Hi3403V100是一颗面向监控市场推出的专业 Ultra-HD Smart IP Camera SOC&#xff0c;该芯片最高支持四路sensor输入&#xff0c;支持最高4K60的ISP图像处理能力&#xff0c;支持3F WDR加粗样式、多级降噪、六轴防抖、硬件拼接等多种图像增强和处理算法&am…

C++多态性——(5)运算符重载(第二节)

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 身先才能率人&#xff0c;律己才能服人…

【SpringBoot】公共字段自动填充功能实现(枚举、自定义注解、AOP、反射)

1. 自定义注解 使用interface语法来定义注解&#xff08;Annotation&#xff09;。 注解的参数类似无参数方法&#xff0c;可以用default设定一个默认值&#xff0c;比如String value() default "";。 元注解&#xff1a;有一些注解可以修饰其他注解&#xff0c;这…

基础面试题整理2

1.抽象类与接口区别 语法&#xff1a; 抽象类用abstract定义&#xff1b;接口用interface定义抽象类被子类继承extends&#xff08;不可用final修饰&#xff09;&#xff1b;接口被类实现implements抽象类的属性访问无限制,方法不可用private修饰&#xff1b;接口中的方法只能…

【STM32】STM32学习笔记-DMA数据转运+AD多通道(24)

00. 目录 文章目录 00. 目录01. DMA简介02. DMA相关API2.1 DMA_Init2.2 DMA_InitTypeDef2.3 DMA_Cmd2.4 DMA_SetCurrDataCounter2.5 DMA_GetFlagStatus2.6 DMA_ClearFlag 03. DMA数据单通道接线图04. DMA数据单通道示例05. DMA数据多通道接线图06. DMA数据多通道示例一07. DMA数…

计算机网络(2)

计算机网络&#xff08;2&#xff09; 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 计算机网络和因特网&#xff08;2&#xff09;分组交换网中的时延、丢包和吞吐量时延丢包吞吐量总结 协议层次及其服务模型模型类型OSI模型分析TCP/IP模型分析 追溯历史 小程一言 我…

数据结构——堆排序

什么是堆排序 堆排序就是利用堆&#xff08;假设利用大堆&#xff09;进行排序的算法。他的基本思想是&#xff0c;将待排序的序列构造成一个大顶堆。此时&#xff0c;整个序列的最大值就是堆顶的根节点。将他移走&#xff08;其实就是将其与堆数组的末尾元素交换&#xff0c;…

简单 Web Server 程序的设计与实现 (2024)

1.题目描述 Web 服务是 Internet 最方便与受用户欢迎的服务类型&#xff0c;它的影响力也远远超出了专业技术范畴&#xff0c; 已广泛应用于电子商务、远程教育、远程医疗与信息服务等领域&#xff0c;并且有继续扩大的趋势。目前很多 的 Internet 应用都是基于 Web 技术的&…

Java快速排序希尔排序归并排序

快速排序算法 快速排序的原理&#xff1a;选择一个关键值作为基准值。比基准值小的都在左边序列&#xff08;一般是无序的&#xff09;&#xff0c;比基准值大的都在右边&#xff08;一般是无序的&#xff09;。一般选择序列的第一个元素。 一次循环&#xff1a;从后往前比较&…

VMware中删除虚拟机

虚拟机使用完成后&#xff0c;需要删除虚拟机如何操作呢&#xff1f; 1.首先进入VMware 2.选择需要删除的虚拟机&#xff0c;点击右键 3.直接选择“移除”&#xff1f; 当然不是&#xff0c;这只是从这么目录显示中去掉了&#xff0c;并非 “真正” 删除该虚拟机 注意&#x…

使用sentinel作为熔断器

什么是sentinel Sentinel&#xff0c;中文翻译为哨兵&#xff0c;是为微服务提供流量控制、熔断降级的功能&#xff0c;它和Hystrix提供的功能一样&#xff0c;可以有效的解决微服务调用产生的“雪崩”效应&#xff0c;为微服务系统提供了稳定性的解决方案。随着Hytrxi进入了维…
最新文章