个人练习:串口中断和通信

2019-09-17来源: eefocus关键字:串口中断  通信  定时器

写中断需要用到定时器:

1.设置它的寄存器TMOD

2.THx和TLx的值(这个是设置定时器的初值)

3.打开定时器(TRx=1)

-----------------------------

注:串行口两个寄存器

SCON(串行端口控制器)和PCON

4.SCON的格式:SM0  SM1  SM2 REN TB8 RB8 TI RI

(1)SM0和SM1用来设置串行口的工作方式:0,1,2,3一共4中工作方式。

(2)SM2仅用于方式2和方式3的多机通讯控制位。

(3)REN串行接受允许位。0——禁止接收 1——允许接收

(4)TB8:在方式2,3中,TB8是发送机要发送的第九位数据

(5)RB8:在方式2,3中,RB8是接收机接收到的第九位数据,该数据正好来自发送机的TB8

(6)TI: 发送中断标志位。 发送前必须用软件清零,发送过程中TI保持零点平,发送完一帧数据后,

由硬件自动置1.如果要继续发送,必须用软件再清零。

(7)RI:接收中断标志位。 接收前,必须用软件清零,接收过程中RI保持零点平,接受完一帧数据后,

由片内硬件自动置1,。如果需要继续接收,必须用软件再清零。


电源控制寄存器(Power Controller)

PCON的SMOD位:波特率加倍位。在计算串行方式1,2,3的波特率时;0——不加倍;1——加倍。


关键字:串口中断  通信  定时器 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic474713.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM8L中断线和中断端口使用方法
下一篇:STM8L串口中断进不去

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32CubeIDE 中 HAL库的串口中断接收函数 HAL_UART_Receive_IT
一、代码自动生成以后的项目及代码结构:main.c中,调用了串口初始化串口初始化函数赋值了串口的参数相当于底层的初始化,配置引脚、并开启中断。至此串口1配置完毕二、库文件stm32f1xx_hal_uart.c内的秘密2.1 初始化1.usart.c中,MX_USART1_UART_Init 调用了库的HAL_UART_Init,将结构体传递进该函数中2.HAL_UART_Init干了些什么事? if (huart->gState == HAL_UART_STATE_RESET)  {    huart->Lock = HAL_UNLOCKED;    HAL
发表于 2020-07-18
STM32CubeIDE 中 HAL库的<font color='red'>串口中断</font>接收函数 HAL_UART_Receive_IT
STM32使用CubeMAX配置的串口中断接收方法
STM32使用cubeMAX可以快速建立工程模板,但是默认使用的是Hal库构成的工程,对于习惯使用了ST标准库的同学来说,灵活调用HAL库可能会比较生疏,我也是这么觉得的,但是还是要逐步去接触学习它,毕竟这个hal库的封装还是相当好的,有好多先进的思想和用法。在学习过程中,我遇到了一个问题,之前也遇到过,但是没时间去研究,就是串口在CUBUMAX上配置好后,如何实现串口中断接收,接下来就来记录一下我学习到的知识:1.定位串口中断发生的地方HAL库的中断处理还是和标准库一样的,在stm32xxxx_it.c中定义我们定位到如下函数:HAL_UART_IRQHandler(&huart1);再往下定位,我们找到 
发表于 2020-05-12
STM32串口中断、DMA接收的几点注意地方
1UART串口中断接收使能UART串口中断之后,有接收到UART数据,进入中断,此时要清除RXNE接收标志位:1.通过软件向该RXNE标志位写入零来清零;2.通过对 USART_DR 寄存器执行读入操作将该位清零。这里可以查看对应《参考手册》,一般我们选择第2种,通过读取UART串口数据来清零。1.中断接收数据丢失在UART串口中断函数中,或者更高优先级中断函数中长时间执行,导致接收丢失,所以,请勿在中断函数中长时间执行。特别有些人,还在中断函数添加延时函数。实际应用中,只要不是特殊情况,比如测试某个功能可以添加延时函数,都不建议在中断函数添加延时函数。2.ORE上溢错误ORE上溢错误是什么意思呢? 可能很多人不了解,简单
发表于 2020-05-12
STM8S 115200bps 串口中断连续接收出错问题
内部16M晶振误差太大,导致波特率不准,9600bps可以。要想使用115200,就用外部晶振吧。还有数据寄存器DR中的数据如果没有及时取走(也可能因为波特率不准)导致数据溢出,出现反复中断现像,如在调试时如果暂停时串口上还有数据,再次运行时DR中的数据将一直是某个数据,正常情况下是不会出现的,解决办法就是进中断的时候清OV标志(不能解决根本问题)。
发表于 2020-04-18
使用Msp430的串口中断接收一包数据
;                UCA0MCTL = 0x02;         // Modulation UCBRSx = 1         UCA0CTL1 &= ~UCSWRST;    // Initialize USCI state machine       //IE2 |= UCA0RXIE | UCA0TXIE;  //注意应在初始化USCI之后,设置中断使
发表于 2020-03-23
使用Msp430的<font color='red'>串口中断</font>接收一包数据
STM8S处理串口中断注意
//溢出处理-如果发生溢出需要先清除ORE,再读DR寄存器 则可清除不断入中断的问题if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)==SET){USART_ClearFlag(USART1,USART_FLAG_ORE); //清除OREUSART_ReceiveData(USART1); //读DR}
发表于 2020-02-17
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved