当前位置: 首页 > news >正文

扬州网站建设哪家好国内做医疗耗材的网站

扬州网站建设哪家好,国内做医疗耗材的网站,精品网文,酒店网站建设方案ppt2 STM32库函数 之 通用同步异步收发器#xff08;USART、串口#xff09;所有函数的介绍及使用 前言一、USART固件库函数预览二、USART固件库函数具体介绍2.1 库函数 USART_DeInit2.2 库函数 USART_Init2.2.1 USART_InitTypeDef structure2.2.2 USART_InitTypeDef 成员 USART… 2 STM32库函数 之 通用同步异步收发器USART、串口所有函数的介绍及使用 前言一、USART固件库函数预览二、USART固件库函数具体介绍2.1 库函数 USART_DeInit2.2 库函数 USART_Init2.2.1 USART_InitTypeDef structure2.2.2 USART_InitTypeDef 成员 USART 模式对比2.2.3 USART_BaudRate2.2.4 USART_WordLength2.2.5 USART_StopBits2.2.6 USART_Parity2.2.7 USART_HardwareFlowControl2.2.8 USART_Mode2.2.9 USART_CLOCK2.2.10 USART_CPOL2.2.11 USART_CPHA2.2.12 USART_LastBit 2.3 库函数 USART_StructInit2.3.1 USART_InitStruct 默认值 2.4 库USART_ClockInit2.4.1 USART_ClockInitTypeDef2.4.2 USART_Clock 时钟使能控制2.4.3 USART_CPOL 时钟极性2.4.4 USART_CPHA 时钟相位2.4.5 USART_LastBit 最尾位时钟脉冲 2.5 库函数 USART_ClockStructInit2.5.1 USART_ClockInitTypeDef 默认值 2.6 库函数 USART_ Cmd2.7 库函数 USART_SetPrescaler2.8 库函数 USART_OverSampling8Cmd2.9 库函数 USART_OneBitMethodCmd2.10 库函数 USART_SendData2.11 函数USART_ReceiveData2.12 函数 USART_SetAddress2.13 库函数 USART_WakeUpConfig2.13.1 USART_WakeUp 2.14 库函数 USART_ReceiverWakeUpCmd2.15 库函数 USART_LINBreakDetectiLengthConfig2.15.1 USART_LINBreakDetectLength 2.16 库函数 USART_LINCmd2.17 库函数 USART_SendBreak2.18 库函数 USART_HalfDuplexCmd2.19 库函数 USART_SmartCardCmd2.20 库函数 USART_SmartCardNackCmd2.21 库函数 USART_SetGuardTime2.22 库函数 USART_IrDAConfig2.22.1 USART_IrDAMode 2.23 库函数 USART_IrDACmd2.24 库函数 USART_ DMACmd2.24.1 USART_DMAreq 2.25 库函数 USART_ITConfig2.25.1 USART_IT 2.26 库函数 USART_ GetFlagStatus2.26.1 USART_FLAG 2.27 库函数 USART_ ClearFlag2.28 库函数 USART_ GetITStatus2.28.1 SART_IT 2.29 函数 USART_ ClearITPendingBit 三 项目中部分函数的使用3.1 串口1的初始化3.2 串口2-RS232初始化3.2 串口2-RS485初始化 该文档修改记录总结 前言 通用同步异步收发器USART提供了一种灵活的方法来与使用工业标准 NRZ 异步串行数据格式的外部 设备之间进行全双工数据交换。USART 利用分数波特率发生器提供宽范围的波特率选择。它支持同步单 向通信和半双工单线通信。它也支持 LIN(局部互连网)智能卡协议和 IrDA(红外数据组织)SIR ENDEC 规 范以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的 DMA 方式可以实 现高速数据通信。 函数描述格式 函数名外设函数的名称函数原形原形声明功能描述简要解释函数是如何执行的输入参数{x}输入参数描述输出参数{x}输出参数描述返回值函数的返回值先决条件调用函数前应满足的要求被调用函数其他被该函数调用的库函数 缩写定义 缩写外设/单元ADC模数转换器BKP备份寄存器CAN控制器局域网模块DMA直接内存存取控制器EXTI外部中断事件控制器FLASH闪存存储器GPIO通用输入输出I2C内部集成电路IWDG独立看门狗NVIC嵌套中断向量列表控制器PWR电源/功耗控制RCC复位与时钟控制器RTC实时时钟SPI串行外设接口SysTick系统嘀嗒定时器TIM通用定时器TIM1高级控制定时器USART通用同步异步接收发射端WWDG窗口看门狗 一、USART固件库函数预览 序号函数名描述1USART_DeInit将外设 USARTx 寄存器重设为默认值2USART_Init根据USART_InitStruct 中指定的参数初始化外设 USARTx 寄存器3USART_StructInit把 USART_InitStruct 中的每一个参数按默认值填入4USART_ClockInit初始化USARTx外围时钟5USART_ClockStructInit将每个usart_clockkinitstruct成员填充为默认值6USART_Cmd使能或者失能 USART 外设7USART_SetPrescaler设置 USART 时钟预分频8USART_OverSampling8Cmd启用或禁用USART的8倍过采样模式9USART_OneBitMethodCmd启用或禁用USART的一位采样方法10USART_SendData通过外设 USARTx 发送单个数据11USART_ReceiveData返回 USARTx 最近接收到的数据12USART_SetAddress设置 USART 节点的地址13USART_WakeUpConfig选择USART 的唤醒方式14USART_ReceiverWakeUpCmd检查 USART 是否处于静默模式15USART_LINBreakDetectLengthConfig设置 USART LIN 中断检测长度16USART_LINCmd使能或者失能 USARTx 的 LIN 模式17USART_SendBreak发送中断字18USART_HalfDuplexCmd使能或者失能 USART 半双工模式19USART_SmartCardCmd使能或者失能指定 USART 的智能卡模式20USART_SmartCardNackCmd使能或者失能 NACK 传输21USART_SetGuardTime设置指定的 USART 保护时间22USART_IrDAConfig设置 USART IrDA 模式23USART_IrDACmd使能或者失能 USART IrDA 模式24USART_DMACmd使能或者失能指定 USART 的 DMA 请求25USART_ITConfig使能或者失能指定的 USART 中断26USART_GetFlagStatus检查指定的 USART 标志位设置与否27USART_ClearFlag清除 USARTx 的待处理标志位28USART_GetITStatus检查指定的 USART 中断发生与否29USART_ClearITPendingBit清除 USARTx 的中断待处理位 函数功能分类 序号数量函数功能分类说明序号1 函数是将USART配置设置为默认重置状态的函数序号2~9函数是USART初始化和配置函数序号10~11函数是USART数据传输函数功能序号12~14函数是USART多处理器通信功能序号12~14函数是USART多处理器通信功能序号15~17函数是USART LIN模式函数功能序号18函数是USART 半双工模式函数功能序号19~21函数是USART 智能卡模式功能功能序号22~23函数是USART IrDA模式函数功能序号24~29函数是USART 中断和标记管理功能 二、USART固件库函数具体介绍 2.1 库函数 USART_DeInit 函数名USART_DeInit函数原形void USART_DeInit(USART_TypeDef* USARTx)功能描述将外设 USARTx 寄存器重设为默认值输入参数USARTxx 可以是 12 或者 3来选择 USART 外设输出参数无返回值无先决条件无被调用函数RCC_APB2PeriphResetCmd() RCC_APB1PeriphResetCmd() 代码如下示例 /* 将 USART1 寄存器重置为默认重置值 */ USART_DeInit(USART1);2.2 库函数 USART_Init 注该函数是以F1系列单片机的函数来进行解释的F4系列单片机的USART_InitTypeDef 结构体把时钟初始化单独拿出来了下面有介绍。 函数名USART_Init函数原形void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct)功能描述根据 USART_InitStruct 中指定的参数初始化外设 USARTx 寄存器输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2USART_InitStruct指向结构 USART_InitTypeDef 的指针包含了外设 USART 的配置信息。输出参数无返回值无先决条件无被调用函数无 2.2.1 USART_InitTypeDef structure USART_InitTypeDef structure USART_InitTypeDef 定义于文件“stm32fxxx_usart.h” typedef struct { u32 USART_BaudRate; u16 USART_WordLength; u16 USART_StopBits; u16 USART_Parity; u16 USART_HardwareFlowControl; u16 USART_Mode; u16 USART_Clock; u16 USART_CPOL; u16 USART_CPHA; u16 USART_LastBit; } USART_InitTypeDef; .下面 描述了结构 USART_InitTypeDef 在同步和异步模式下使用的不同成员。 2.2.2 USART_InitTypeDef 成员 USART 模式对比 成员异步模式同步模式USART_BaudRateXXUSART_WordLengthXXUSART_StopBitsXXUSART_ParityXXUSART_HardwareFlowControlXXUSART_ModeXXUSART_ClockXUSART_CPOLXUSART_CPHAXUSART_LastBitX 2.2.3 USART_BaudRate 该成员设置了 USART 传输的波特率波特率可以由以下公式计算 IntegerDivider ((APBClock) / (16 * (USART_InitStruct-USART_BaudRate))) FractionalDivider ((IntegerDivider - ((u32) IntegerDivider)) * 16)0.5 2.2.4 USART_WordLength USART_WordLength 提示了在一个帧中传输或者接收到的数据位数。 USART_WordLength 定义 USART_WordLength描述USART_WordLength_8b8 位数据USART_WordLength_9b9 位数据 2.2.5 USART_StopBits USART_StopBits 定义了发送的停止位数目。 USART_StopBits 定义 USART_StopBits描述USART_StopBits_0.5在帧结尾传输 0.5 个停止位USART_StopBits_1在帧结尾传输 1 个停止位USART_StopBits_1.5在帧结尾传输 1.5 个停止位USART_StopBits_2在帧结尾传输 2 个停止位 2.2.6 USART_Parity USART_Parity 定义了奇偶模式。 USART_Parity 定义 USART_Parity描述USART_Parity_No奇偶失能USART_Parity_Even偶模式USART_Parity_Odd奇模式 注意奇偶校验一旦使能在发送数据的 MSB 位插入经计算的奇偶位字长 9 位时的第 9 位字长 8 位 时的第 8 位。 2.2.7 USART_HardwareFlowControl USART_HardwareFlowControl 指定了硬件流控制模式使能还是失能。 USART_HardwareFlowControl 定义 USART_HardwareFlowControl描述USART_HardwareFlowControl_None硬件流控制失能USART_HardwareFlowControl_RTS发送请求 RTS 使能USART_HardwareFlowControl_CTS清除发送 CTS 使能USART_HardwareFlowControl_RTS_CTSRTS 和 CTS 使能 2.2.8 USART_Mode USART_Mode 指定了使能或者失能发送和接收模式。 USART_Mode 定义 USART_Mode描述USART_Mode_Tx发送使能USART_Mode_Rx接收使能 2.2.9 USART_CLOCK USART_CLOCK 提示了 USART 时钟使能还是失能。 USART_CLOCK 定义 USART_CLOCK描述USART_Clock_Enable时钟高电平活动USART_Clock_Disable时钟低电平活动 2.2.10 USART_CPOL USART_CPOL 指定了下 SLCK 引脚上时钟输出的极性。 USART_CPOL 定义 USART_CPOL描述USART_CPOL_High时钟高电平USART_CPOL_Low时钟低电平 2.2.11 USART_CPHA USART_CPHA 指定了下 SLCK 引脚上时钟输出的相位和 CPOL 位一起配合来产生用户希望的时钟/数据的采样关系。 USART_CPHA 定义 USART_CPHA描述USART_CPHA_1Edge时钟第一个边沿进行数据捕获USART_CPHA_2Edge时钟第二个边沿进行数据捕获 2.2.12 USART_LastBit USART_LastBit 来控制是否在同步模式下在 SCLK 引脚上输出最后发送的那个数据字 (MSB)对应的时钟脉冲。 USART_LastBit 定义 USART_LastBit描述USART_LastBit_Disable最后一位数据的时钟脉冲不从 SCLK 输出USART_LastBit_Enable最后一位数据的时钟脉冲从 SCLK 输出 代码如下示例 /* 下面的示例说明如何配置USART1*/USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate 115200;USART_InitStructure.USART_WordLength USART_WordLength_8b;USART_InitStructure.USART_StopBits USART_StopBits_1; USART_InitStructure.USART_Parity USART_Parity_Odd; USART_InitStructure.USART_HardwareFlowControl USART_HardwareFlowControl_RTS_CTS;USART_InitStructure.USART_Mode USART_Mode_Tx | USART_Mode_Rx;USART_InitStructure.USART_Clock USART_Clock_Disable;USART_InitStructure.USART_CPOL USART_CPOL_High; USART_InitStructure.USART_CPHA USART_CPHA_1Edge;USART_InitStructure.USART_LastBit USART_LastBit_Enable;USART_Init(USART1, USART_InitStructure);2.3 库函数 USART_StructInit 函数名USART_StructInit函数原形void USART_StructInit(USART_InitTypeDef* USART_InitStruct)功能描述把 USART_InitStruct 中的每一个参数按默认值填入输入参数USART_InitStruct指向结构 USART_InitTypeDef 的指针待初始化输出参数无返回值无先决条件无被调用函数无 2.3.1 USART_InitStruct 默认值 成员默认值USART_BaudRate9600USART_WordLengthUSART_WordLength_8bUSART_StopBitsUSART_StopBits_1USART_ParityUSART_Parity_NoUSART_HardwareFlowControlUSART_HardwareFlowControl_NoneUSART_ModeUSART_Mode_RxUSART_ClockUSART_Clock_DisableUSART_CPOLUSART_CPOL_LowUSART_CPHAUSART_CPHA_1EdgeUSART_LastBitUSART_LastBit_Disable 代码如下示例 /*下面的例子说明了如何初始化USART_InitTypeDef结构 */ USART_InitTypeDef USART_InitStructure; USART_StructInit(USART_InitStructure);2.4 库USART_ClockInit 注该函数是F4系列单片机的函数。 函数名USART_ClockInit函数原形void USART_ClockInit(USART_TypeDef* USARTx, USART_ClockInitTypeDef* USART_ClockInitStruct)功能描述初始化USARTx外围时钟输入参数 1USARTx:其中x可以是1、2、3或6来选择USART外设输出参数 2指向usart_clockkinittypedef结构的指针包含指定USART外设的配置信息。返回值无先决条件无被调用函数无 2.4.1 USART_ClockInitTypeDef typedef struct { uint16_t USART_Clock; uint16_t USART_CPOL; uint16_t USART_CPHA; uint16_t USART_LastBit; } USART_ClockInitTypeDef; 2.4.2 USART_Clock 时钟使能控制 USART_Clock 该参数指定USART时钟是启用还是禁用。如果使用同步模式发送一般都 需要开启时钟。它设定USART_CR2 寄存器的CLKEN 位的值。 USART_Clock 定义 USART_Clock描述USART_Clock_Disable时钟高电平活动USART_Clock_Enable时钟低电平活动 2.4.3 USART_CPOL 时钟极性 USART_CPOL 该参数指定串行时钟的稳定状态 即空闲的时候是高电平还是低电平。它设定USART_CR2 寄存器的CPOL位的值。 USART_CPOL定义 USART_CPOL描述USART_CPOL_Low时钟低电平USART_CPOL_High时钟高电平 2.4.4 USART_CPHA 时钟相位 USART_CPHA该参数指定进行位捕获的时钟转换。同步模式下SCLK 引脚上输出时钟相位设置可设置在时钟第一个变化沿捕获数据(USART_CPHA_1Edge) 或在时钟第二个变化沿捕获数据。它设定USART_CR2 寄存器的CPHA 位的值。USART_CPHA 与USART_CPOL 配合使用可以获得多种模式时钟关系。 USART_CPHA定义 USART_CPHA描述USART_CPHA_1Edge时钟第一个边沿进行数据捕获USART_CPHA_2Edge时钟第二个边沿进行数据捕获 2.4.5 USART_LastBit 最尾位时钟脉冲 指定上次发送的时钟脉冲是否对应数据位(MSB)必须以同步模式在SCLK引脚上输出。选择在发送最后一个数据位的时候时钟脉冲是否在SCLK 引脚输出可以是不输出脉冲(USART_LastBit_Disable)、输出脉冲(USART_LastBit_Enable)。它设定USART_CR2 寄存器的LBCL 位的值。 USART_LastBit定义 USART_LastBit描述USART_LastBit_Disable最后一位数据的时钟脉冲不从 SCLK 输出USART_LastBit_Enable最后一位数据的时钟脉冲从 SCLK 输出 代码如下示例 /* 下面的示例说明如何配置USART1 的时钟*/USART_ClockInitTypeDef USART_ClockInitStructure; USART_ClockInitStructure.USART_Clock USART_Clock_Disable;USART_ClockInitStructure.USART_CPOL USART_CPOL_Low;USART_ClockInitStructure.USART_CPHA USART_CPHA_1Edge; USART_ClockInitStructure.USART_LastBit USART_CPHA_1Edge; SART_Init(USART1, USART_ClockInitStructure);2.5 库函数 USART_ClockStructInit 注该函数是F4系列单片机的函数。 函数名USART_ClockStructInit函数原形void USART_ClockStructInit(USART_ClockInitTypeDef* USART_ClockInitStruct)功能描述把 USART_InitStruct 中的每一个参数按默认值填入输入参数USART_ClockInitStruct :指向结构 USART_ClockInitTypeDef的指针待初始化先决条件无被调用函数无 2.5.1 USART_ClockInitTypeDef 默认值 成员默认值USART_ClockUSART_Clock_DisableUSART_CPOLUSART_CPOL_LowUSART_CPHAUSART_CPHA_1EdgeUSART_LastBitUSART_LastBit_Disable 代码如下示例 /* 下面的示例说明如何配置USART1 的时钟*/USART_ClockInitTypeDef USART_ClockInitStructure; USART_ClockStructInit(USART_ClockInitStructure);2.6 库函数 USART_ Cmd 函数名USART_ Cmd函数原形void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState)功能描述使能或者失能 USART 外设输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2NewState: 外设 USARTx 的新状态这个参数可以取ENABLE 或者 DISABLE输出参数无返回值无先决条件无被调用函数无 代码如下示例 /* 使能 USART1 */USART_Cmd(USART1, ENABLE);2.7 库函数 USART_SetPrescaler 函数名USART_SetPrescaler函数原形void USART_SetPrescaler(USART_TypeDef* USARTx, u8 USART_Prescaler)功能描述设置 USART 时钟预分频输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2USART_Prescaler: 时钟预分频输出参数无返回值无先决条件无被调用函数无 代码如下示例 /* 设置系统时钟预分频为0x56 */ USART_SetPrescaler(0x56);2.8 库函数 USART_OverSampling8Cmd 函数名USART_OverSampling8Cmd函数原形void USART_OverSampling8Cmd(USART_TypeDef* USARTx, FunctionalState NewState)功能描述启用或禁用USART的8倍过采样模式输入参数 1USARTxx 可以是 1~8来选择 USART 外设输入参数 2NewState: USART 8倍过采样模式的新状态。该参数包括:ENABLE或DISABLE。输出参数无返回值无先决条件无被调用函数无 代码如下示例 /* 启用USART1 的8倍过采样模式 */ USART_OverSampling8Cmd(usart1,ENABLE);2.9 库函数 USART_OneBitMethodCmd 函数名USART_OneBitMethodCmd函数原形void USART_OneBitMethodCmd(USART_TypeDef* USARTx, FunctionalState NewState)功能描述启用或禁用USART的一位采样方法输入参数 1USARTxx 可以是 1~8来选择 USART 外设输入参数 2NewState: USART 8倍过采样模式的新状态。该参数包括:ENABLE或DISABLE。输出参数无返回值无先决条件无被调用函数无 代码如下示例 /* 启用USART的一位采样方法 */ USART_OneBitMethodCmd(usart1,ENABLE);2.10 库函数 USART_SendData 函数名USART_ SendData函数原形void USART_SendData(USART_TypeDef* USARTx, u8 Data)功能描述通过外设 USARTx 发送单个数据输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2Data: 待发送的数据输出参数无返回值无先决条件无被调用函数无 代码如下示例 /* 在USART3上发送一个 0x26*/ USART_SendData(USART3, 0x26);2.11 函数USART_ReceiveData 函数名USART_ ReceiveData函数原形u8 USART_ReceiveData(USART_TypeDef* USARTx)功能描述返回 USARTx 最近接收到的数据输入参数USARTxx 可以是 12 或者 3来选择 USART 外设输出参数无返回值接收到的字先决条件无被调用函数无 代码如下示例 /* 在USART2上收到数据保存RxData */ u16 RxData; RxData USART_ReceiveData(USART2);2.12 函数 USART_SetAddress 函数名USART_SetAddress函数原形void USART_SetAddress(USART_TypeDef* USARTx, u8 USART_Address)功能描述设置 USART 节点的地址输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2USART_Address提示 USART 节点的地址。输出参数无返回值无先决条件无被调用函数无 代码如下示例 /* 将USART2地址节点设置为0x5 */USART_SetAddress(USART2, 0x5);2.13 库函数 USART_WakeUpConfig 函数名USART_WakeUpConfig函数原形void USART_WakeUpConfig(USART_TypeDef* USARTx, u16 USART_WakeUp)功能描述选择 USART 的唤醒方式输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2USART_WakeUpUSART 的唤醒方式输出参数无返回值无先决条件无被调用函数无 2.13.1 USART_WakeUp USART_WakeUp选择USART的唤醒方式。 USART_WakeUp 值 USART_WakeUp描述USART_WakeUp_IdleLine空闲总线唤醒USART_WakeUp_AddressMark地址标记唤醒 代码如下示例 /* 选择IDLE线路作为USART1唤醒 */USART_WakeUpConfig(USART1, USART_WakeUpIdleLine);2.14 库函数 USART_ReceiverWakeUpCmd 函数名USART_ReceiverWakeUpCmd函数原形void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState Newstate)功能描述检查 USART 是否处于静默模式输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2NewState: USART 静默模式的新状态这个参数可以取ENABLE 或者 DISABLE输出参数无返回值无先决条件无被调用函数无 代码如下示例 /*USART3在正常模式 */USART_ReceiverWakeUpCmd(USART3, DISABLE);2.15 库函数 USART_LINBreakDetectiLengthConfig 函数名USART_LINBreakDetectiLengthConfig函数原形void USART_LINBreakDetectLengthConfig(USART_TypeDef* USARTx, u16 USART_LINBreakDetectLength)功能描述设置 USART LIN 中断检测长度输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2USART_LINBreakDetectLengthLIN 中断检测长度输出参数无返回值无先决条件无被调用函数无 2.15.1 USART_LINBreakDetectLength USART_LINBreakDetectLength选择USART的唤醒方式。 USART_LINBreakDetectLength 值 USART_LINBreakDetectLength描述USART_LINBreakDetectLength_10b10 位中断检测USART_LINBreakDetectLength_11b11 位中断检测 代码如下示例 /* 为USART1选择10位中断检测 */ USART_LINBreakDetectLengthConfig(USART1, USART_LINDetectLength_10b);2.16 库函数 USART_LINCmd 函数名USART_LINCmd函数原形void USART_LINCmd(USART_TypeDef* USARTx, FunctionalState Newstate)功能描述使能或者失能 USARTx 的 LIN 模式输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2NewState: USART LIN 模式的新状态这个参数可以取ENABLE 或者 DISABLE输出参数无返回值无先决条件无被调用函数无 代码如下示例 /*开启USART2 LIN模式 */ USART_LINCmd(USART2, ENABLE);2.17 库函数 USART_SendBreak 函数名USART_SendBreak函数原形void USART_SendBreak(USART_TypeDef* USARTx)功能描述发送中断字输入参数USARTxx 可以是 12 或者 3来选择 USART 外设输出参数无返回值无先决条件无被调用函数无 代码如下示例 /* 在USART1上发送中断字符 */ USART_SendBreak(USART1);2.18 库函数 USART_HalfDuplexCmd 函数名USART_HalfDuplexCmd函数原形void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState Newstate)功能描述使能或者失能 USART 半双工模式输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2NewState: USART 半双工模式传输的新状态;这个参数可以取ENABLE 或者 DISABLE输出参数无返回值无先决条件无被调用函数无 代码如下示例 /*使能USART2的半双工模式 */ USART_HalfDuplexCmd(USART2, ENABLE);2.19 库函数 USART_SmartCardCmd 函数名USART_SmartCardCmd函数原形void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState Newstate)功能描述使能或者失能指定 USART 的智能卡模式输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2NewState: USART 智能卡模式的新状态;这个参数可以取ENABLE 或者 DISABLE输出参数无返回值无先决条件无被调用函数无 代码如下示例 /*启用USART1智能卡模式 */ USART_HalfDuplexCmd(USART2, ENABLE);2.20 库函数 USART_SmartCardNackCmd 函数名USART_SmartCardNackCmd函数原形void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState Newstate)功能描述使能或者失能 NACK 传输输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2NewState: NACK 传输的新状态这个参数可以取ENABLE 或者 DISABLE输出参数无返回值无先决条件无被调用函数无 代码如下示例 /*在奇偶校验错误时启用USART1 NACK传输*/ USART_SmartCardNACKCmd(USART1, ENABLE);2.21 库函数 USART_SetGuardTime 函数名USART_SetGuardTime函数原形void USART_SetGuardTime(USART_TypeDef* USARTx, u8 USART_GuardTime)功能描述设置指定的 USART 保护时间输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2USART_GuardTime: 指定的保护时间输出参数无返回值无先决条件无被调用函数无 代码如下示例 /*设置守护时间为0x78 */ USART_SetGuardTime(0x78);2.22 库函数 USART_IrDAConfig 函数名USART_IrDAConfig函数原形void USART_IrDAConfig(USART_TypeDef* USARTx, u16 USART_IrDAMode)功能描述设置 USART IrDA 模式输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2USART_IrDAModeLIN 中断检测长度输出参数无返回值无先决条件无被调用函数无 2.22.1 USART_IrDAMode USART_IrDAMode选择IrDA的模式。 USART_IrDAMode 值 USART_IrDAMode描述USART_IrDAMode_LowPowerIrDA 低功耗模式USART_IrDAMode_NormalIrDA 正常模式 代码如下示例 /* USART2 IrDA低功耗选择*/ USART_IrDAConfig(USART2,USART_IrDAMode_LowPower);2.23 库函数 USART_IrDACmd 函数名 | USART_IrDACmd 函数原形 | void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState Newstate) 功能描述 | 使能或者失能 USART IrDA 模式 输入参数 1 | USARTxx 可以是 12 或者 3来选择 USART 外设 输入参数 2 | NewState: USART IrDA 模式的新状态这个参数可以取ENABLE 或者 DISABLE 输出参数 | 无 返回值 | 无 先决条件 | 无 被调用函数 | 无 代码如下示例 /*开启USART1 IrDA模式*/ USART_IrDACmd(USART1, ENABLE);2.24 库函数 USART_ DMACmd 函数名USART_ DMACmd函数原形USART_DMACmd(USART_TypeDef* USARTx, FunctionalState NewState)功能描述使能或者失能指定 USART 的 DMA 请求输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2USART_DMAreq指定 DMA 请求输入参数 3NewState: USARTx DMA 请求源的新状态这个参数可以取ENABLE 或者 DISABLE输出参数无返回值无先决条件无被调用函数无 2.24.1 USART_DMAreq USART_DMAreq选择待使能或者失能的DMA请求。 USART_LastBit 值 USART_DMAreq描述USART_DMAReq_Tx发送 DMA 请求USART_DMAReq_Rx接收 DMA 请求 代码如下示例 /*启用USART2的Rx和Tx DMA传输动作*/ USART_DMACmd(USART2, USART_DMAReq_Rx | USART_DMAReq_Tx, ENABLE);2.25 库函数 USART_ITConfig 函数名USART_ITConfig函数原形void USART_ITConfig(USART_TypeDef* USARTx, u16 USART_IT, FunctionalState NewState)功能描述使能或者失能指定的 USART 中断输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2USART_IT待使能或者失能的 USART 中断源输入参数 3NewStateUSARTx 中断的新状态这个参数可以取ENABLE 或者 DISABLE输出参数无返回值无先决条件无被调用函数无 2.25.1 USART_IT 输入参数 USART_IT 使能或者失能 USART 的中断。可以取下表的一个或者多个取值的组合作为该参数的值。 USART_IT 值 USART_IT描述USART_IT_PE奇偶错误中断USART_IT_TXE发送中断USART_IT_TC传输完成中断USART_IT_RXNE接收中断USART_IT_IDLE空闲总线中断USART_IT_LBD LIN中断检测中断USART_IT_CTS CTS中断USART_IT_ERR错误中断 代码如下示例 /*启用USART1传输中断*/ USART_ITConfig(USART1, USART_IT_Transmit ENABLE);2.26 库函数 USART_ GetFlagStatus 函数名USART_ GetFlagStatus函数原形FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, u16 USART_FLAG)功能描述检查指定的 USART 标志位设置与否输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2USART_FLAG待检查的 USART 标志位输出参数无返回值USART_FLAG 的新状态SET 或者 RESET先决条件无被调用函数无 2.26.1 USART_FLAG 给出了所有可以被函数USART_ GetFlagStatus检查的标志位列表。 USART_FLAG 值 USART_FLAG描述USART_FLAG_CTSCTS 标志位USART_FLAG_LBDLIN 中断检测标志位USART_FLAG_TXE发送数据寄存器空标志位USART_FLAG_TC发送完成标志位USART_FLAG_RXNE接收数据寄存器非空标志位USART_FLAG_IDLE空闲总线标志位USART_FLAG_ORE溢出错误标志位USART_FLAG_NE噪声错误标志位USART_FLAG_FE帧错误标志位USART_FLAG_PE奇偶错误标志位 代码如下示例 /*检查传输数据寄存器是否已满*/ FlagStatus Status; Status USART_GetFlagStatus(USART1, USART_FLAG_TXE);2.27 库函数 USART_ ClearFlag 函数名USART_ ClearFlag函数原形void USART_ClearFlag(USART_TypeDef* USARTx, u16 USART_FLAG)功能描述清除 USARTx 的待处理标志位输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2USART_FLAG待清除的 USART 标志位输出参数无返回值无先决条件无被调用函数无 代码如下示例 /*清除溢出错误标志*/USART_ClearFlag(USART1,USART_FLAG_OR);2.28 库函数 USART_ GetITStatus 函数名USART_ GetITStatus函数原形ITStatus USART_GetITStatus(USART_TypeDef* USARTx, u16 USART_IT)功能描述检查指定的 USART 中断发生与否输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2USART_IT待检查的 USART 中断源输出参数无返回值USART_IT 的新状态先决条件无被调用函数无 2.28.1 SART_IT 给出了所有可以被函数USART_ GetITStatus检查的中断标志位列表 USART_IT 值 USART_IT描述USART_IT_PE奇偶错误中断USART_IT_TXE发送中断USART_IT_TC发送完成中断USART_IT_RXNE接收中断USART_IT_IDLE空闲总线中断USART_IT_LBD LIN中断探测中断USART_IT_CTS CTS中断USART_IT_ORE溢出错误中断USART_IT_NE噪音错误中断USART_IT_FE帧错误中断 代码如下示例 /*获取USART1溢出错误中断状态*/ ITStatus ErrorITStatus; ErrorITStatus USART_GetITStatus(USART1, USART_IT_OverrunError);2.29 函数 USART_ ClearITPendingBit 函数名USART_ ClearITPendingBit函数原形void USART_ClearITPendingBit(USART_TypeDef* USARTx, u16 USART_IT)功能描述清除 USARTx 的中断待处理位输入参数 1USARTxx 可以是 12 或者 3来选择 USART 外设输入参数 2USART_IT待检查的 USART 中断源输出参数无返回值无先决条件无被调用函数无 代码如下示例 /*清除溢出错误中断挂起位*/ USART_ClearITPendingBit(USART1,USART_IT_OverrunError);三 项目中部分函数的使用 3.1 串口1的初始化 该串口一般都是用于调试使用以及使用HEX文件通过该串口下载程序。 //bound:波特率 void uart_init(u32 bound){//GPIO端口设置GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART1时钟//串口1对应引脚复用映射GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //GPIOA9复用为USART1GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //GPIOA10复用为USART1//USART1端口配置GPIO_InitStructure.GPIO_Pin GPIO_Pin_9 | GPIO_Pin_10; //GPIOA9与GPIOA10GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF;//复用功能GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; //速度50MHzGPIO_InitStructure.GPIO_OType GPIO_OType_PP; //推挽复用输出GPIO_InitStructure.GPIO_PuPd GPIO_PuPd_UP; //上拉GPIO_Init(GPIOA,GPIO_InitStructure); //初始化PA9PA10//USART1 初始化设置USART_InitStructure.USART_BaudRate bound;//波特率设置USART_InitStructure.USART_WordLength USART_WordLength_8b;//字长为8位数据格式USART_InitStructure.USART_StopBits USART_StopBits_1;//一个停止位USART_InitStructure.USART_Parity USART_Parity_No;//无奇偶校验位USART_InitStructure.USART_HardwareFlowControl USART_HardwareFlowControl_None;//无硬件数据流控制USART_InitStructure.USART_Mode USART_Mode_Rx | USART_Mode_Tx; //收发模式USART_Init(USART1, USART_InitStructure); //初始化串口1USART_Cmd(USART1, ENABLE); //使能串口1 USART_ClearFlag(USART1, USART_FLAG_TC); //清除 串口1 的待处理标志位USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启相关中断//Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel USART1_IRQn;//串口1中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority3;//抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority 3; //子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE; //IRQ通道使能NVIC_Init(NVIC_InitStructure); //根据指定的参数初始化VIC寄存器、}void USART1_IRQHandler(void) //串口1中断服务程序 {u8 Res;if(USART_GetITStatus(USART1, USART_IT_RXNE) ! RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾){Res USART_ReceiveData(USART1);//(USART1-DR); //读取接收到的数据if((USART_RX_STA0x8000)0)//接收未完成{if(USART_RX_STA0x4000)//接收到了0x0d{if(Res!0x0a)USART_RX_STA0;//接收错误,重新开始else USART_RX_STA|0x8000; //接收完成了 }else //还没收到0X0D{ if(Res0x0d)USART_RX_STA|0x4000;else{USART_RX_BUF[USART_RX_STA0X3FFF]Res ;USART_RX_STA;if(USART_RX_STA(USART_REC_LEN-1))USART_RX_STA0;//接收数据错误,重新开始接收 } }} } } 3.2 串口2-RS232初始化 我公司的ARM板 串口2芯片是232。 u8 RS232_RX_BUF[RS232_RX_BUFSIZE]; u16 RS232_RX_CNT0; void USART2_IRQHandler(void)//串口2中断服务程序 {u8 res;OSIntEnter(); if(USART_GetITStatus(USART2, USART_IT_RXNE) ! RESET) {resUSART_ReceiveData(USART2); if(RS232_RX_CNTRS232_RX_BUFSIZE){RS232_RX_BUF[RS232_RX_CNT]res;RS232_RX_CNT;}} USART_ClearITPendingBit(USART2,USART_IT_RXNE);OSIntExit(); } //bound:波特率 void Usart2_Init(u32 bound) {GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//PA2 TX PA3 RXGPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_USART2); //GPIOD5复用为USART2GPIO_PinAFConfig(GPIOD,GPIO_PinSource6,GPIO_AF_USART2); //GPIOD6复用为USART2GPIO_InitStructure.GPIO_PinGPIO_Pin_5|GPIO_Pin_6;GPIO_InitStructure.GPIO_ModeGPIO_Mode_AF;GPIO_InitStructure.GPIO_OTypeGPIO_OType_PP;GPIO_InitStructure.GPIO_SpeedGPIO_Speed_100MHz;GPIO_InitStructure.GPIO_PuPdGPIO_PuPd_UP;GPIO_Init(GPIOD,GPIO_InitStructure);USART_InitStructure.USART_BaudRatebound;USART_InitStructure.USART_HardwareFlowControlUSART_HardwareFlowControl_None;USART_InitStructure.USART_ModeUSART_Mode_Tx|USART_Mode_Rx;USART_InitStructure.USART_ParityUSART_Parity_No;USART_InitStructure.USART_StopBitsUSART_StopBits_1;USART_InitStructure.USART_WordLengthUSART_WordLength_8b;USART_Init(USART2,USART_InitStructure);USART_Cmd(USART2, ENABLE); //使能串口1 // USART_ClearFlag(USART2, USART_FLAG_TC);USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启相关中断//Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel USART2_IRQn;//串口1中断通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority3;//抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority 1; //子优先级1NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE; //IRQ通道使能NVIC_Init(NVIC_InitStructure); //根据指定的参数初始化VIC寄存器、 }void usart2_senddata(u8 *buf,u8 len) {u8 t;for(t0;tlen;t){while(USART_GetFlagStatus(USART2,USART_FLAG_TC)RESET){};USART_SendData(USART2,buf[t]);} }void RS232_Receive_Data(u8 *buf,u16 len) {u16 rxlenlen;u16 i0;if(rxlenRS232_RX_CNT){for(i0;irxlen;i){buf[i]RS232_RX_BUF[i];}RS232_RX_CNT0;} } 3.2 串口2-RS485初始化 正点原子的开发板 串口2的芯片是485。 #if EN_USART2_RX //如果使能了接收 //接收缓存区 u8 RS485_RX_BUF[64]; //接收缓冲,最大64个字节. //接收到的数据长度 u8 RS485_RX_CNT0; void USART2_IRQHandler(void) {u8 res; if(USART_GetITStatus(USART2, USART_IT_RXNE) ! RESET)//接收到数据{ res USART_ReceiveData(USART2);//;读取接收到的数据USART2-DRif(RS485_RX_CNT64){RS485_RX_BUF[RS485_RX_CNT]res; //记录接收到的值RS485_RX_CNT; //接收数据增加1 } } } #endif //初始化IO 串口2 //bound:波特率 void RS485_Init(u32 bound) { GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//使能USART2时钟//串口2引脚复用映射GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART2); //GPIOA2复用为USART2GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_USART2); //GPIOA3复用为USART2//USART2 GPIO_InitStructure.GPIO_Pin GPIO_Pin_2 | GPIO_Pin_3; //GPIOA2与GPIOA3GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF;//复用功能GPIO_InitStructure.GPIO_Speed GPIO_Speed_100MHz; //速度100MHzGPIO_InitStructure.GPIO_OType GPIO_OType_PP; //推挽复用输出GPIO_InitStructure.GPIO_PuPd GPIO_PuPd_UP; //上拉GPIO_Init(GPIOA,GPIO_InitStructure); //初始化PA2PA3//PG8推挽输出485模式控制 GPIO_InitStructure.GPIO_Pin GPIO_Pin_8; //GPIOG8GPIO_InitStructure.GPIO_Mode GPIO_Mode_OUT;//输出GPIO_InitStructure.GPIO_Speed GPIO_Speed_100MHz; //速度100MHzGPIO_InitStructure.GPIO_OType GPIO_OType_PP; //推挽输出GPIO_InitStructure.GPIO_PuPd GPIO_PuPd_UP; //上拉GPIO_Init(GPIOG,GPIO_InitStructure); //初始化PG8//USART2 初始化设置USART_InitStructure.USART_BaudRate bound;//波特率设置USART_InitStructure.USART_WordLength USART_WordLength_8b;//字长为8位数据格式USART_InitStructure.USART_StopBits USART_StopBits_1;//一个停止位USART_InitStructure.USART_Parity USART_Parity_No;//无奇偶校验位USART_InitStructure.USART_HardwareFlowControl USART_HardwareFlowControl_None;//无硬件数据流控制USART_InitStructure.USART_Mode USART_Mode_Rx | USART_Mode_Tx; //收发模式USART_Init(USART2, USART_InitStructure); //初始化串口2USART_Cmd(USART2, ENABLE); //使能串口 2USART_ClearFlag(USART2, USART_FLAG_TC);#if EN_USART2_RX USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启接受中断//Usart2 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel USART2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority3;//抢占优先级3NVIC_InitStructure.NVIC_IRQChannelSubPriority 3; //子优先级3NVIC_InitStructure.NVIC_IRQChannelCmd ENABLE; //IRQ通道使能NVIC_Init(NVIC_InitStructure); //根据指定的参数初始化VIC寄存器、#endif RS485_TX_EN0; //默认为接收模式 }//RS485发送len个字节. //buf:发送区首地址 //len:发送的字节数(为了和本代码的接收匹配,这里建议不要超过64个字节) void RS485_Send_Data(u8 *buf,u8 len) {u8 t;RS485_TX_EN1; //设置为发送模式for(t0;tlen;t) //循环发送数据{while(USART_GetFlagStatus(USART2,USART_FLAG_TC)RESET); //等待发送结束 USART_SendData(USART2,buf[t]); //发送数据} while(USART_GetFlagStatus(USART2,USART_FLAG_TC)RESET); //等待发送结束 RS485_RX_CNT0; RS485_TX_EN0; //设置为接收模式 } //RS485查询接收到的数据 //buf:接收缓存首地址 //len:读到的数据长度 void RS485_Receive_Data(u8 *buf,u8 *len) {u8 rxlenRS485_RX_CNT;u8 i0;*len0; //默认为0delay_ms(10); //等待10ms,连续超过10ms没有接收到一个数据,则认为接收结束if(rxlenRS485_RX_CNTrxlen)//接收到了数据,且接收完成了{for(i0;irxlen;i){buf[i]RS485_RX_BUF[i]; } *lenRS485_RX_CNT; //记录本次数据长度RS485_RX_CNT0; //清零} }该文档修改记录 修改时间修改说明2023年3月1日第一次发布介绍了STM32通用同步异步收发器USART、串口所有函数的介绍及使用 总结 以上就是2 STM32库函数之通用同步异步收发器USART、串口所有函数的介绍及使用的内容本文介绍了通用同步异步收发器USART、串口所有函数的简单使用。 有不明白的地方欢迎留言有建议欢迎留言我后面编写文档好改进。 创作不容如果文档对您有帮助记得给个赞。
http://www.dnsts.com.cn/news/279824.html

相关文章:

  • 网站建设成功案例方案电商平台数据库设计
  • 如何网站备案友情链接检测工具
  • wordpress主题低调与华丽优化神马排名软件
  • 西北苗木网陕西泽基生态建设有限公司网站网站建设桔子科技
  • 阿里云做网站视频教程wordpress 软件
  • 北京做网站便宜的公司开启WordPress多站点功能
  • 做策划需要进的网站企业建站方案
  • 南京设计网站的公司温州平台公司
  • 网页制作与网站建设宝典pdf上海室内设计公司排名前十强
  • 新网互联魔方手机网站建站系统系统维护一般要多长时间
  • 石排仿做网站绿色风格 网站
  • 十堰网站建设多少钱门户网站建设招标文件
  • 贵州网站建设设计局域网wordpress
  • 做骗子网站互联网专业主要学什么
  • 网站建设的申请上海协会网站建设
  • wordpress 首页模版江门百度seo
  • 网站备案几天服务商类型是什么意思
  • 网站前台数据库微信高端网站建设
  • 公司做网站都需要什么南昌集团网站建设公司
  • 换网站了吗vps网站访问不了
  • 网站备案服务号电邮注册网站
  • 长沙电子商务网站建设清华大学网站建设方案
  • 厦门本地网站虚拟机做网站有用吗
  • 云南网站新备案制做淘宝必备网站
  • 做预售的网站网站建设背景怎么设置成
  • 口碑好网站建设哪家好手机建站服务
  • 企业建设网站的空间有哪些有必要花钱学视频剪辑吗
  • icp备案网站名称是什么意思营销网站建设服务
  • 吴江区经济开发区建设工程网站宝塔面板
  • 建网站公司是如何赚钱深鑫辉网站建设