教学课件 11-与PC串口通信_第1页
教学课件 11-与PC串口通信_第2页
教学课件 11-与PC串口通信_第3页
教学课件 11-与PC串口通信_第4页
教学课件 11-与PC串口通信_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

项目四串口通信任务1与PC串口通信项目四串口通信任务1任务2与PC串口通信控制LED亮灭知识目标:1.知道串行通信工作原理及特点;2.掌握串口通信相关库函数。技能目标:1.能正确使用串口通信相关库函数。2.会串行通信的编程方法;素养目标:1.操作规范,符合5S管理要求;2.具备自主探究、勤学好问的态度。学习目标设计要求PC机给STM32的串口发送字符,STM32将接收到的字符再传回PC机,在PC机上通过串口调试助手完成上述功能,编写控制程序并进行系统调试。硬件设计硬件连接:

知识导航串行通信是STM32与外界进行信息交换的一种方式,被广泛应用于STM32双机通信、多机通信以及STM32与PC机之间通信等方面。知识导航UART异步通信方式引脚连接方法RXD:数据输入引脚(数据接受)TXD:数据发送引脚(数据发送)知识导航下面这些引脚默认的功能都是GPIO,在作为串口使用时,就要用到这些引脚的复用功能,在使用复用功能之前,必须对复用的端口进行设置。串口号RXDTXD1PA10PA92PA3PA23PB11PB104PC11PC105PD2PC12串口对应的引脚知识导航

STM32串口相关寄存器波特比率寄存器(USART_BRR)知识导航USART波特率与USART_BRR寄存器中的值USARTDIV关系如下: Tx/Rx波特率=其中:fPCLKx是给串口的时钟(PCLK1用于USART2、3、UART4、5,PCLK2用于USART1),USARTDIV是一个无符号的定点数。

知识导航例1:如果DIV_Mantissa=27,DIV_Fraction=12(USART_BRR=0x1BC),则Mantissa(USARTDIV)=27Fraction(USARTDIV)=12/16=0.75所以USARTDIV=27.75知识导航例2:要求USARTDIV=25.62,如何设置寄存器USART_BRR?DIV_Fraction=16*0.62=9.92最接近的整数是:10=0xADIV_Mantissa=mantissa(25.620)=25=0x19所以USART_BRR=0x19A知识导航例3:要求USARTDIV=50.99,如何设置寄存器USART_BRR?DIV_Fraction=16*0.99=15.84最接近的整数是:16=0x10=>DIV_frac[3:0]溢出

=>进位必须加到小数部分DIV_Mantissa=mantissa(50.990+进位)=51=0x33所以USART_BRR=0x330,USARTDIV=51知识导航实例:设置USART1串口的波特率是115200bps,如何设置寄存器USART_BRR的值?USARTDIV=72000000/(16*115200)=39.0625整数部分DIV_Mantissa=39=0x27小数部分DIV_Fraction=16*0.0625=1所以USART_BRR=0x271知识导航

STM32串口相关寄存器控制寄存器1(USART_CR1)控制寄存器USART_CR1,只用了低14位,高18位保留知识导航位13(UE)USART使能。0:USART分频器和输出被禁止;1:USART模块使能。位12(M)定义了数据字的长度。0:一个起始位、8个数据位、n个停止位;1:一个起始位、9个数据位、n个停止位。位6(TCIE)发送完成中断使能。0:禁止产生中断;1:当USART_SR中的TC为’1’时,产生USART中断。位5(RXNEIE)接收缓冲区非空中断使能。0:禁止产生中断;1:当USART_SR中的ORE或者RXNE为“1”时,产生USART中断。位3(TE)发送使能发送器。0:禁止发送;1:使能发送。位2(RE)接收使能。0:禁止接收;1:使能接收,并开始搜寻RX引脚上的起始位。知识导航

STM32串口相关寄存器数据寄存器(USART_DR)位8:0(DR)是数据值,这9位包含了发送或接收的数据。USART_DR是由两个寄存器组成的,一个是用发送(TDR),一个是用接收(RDR),该寄存器兼具读和写的功能。TDR寄存器提供了内部总线和输出移位寄存器之间的并行接口;RDR寄存器提供了输入移位寄存器和内部总线之间的并行接口。知识导航

STM32串口相关寄存器状态寄存器(USART_SR)位6(TC)发送完成标志位。0:发送还未完成;1:发送完成。位5(RXNE)读数据寄存器非空标志位。0:数据没有收到;1:收到数据,可以读出。位0(PE)是校验错误。0:没有奇偶校验错误;1:奇偶校验错误。知识导航函数USART_Init函数原型:voidUSART_Init(USART_TypeDef*USARTx,USART_InitTypeDef*USART_InitStruct);函数功能:完成指定串口初始化,主要是配置串口的参数。参数1:选择要初始化的串口。参数2:结构USART_InitTypeDef的指针。知识导航USART_InitTypeDef结构体typedefstruct{u32USART_BaudRate;u16USART_WordLength;u16USART_StopBits;u16USART_Parity;u16USART_HardwareFlowControl;u16USART_Mode;u16USART_Clock;u16USART_CPOL;u16USART_CPHA;u16USART_LastBit;}USART_InitTypeDef;知识导航USART_BaudRate:用于设置串口传输的波特率。USART_WordLength:定义一帧数据中传输或接收到的数据位数。知识导航USART_StopBits:指定发送的停止位数目。USART_Parity:定义奇偶模式。知识导航USART_HardwareFlowControl:指定硬件流控制模式使能还是禁止。USART_Mode:指定使能或禁止发送和接收模式知识导航实例USART_InitTypeDefUSART_InitStrue;USART_InitStrue.USART_BaudRate=115200;USART_InitStrue.USART_WordLength=USART_WordLength_8b;USART_InitStrue.USART_StopBits=USART_StopBits_1;USART_InitStrue.USART_Parity=USART_Parity_No;USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;USART_Init(USART1,&USART_InitStrue);知识导航函数USART_Cmd函数原型:voidUSART_Cmd(USART_TypeDef*USARTx,FunctionalStateNewState);

函数功能:用于使能串口。参数1:要使能的串口。参数2:串口的状态Enable或Disable。例如:

USART_Cmd(USART1,ENABLE);知识导航函数USART_SendData函数原型:

voidUSART_SendData(USART_TypeDef*USARTx,u8Data);

函数功能:通过串口USARTx发送单个数据。参数1:要发送数据的串口USARTx。参数2:待发送的数据。例如:

USART_SendData(USART1,dat);知识导航函数USART_ReceiveData函数原型:

u8USART_ReceiveData(USART_TypeDef*USARTx);

函数功能:返回USARTx新接收到的数据。参数:用于接收数据的串口USARTx。例如:

dat=USART_ReceiveData(USART1);知识导航函数USART_GetFlagStatus函数原型:

FlagStatusUSART_GetFlagStatus(USART_TypeDef*USARTx,u16USART_FLAG);

函数功能:检查指定的USART标志位设置与否。参数1:待检查的串口USARTx。参数2:待检查的USART标志位。返回值:SET(接收/发送寄存器非空)或RESET(接收/发送寄存器为空)。知识导航知识导航实例if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET){ intdat; dat=USART_ReceiveData(USART1); USART_SendData(USART1,dat); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);}任务实现串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd();GPIO端口模式设置:GPIO_Init();PA9设置成复用功能的推挽输出(GPIO_Mode_AF_PP)PA10设置成浮空输入(GPIO_Mode_IN_FLOATING)串口参数初始化:USART_Init();使能串口:USART_Cmd();数据发送和接收:USART_GetFlagStatus()、USART_SendData()、USART_ReceiveData()。拓展练习:利用STM32中断系统实现:PC机给STM32的串口发送字符,STM32将接收到的字符再传回PC机。技能训练知识导航函数USART_ITConfig函数原型:

voidUSART_ITConfig(USART_TypeDef*USARTx,u16USART_IT,FunctionalStateNewState);

函数功能:使能或禁止指定的USART中断。参数1:指定的串口USARTx。参数2:待使能或禁止的USART中断源。参数3:设置USARTx中断的状态(ENABLE或者DISABLE)。知识导航例如:USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);知识导航函数USART_GetITStatus函数原型:

ITStatusUSART_GetITStatus(USART_TypeDef*USARTx,u16USART_IT);

函数功能:检查指定的USART中断是否发生。参数1:待检查的串口USARTx。参数2:待检查的USART中断源。返回值:SET(发生中断)或RESET(未发生中断)。知识导航中断服务函数USART1_IRQHandlervoidUSART1_IRQHandler(void){ if(USART_GetITStatus(USART1,USART_IT_RXNE)==

温馨提示

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

评论

0/150

提交评论