已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
21.1 USART寄存器结构.34321.2 USART库函数.344No函数名描述1USART_DeInit将外设USARTx寄存器重设为缺省值2USART_Init根据USART_InitStruct中指定的参数初始化外设USARTx寄存器3USART_StructInit把USART_InitStruct中的每一个参数按缺省值填入4USART_Cmd使能或失能USART外设5USART_ITConfig使能或失能指定的USART中断6USART_DMACmd使能或者失能指定USART的DMA请求7USART_SetAddress设置USART节点的地址8USART_WakeUpConfig选择USART的唤醒方式9USART_ReceiverWakeUpCmd检查USART是否处于静默模式10USART_LINBreakDetectLengthConfig设置USART LIN中断检测长度11USART_LINCmd使能或失能USARTx的LIN模式12USART_SendData通过外设USARTx发送单个数据13USART_ReceiveData返回USARTx最近接收到的数据14USART_SendBreak发送中断字15USART_SetGuardTime设置指定的USART保护时间16USART_SetPrescaler设置USART时钟预分频17USART_SmartCardCmd使能或失能指定USART的智能卡模式18USART_SmartCardNackCmd使能或失能NACK传输19USART_HalfDuplexCmd使能或失能USART半双工模式20USART_IrDAConfig设置USART IrDA模式21USART_IrDACmd使能或失能USART IrDA模式22USART_GetFlagStatus检查指定的USART标志位设置与否23USART_ClearFlag清除USARTx的待处理标志位24USART_GetITStatus检查指定的USART中断发生与否25USART_ClearITPendingBit清除USARTx的中断待处理位26USART_ClockInitUSART时钟配置27USART_ClockStructInitUSART时钟结构体缺省值初始化21通用同步异步收发器(USART) 通用同步异步收发器(USART)提供一种灵活的方法来与使用工业标准NRZ异步数据格式的外部设备之间进全双工数据交换。USART用分数波特发生器提供宽范围的波特选择。它支持同步单向通信和半双工单线通信。它也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC 规范,以及调制解调器(CTS/RTS)操作。它还允许多处器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。 Section 21.1 USART寄存器结构描述了固件函数库所使用的数据结构,Section 21.2 固件库函数介绍了函数库里的所有函数。21.1 USART寄存器结构 USART寄存器结构,USART_TypeDeff,在文件stm32f0x_map.h中定义如下: typedef struct vu16 SR; u16 RESERVED1; vu16 DR; u16 RESERVED2; vu16 BRR; u16 RESERVED3; vu16 CR1; u16 RESERVED4; vu16 CR2; u16 RESERVED5; vu16 CR3; u16 RESERVED6; vu16 GTPR; u16 RESERVED7; USART_TypeDef;Table 704.例举了USART所有寄存器 Table 704. USART寄存器寄存器描述SRUSART状态寄存器DRUSART数据寄存器BRRUSART波特率寄存器CR1USART控制寄存器1 CR2USART控制寄存器2 CR3USART控制寄存器3 GTPRUSART保护时间和预分频寄存器3 个USART外设声明于文件:. #define PERIPH_BASE (u32)0x40000000) #define APB1PERIPH_BASE PERIPH_BASE #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) #define AHBPERIPH_BASE (PERIPH_BASE + 0x20000)#define USART1_BASE (APB2PERIPH_BASE + 0x3800)#define USART2_BASE (APB1PERIPH_BASE + 0x4400)#define USART3_BASE (APB1PERIPH_BASE + 0x4800) #ifndef DEBUG . #ifdef _USART1 #define USART1 (USART_TypeDef *) USART1_BASE)#endif /*_USART1 */ #ifdef _USART2 #define USART2 (USART_TypeDef *) USART2_BASE) #endif /*_USART2 */ #ifdef _USART3 #define USART3 (USART_TypeDef *) USART3_BASE) #endif /*_USART3 */ . #else /* DEBUG */ . #ifdef _USART1 EXT USART_TypeDef *USART1; #endif /*_USART1 */ #ifdef _USART2 EXT USART_TypeDef *USART2; #endif /*_USART2 */ #ifdef _USART3 EXT USART_TypeDef *USART3; #endif /*_USART3 */ . #endif 使用Debug模式时,初始化指针USART1, USART2和USART3于文件stm2f10x_lib.c: . #ifdef _USART1 USART1 = (USART_TypeDef *) USART1_BASE; #endif /*_USART1 */ #ifdef _USART2 USART2 = (USART_TypeDef *) USART2_BASE; #endif /*_USART2 */ #ifdef _USART3 USART3 = (USART_TypeDef *) USART3_BASE; #endif /*_USART3 */ . 为了访问USART寄存器,_USART,_USART1, _USART2和_USART3必须在文件中定义如下:. #define _USART #define _USART1 #define _USART2 #define _USART3 21.2 USART库函数 USART库函数【见首页】。【01】函数USART_DeInit Table 706. 函数USART_DeInit函数名USART_DeInit 函数原形void USART_DeInit(USART_TypeDef* USARTx)功能描述将外设USARTx寄存器重设为缺省值输入参数USARTx:x可以是1/2/3,来选择USART外设输出参数无返回值无先决条件无被调用函数RCC_APB2PeriphResetCmd() RCC_APB1PeriphResetCmd() 例: /* Resets the USART1 registers to their default reset value */ USART_DeInit(USART1); 函数原型如下:void USART_DeInit(USART_TypeDef* USARTx) /* Check the parameters */ assert_param(IS_USART_ALL_PERIPH(USARTx);/三个USART,两个UART switch (*(u32*)&USARTx) case USART1_BASE: RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE); RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, DISABLE); break; case USART2_BASE: RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, ENABLE); RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2, DISABLE); break; case USART3_BASE: RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, ENABLE); RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART3, DISABLE); break; case UART4_BASE: RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4, ENABLE); RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4, DISABLE); break; case UART5_BASE: RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART5, ENABLE); RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART5, DISABLE); break; default: break; 【02】函数USART_Init Table 707. 函数USART_Init函数名USART_Init 函数原形void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct)功能描述根据USART_InitStruct中指定的参数初始化外设USARTx寄存器输入参数1USARTx:x=1/2/3,来选择USART外设输入参数2USART_InitStruct:指向结构USART_InitTypeDef的指针,包含了外设USART的配置信息。输出参数无返回值无先决条件无被调用函数无USART_InitTypeDef structure USART_InitTypeDef定义于文件stm2f10x_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; Table 708. 描述了结构USART_InitTypeDef在同步和异步模式下使用的不同成员。 Table 708. USART_InitTypeDef成员USART模式对比成员异步模式同步模式USART_BaudRateXXUSART_WordLengthXXUSART_StopBitsXXUSART_ParityXXUSART_HardwareFlowControlXXUSART_ModeXXUSART_ClockXUSART_CPOLXUSART_CPHAXUSART_LastBitXUSART_BaudRate USART_BaudRate:该成员设置了USART传输的波特率,波特率可以由以下公式计算: IntegerDivider = (APBClock) / (16 * (USART_InitStruct-USART_BaudRate) FractionalDivider = (IntegerDivider - (u32) IntegerDivider) * 16) + 0.5 其取值范围为:0 BaudRate USART_BaudRate); assert_param(IS_USART_WORD_LENGTH(USART_InitStruct-USART_WordLength); assert_param(IS_USART_STOPBITS(USART_InitStruct-USART_StopBits); assert_param(IS_USART_PARITY(USART_InitStruct-USART_Parity); assert_param(IS_USART_MODE(USART_InitStruct-USART_Mode); assert_param(IS_USART_HARDWARE_FLOW_CONTROL(USART_InitStruct-USART_HardwareFlowControl); /* The hardware flow control is available only for USART1, USART2 and USART3 */ assert_param(IS_USART_PERIPH_HFC(USARTx, USART_InitStruct-USART_HardwareFlowControl); usartxbase = (*(u32*)&USARTx);/*- USART CR2 Configuration -*/ tmpreg = USARTx-CR2; /* Clear STOP13:12 bits */ tmpreg &= CR2_STOP_CLEAR_Mask; /* Configure the USART Stop Bits, Clock, CPOL, CPHA and LastBit -*/ /* Set STOP13:12 bits according to USART_StopBits value */ tmpreg |= (u32)USART_InitStruct-USART_StopBits; /* Write to USART CR2 */ USARTx-CR2 = (u16)tmpreg;/*- USART CR1 Configuration -*/ tmpreg = USARTx-CR1; /* Clear M, PCE, PS, TE and RE bits */ tmpreg &= CR1_CLEAR_Mask; /* Configure the USART Word Length, Parity and mode - */ /* Set the M bits according to USART_WordLength value */ /* Set PCE and PS bits according to USART_Parity value */ /* Set TE and RE bits according to USART_Mode value */ tmpreg |= (u32)USART_InitStruct-USART_WordLength | USART_InitStruct-USART_Parity | USART_InitStruct-USART_Mode; /* Write to USART CR1 */ USARTx-CR1 = (u16)tmpreg;/*- USART CR3 Configuration -*/ tmpreg = USARTx-CR3; /* Clear CTSE and RTSE bits */ tmpreg &= CR3_CLEAR_Mask; /* Configure the USART HFC -*/ /* Set CTSE and RTSE bits according to USART_HardwareFlowControl value */ tmpreg |= USART_InitStruct-USART_HardwareFlowControl; /* Write to USART CR3 */ USARTx-CR3 = (u16)tmpreg;/*- USART BRR Configuration -*/ /* Configure the USART Baud Rate -*/ RCC_GetClocksFreq(&RCC_ClocksStatus); if (usartxbase = USART1_BASE) apbclock = RCC_ClocksStatus.PCLK2_Frequency; else apbclock = RCC_ClocksStatus.PCLK1_Frequency; /* Determine the integer part */ integerdivider = (0x19 * apbclock) / (0x04 * (USART_InitStruct-USART_BaudRate); tmpreg = (integerdivider / 0x64) 0x04); tmpreg |= (fractionaldivider * 0x10) + 0x32) / 0x64) & (u8)0x0F); /* Write to USART BRR */ USARTx-BRR = (u16)tmpreg;【03】函数USART_StructInit Table 718. 函数USART_StructInit函数名USART_StructInit 函数原形void USART_StructInit(USART_InitTypeDef* USART_InitStruct)功能描述把USART_InitStruct中的每一个参数按缺省值填入输入参数USART_InitStruct:指向结构USART_InitTypeDef的指针,待初始化输出参数无返回值无先决条件无被调用函数无Table 719. 给出了USART_InitStruct各个成员的缺省值 Table 719. USART_InitStruct缺省值(#define Val 参看函数【2】)成员缺省值#define ValUSART_BaudRate9600USART_WordLengthUSART_WordLength_8bUSART_StopBitsUSART_StopBits_1USART_ParityUSART_Parity_NoUSART_HardwareFlowControlUSART_HardwareFlowControl_NoneUSART_ModeUSART_Mode_Rx | USART_Mode_TxUSART_ClockUSART_Clock_DisableUSART_CPOLUSART_CPOL_LowUSART_CPHAUSART_CPHA_1EdgeUSART_LastBitUSART_LastBit_Disable例: /* The following example illustrates how to initialize a USART_InitTypeDef structure */ USART_InitTypeDef USART_InitStructure; USART_StructInit(&USART_InitStructure); 函数原型如下:void USART_StructInit(USART_InitTypeDef* USART_InitStruct) /* USART_InitStruct members default value */ USART_InitStruct-USART_BaudRate = 9600; USART_InitStruct-USART_WordLength = USART_WordLength_8b; USART_InitStruct-USART_StopBits = USART_StopBits_1; USART_InitStruct-USART_Parity = USART_Parity_No ; USART_InitStruct-USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_InitStruct-USART_HardwareFlowControl = USART_HardwareFlowControl_None; 【04】函数USART_Cmd Table 720. 函数USART_Cmd 函数名USART_ Cmd函数原形void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState) 功能描述使能或失能USART外设输入参数1USARTx:x=1/2/3,来选择USART外设输入参数2NewState: 外设USARTx的新状态(ENABLE或DISABLE)输出参数无返回值无先决条件无被调用函数无例: /* Enable the USART1 */ USART_Cmd(USART1, ENABLE); 函数原型如下:void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState) /* Check the parameters */ assert_param(IS_USART_ALL_PERIPH(USARTx); assert_param(IS_FUNCTIONAL_STATE(NewState); if (NewState != DISABLE) /* Enable the selected USART by setting the UE bit in the CR1 register */ USARTx-CR1 |= CR1_UE_Set; else /* Disable the selected USART by clearing the UE bit in the CR1 register */ USARTx-CR1 &= CR1_UE_Reset; 【05】函数USART_ITConfig Table 721. 函数USART_ITConfig函数名USART_ITConfig 函数原形void USART_ITConfig(USART_TypeDef* USARTx, u16 USART_IT, FunctionalState NewState) 功能描述使能或失能指定的USART中断输入参数1USARTx:x=1/2/3,来选择USART外设输入参数2USART_IT:待使能或者失能的USART中断源输入参数3NewState:USARTx中断的新状态(ENABLE或DISABLE)输出参数无返回值无先决条件无被调用函数无USART_IT:输入参数USART_IT使能或者失能USART的中断。可以取下表的一个或者多个取值的组合作为该参数的值。 Table 722. USART_IT值 BitUSART_IT描述#define#Val5#Val的意义9USART_IT_CTSCTS中断0x096A受控于CR3.bitA黑体部分表示IT标志在SR中的位置;蓝色部分(5的结果)表示IT是由哪个CRx控制的;绿色部分表示IT在CRx中的第N位。8USART_IT_LBDLIN中断检测中断0x0846受控于CR2.bit67USART_IT_TXE发送中断0x0727受控于CR1.bit7-46USART_IT_TC传输完成中断0x06265USART_IT_RXNE接收中断0x05254USART_IT_IDLE空闲总线中断0x04243USART_IT_ORE过载错误0x0360受控于CR3.bit02USART_IT_NE噪声错误0x02601USART_IT_FE帧错误错误0x01600USART_IT_PE奇偶错误中断0x0028受控于CR1.bit8*USART_IT_ERR错误中断0x0060CR3.bit0,控制SR.ORENEFE例: /* Enables the USART1 transmit interrupt */ USART_ITConfig(USART1, USART_IT_Transmit ENABLE); 函数原型如下:void USART_ITConfig(USART_TypeDef* USARTx, u16 USART_IT, FunctionalState NewState) u32 usartreg = 0x00, itpos = 0x00, itmask = 0x00; u32 usartxbase = 0x00; /* Check the parameters */ assert_param(IS_USART_ALL_PERIPH(USARTx); assert_param(IS_USART_CONFIG_IT(USART_IT); assert_param(IS_USART_PERIPH_IT(USARTx, USART_IT);/* The CTS interrupt is not available for UART4 and UART5 */ assert_param(IS_FUNCTIONAL_STATE(NewState); usartxbase = (*(u32*)&(USARTx); /* Get the USART register index */ usartreg = (u8)USART_IT) 0x05); /* Get the interrupt position */ itpos = USART_IT & IT_Mask;/IT_Mask = 0x001F itmask = (u32)0x01) CR3 |= USART_DMAReq; else /* Disable the DMA transfer for selected requests by clearing the DMAT and/or DMAR bits in the USART CR3 register */ USARTx-CR3 &= (u16)USART_DMAReq; 【07】函数USART_SetAddress Table 725. 函数USART_SetAddress函数名USART_SetAddress 函数原形void USART_SetAddress(USART_TypeDef* USARTx, u8 USART_Address) 功能描述设置USART节点的地址输入参数1USARTx:x=1/2/3,来选择USART外设输入参数2USART_Address:提示USART节点的地址。输出参数无返回值无先决条件无被调用函数无例: /* Sets the USART2 address node to 0x5 */ USART_SetAddress(USART2, 0x5); 函数原型如下:void USART_SetAddress(USART_TypeDef* USARTx, u8 USART_Address) /* Check the parameters */ assert_param(IS_USART_ALL_PERIPH(USARTx); assert_param(IS_USART_ADDRESS(USART_Address); /#de
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建建筑安全员B证考试题库及答案
- 四川2025年注册安全工程师真题
- 《中国诗词大会》第一季题库(共十期)
- 压力容器实操试题及答案
- 公路水运工程试验检测师《道路工程》真题试卷及答案
- 安全员-C证复审考试及考试题库及答案参考45
- 2025年软考中级软件设计师实战试题与解析
- 2025年医疗服务存在问题整改报告
- 主题教育活动自我评价五篇
- 2025年高级经济师笔试真题及参考答案
- 毛绒玩具课件讲解
- 监理安全知识岗前培训课件
- 霹雳舞教学课件图片
- 特种设备管理课件
- 某市美术馆建设项目可行性研究报告
- 2025年国网湖北电力考试笔试试题(含答案)
- 中小企业融资计划书模板
- 2025至2030年中国包醛氧淀粉行业市场深度分析及发展趋势预测报告
- 小儿流行性腮腺炎护理查房
- 异常事项管理办法
- 《汽车机械基础》-第八章 齿轮传动
评论
0/150
提交评论