ARM微控制器与嵌入式系统 课件 23 USART编程要点_第1页
ARM微控制器与嵌入式系统 课件 23 USART编程要点_第2页
ARM微控制器与嵌入式系统 课件 23 USART编程要点_第3页
ARM微控制器与嵌入式系统 课件 23 USART编程要点_第4页
ARM微控制器与嵌入式系统 课件 23 USART编程要点_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ARM微控制器与嵌入式系统

USART编程要点主讲人:景妮琴北京电子科技职业学院内容串口硬件连接串口编程要点USART结构体初始化USART库函数USART发送接收数据串口硬件连接以单片机与PC通信为例:USART通过3个引脚与其他设备连接在STM32的USART1中:RX:数据串行输入。PA10TX:发送数据输出。PA9GND串口硬件连接TXPA10RXPA9串口硬件连接串口编程要点1.使能RX和TX引脚GPIO时钟和USART时钟;2.初始化GPIO,并将GPIO复用到USART上;3.配置USART参数;4.配置中断控制器并使能USART接收中断;5.使能USART;6.在USART接收中断服务函数实现数据接收和发送。串口编程要点1.使能RX和TX引脚GPIO时钟和USART时钟使能GPIO时钟:PA9和PA10的GPIO口时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);串口编程要点1.使能RX和TX引脚GPIO时钟和USART时钟使能USART时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);串口编程要点2.初始化GPIO,并将GPIO复用到USART上;初始化GPIOGPIO_InitStructure.GPIO_OType=GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10|GPIO_Pin_9;GPIO_Init(GPIOA,&GPIO_InitStructure);串口编程要点2.初始化GPIO,并将GPIO复用到USART上;将GPIO复用到USART上voidGPIO_PinAFConfig(GPIO_TypeDef*GPIOx,uint16_tGPIO_PinSource,uint8_tGPIO_AF)GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);串口编程要点-USART结构体初始化3.配置USART参数;--USART结构体typedefstruct{uint32_tUSART_BaudRate;//波特率BRRuint16_tUSART_WordLength;//字长CR1_Muint16_tUSART_StopBits;//停止位CR2_STOPuint16_tUSART_Parity;//校验控制CR1_PCE、CR1_PSuint16_tUSART_Mode;//模式选择CR1_TE、CR1_REuint16_tUSART_HardwareFlowControl;//硬件流选择CR3_CTSE、CR3_RTSE}USART_InitTypeDef;串口编程要点-USART结构体初始化3.配置USART参数;--USART结构体USART_BaudRate;波特率一般设置为2400、9600、19200、115200。标准库函数会根据设定值计算得到USARTDIV值,并设置USART_BRR寄存器值USART_InitStructure.USART_BaudRate=115200;串口编程要点-USART结构体初始化3.配置USART参数;--USART结构体USART_WordLength数据帧字长,可选8位或9位。如果没有使能奇偶校验控制,一般使用8数据位;如果使能了奇偶校验则一般设置为9数据位。USART_InitStructure.USART_WordLength=USART_WordLength_8b;串口编程要点-USART结构体初始化3.配置USART参数;--USART结构体USART_StopBits停止位设置,可选0.5个、1个、1.5个和2个停止位,一般我们选择1个停止位。USART_InitStructure.USART_StopBits=USART_StopBits_1;串口编程要点-USART结构体初始化3.配置USART参数;--USART结构体USART_Parity奇偶校验控制选择。可选择无校验,偶校验,奇校验USART_InitStructure.USART_Parity=USART_Parity_No;串口编程要点-USART结构体初始化3.配置USART参数;--USART结构体USART_ModeUSART模式选择,有USART_Mode_Rx和USART_Mode_TxUSART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//同时使能收发串口编程要点-USART结构体初始化3.配置USART参数;--USART结构体USART_HardwareFlowControl硬件流控制选择,只有在硬件流控制模式才有效可选有⑴使能RTS、⑵使能CTS、⑶同时使能RTS和CTS、⑷不使能硬件流。USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;串口编程要点-USART结构体初始化3.配置USART参数;--USART结构体

/*完成USART初始化配置*/USART_Init(DEBUG_USART,&USART_InitStructure);串口编程要点-USART结构体初始化4.配置中断控制器并使能USART接收中断;NVIC_Configuration();

/*嵌套向量中断控制器NVIC配置*/USART_ITConfig(DEBUG_USART,USART_IT_RXNE,ENABLE);/*使能串口接收中断*/ 串口编程要点-USART结构体初始化5.使能USART;USART_Cmd(DEBUG_USART,ENABLE);6.在USART接收中断服务函数实现数据接收和发送。常用的USART库函数函数USART_Init初始化异步串口,包括选定使用的串口,设定串口的数据传输速率、数据位、检验方式、停止位、流量控制方式USART_Init(USART_TypeDef*USARTx,USART_InitTypeDef*USART_InitStruct);USART_Init(USART1,&USART_InitStructure);常用的USART库函数函数USART_Cmd使能或失能USART外设voidUSART_Cmd(USART_TypeDef*USARTx,FunctionalStateNewState);USART_Cmd(USART1,ENABLE);//使能USART_Cmd(USART1,DISABLE);//失能常用的USART库函数函数USART_ITConfig使能或失能指定的USART中断voidUSART_ITConfig(USART_TypeDef*USARTx,uint16_tUSART_IT,FunctionalStateNewState);常用的USART_IT的值有:USART_IT_TXE(发送数据寄存器为空),USART_IT_RXNE(接收数据寄存器非空,即有数据可读)USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//使能接收中断常用的USART库函数函数USART_SendData数据发送函数,通过外设USARTx发送单个数据voidUSART_SendData(USART_TypeDef*USARTx,uint16_tData);USART_SendData(USART1,0x26);//通过USART1发送字符0x26这里要说明的是发送的Data是字符常用的USART库函数函数USART_ReceiveData数据接收函数,返回外设USARTx接收的数据uint16_tUSART_ReceiveData(USART_TypeDef*USARTx);RxData=USART_ReceiveData(USART1);//从USART1接收的字符存入RxData中常用的USART库函数函数USART_GetFlagStatus检查指定的USART标志位设置与否FlagStatusUSART_GetFlagStatus(USART_TypeDef*USARTx,uint32_tUSART_FLAG);USART_FLAG为需要检查的USART标志位,可以取一个或多个值的组合作为该参数的值USART_FLAG的值有:USART_FLAG_RXNE(接收数据完成),USART_FLAG_TXE(发送数据寄存器为空),USART_FLAG_TC(发送数据完成)Status=USART_GetFlagStatus(USART1,USART_FLAG_TXE);//检查USART1的发送标志位常用的USART库函数函数USART_ClearFlag清除USART的待处理标志位voidUSART_ClearFlag(USART_TypeDef*USARTx,uint32_tUSART_FLAG);USART_ClearFlag(USART1,USART_FLAG_ORG);//清除USART1的溢出错误标志位常用的USART库函数函数USART_GetITStatus检查指定的USART中断发生与否ITStatusUSART_GetITStatus(USART_TypeDef*USARTx,uint32_tUSART_IT);USART_IT为需要检查的USART中断标志位常用的USART_IT的值有:USART_IT_TXE(发送数据寄存器为空),USART_IT_RXNE(接收数据寄存器非空,即有数据可读)Status=USART_GetITStatus(USART1,USART_IT_TXE);//检查USART1的发送中断标志位常用的USART库函数函数USART_ClearITPendingBit清除USART的中断标志位voidUSART_ClearITPendingBit(USART_TypeDef*USARTx,uint32_tUSART_IT);USART_ClearITPendingBit(USART1,USART_IT_TXE);//清除USART1的发送数据中断标志位常用的库函数函数GPIO_PinAFConfig配置GPIO的某个引脚为具体的第二功能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论