关于STM8S003和S103,可能会出现的一直进入串口接收中断子程序问题的处理。

关于STM8S003和S103,可能会出现的一直进入串口接收中断子程序问题的处理。

已有 2430 次阅读2016-7-20 10:28 |个人分类:STM8S

 
/*-------------------------------------- (C) COPYRIGHT  北 ----------------------------------------------
  * @文件性质:  应用总结。   
  * @笔记主题:  关于STM8S003和S103,可能会出现的一直进入串口接收中断子程序问题的处理。
  * @文件功能:  
  * @作者    :  bei
  * @创建日期:  20160720
 * @修改日期:  
 * @修改记录:      
-----------------------------------------------------------------------------------------------------------*/
 
对STM8S003F3或103系列等单片机,由于与其他单片机不一样,串口接收中断中有OR标志位(UART_SR寄存器中的OR位),即过载错误标志位。
若处理不当,将会导致反复进入串口接收中断。
 
一般,我们的串口接收中断子程序如下:
 INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)
 {
u8 Res;
 
//读取接收到的数据,当读完数据后自动取消RXNE的中断标志位
Res = UART1_ReceiveData8();
 
        //数据接收过程处理。。。
 
 //清中断。
 UART1_ClearITPendingBit(UART1_IT_RXNE);
 }
 
但是对于STM8S003和STM8S103系列,若接收的数据被下个接收到的数据覆盖,会导致过载错误,UART_SR中的OR置位,引起串口中断从而进入中断程序。
所以必须正确地处理该位,否则会出现一直进入中断的问题。如下:
 
 INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)
 {
u8 Res;
 
//读取接收到的数据,当读完数据后自动取消RXNE的中断标志位
Res = UART1_ReceiveData8();
 
    //数据接收过程处理。。。
 
 //清中断。
 UART1_ClearITPendingBit(UART1_IT_RXNE);
  
 //如果发生了过载错误,则清除该中断标志。
 if(UART1->SR & UART1_SR_OR)
 {
UART1_ClearITPendingBit(UART1_IT_OR);
  }  
 
//注意,直接写成 UART1_ClearITPendingBit(UART1_IT_OR); 依然会出现一直进中断的问题。
//我认为是需要先读下UART_SR这个寄存器,然后再清除,这样才能使程序正常。
 }
 
完结。

转载于:https://www.cnblogs.com/hubertboy/p/8007462.html

### 回答1: 南自PSX643S103协议是一种通信协议,用于电子设备之间的数据传输和通信。该协议由南自科技有限公司开发,用于特定的硬件设备之间的互操作性。 PSX643S103协议以二进制格式进行数据传输,通过定义特定的数据包结构和通信规则,实现设备之间的数据交换和控制命令的传递。该协议支持高效的数据传输和可靠的通信连接,能够在不同的硬件平台上运行。 PSX643S103协议提供了丰富的功能和特性,包括数据的编码和解码、数据包的校验和错误检测、数据流的控制和管理等。它还定义了一组标准的通信命令和数据格式,使得不同设备可以在遵循协议规范的前提下进行互相通信和数据交换。 南自PSX643S103协议广泛应用于各种电子设备之间的通信领域,如工业自动化控制系统、智能家居系统、机器人控制系统等。通过使用该协议,不同厂家的设备可以实现互联互通,提高了设备之间的互操作性和兼容性。 总之,南自PSX643S103协议是一种高效可靠的通信协议,用于电子设备之间的数据传输和通信。它提供了丰富的功能和特性,在各种领域得到广泛应用。 ### 回答2: 南自psx643s103协议是南自公司开发的一种用于自动化系统之间通信的协议。PSX643S103是该协议的具体版本。 该协议是为了满足自动化系统在数据传输和通信方面的需求而设计的。它定义了数据传输的格式和规则,使得不同的自动化系统可以通过这个协议进行有效的通信和数据交换。该协议的主要特点包括高效、可靠和安全。 在PSX643S103协议中,数据以二进制形式进行传输,以提高传输效率。协议规定了数据包的格式,包括起始标志、校验位、数据长度和数据内容等。通过这样的格式,接收方可以正确地解析和处理数据。 为了保证数据传输的可靠性,PSX643S103协议还提供了一些机制。例如,发送方可以通过确认帧来确认接收方已经正确接收了数据。同时,协议还支持重传机制,如果数据在传输过程中出错或丢失,发送方可以重新发送数据,保证数据的完整性和准确性。 此外,PSX643S103协议还注重数据的安全性。协议可以对数据进行加密和解密,以防止数据被非法获取和篡改。另外,协议还支持身份认证机制,确保只有具有权限的设备才能进行通信。 总之,南自psx643s103协议是一种用于自动化系统之间数据传输和通信的协议。它具有高效、可靠和安全的特点,能够满足自动化系统在实际应用中的需求。 ### 回答3: 南自PSX643S103协议是指南自公司研发的一种通信协议,用于PSX643S103设备之间的通信。该协议基于标准的数据传输协议,具备高效、安全、可靠的特点。 首先,南自PSX643S103协议具备高效性。它采用了优化的数据传输算法和压缩技术,能够在较短的时间内完成大量数据的传输。这对于实时性要求较高的应用场景非常重要,比如工业自动化、机器人控制等领域。 其次,该协议具备较高的安全性。南自公司在协议设计过程中考虑到了数据传输的安全问题,采用了加密算法对数据进行加密处理,保护数据的机密性和完整性。这样可以防止未经授权的访问者窃取或篡改数据,确保数据传输的安全性。 此外,南自PSX643S103协议还具备可靠性。它采用了差错检测和纠正等技术,可以在数据传输过程中检测和纠正错误,确保数据的完整性和准确性。这样能够有效地避免数据传输过程中的丢包、错包等情况,提高了通信的可靠性和稳定性。 总之,南自PSX643S103协议是一种高效、安全、可靠的通信协议,适用于PSX643S103设备之间的数据传输。它的出现,为各种应用场景带来了便利和保障,推进了相关领域的发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值