[STM8] 连续发送数据,跳不出串口中断函数

[复制链接]
1470|10
 楼主| RF、龙龙 发表于 2016-4-25 11:18 | 显示全部楼层 |阅读模式
我利用串口助手通过串口给STM8L发送数据,发现一次最多可以发送两个,再多发送就发现程序一直停在了串口中断中,这是什么原因呢,串口中断需要清除标志位什么的吗    谢谢了
orangebanana 发表于 2016-4-25 12:33 | 显示全部楼层
溢出标志位你清除一下试试
 楼主| RF、龙龙 发表于 2016-4-25 12:42 | 显示全部楼层
orangebanana 发表于 2016-4-25 12:33
溢出标志位你清除一下试试

这些标志应该默认都是0吧   不需要清除吧
 楼主| RF、龙龙 发表于 2016-4-25 13:28 | 显示全部楼层
#pragma vector = USART_R_RXNE_vector
__interrupt void UART_RX_RXNE_HANDLER(void)
{
       Uint8 chTmp;
       chTmp = USART1_DR;//并行数据寄存器
     led=~led;
  }
中断函数也很简单,就是收到一个数据,led取反
 楼主| RF、龙龙 发表于 2016-4-25 16:08 | 显示全部楼层
我测试发现每次发送数据太多了溢出标志就不能自动清零了  我想清零    但发现寄存器是制度寄存器   后来仔细一看   清除是   It is cleared by a software sequence (a read to the USART_SR register
followed by a read to the USART_DR register).    这样清的  也看不懂啊    到底怎么清     谢谢各位了
Snow7 发表于 2016-4-25 20:22 | 显示全部楼层
中断结束应该有标志的
bitofnoone 发表于 2016-4-25 21:37 | 显示全部楼层
RF、龙龙 发表于 2016-4-25 13:28
#pragma vector = USART_R_RXNE_vector
__interrupt void UART_RX_RXNE_HANDLER(void)
{

我的系统开始的时候工作正常,后来总死机,发现是没有清溢出中断
 楼主| RF、龙龙 发表于 2016-4-26 09:07 | 显示全部楼层
bitofnoone 发表于 2016-4-25 21:37
我的系统开始的时候工作正常,后来总死机,发现是没有清溢出中断

敢问你是怎么清除溢出标志的呢   谢谢
 楼主| RF、龙龙 发表于 2016-4-26 09:08 | 显示全部楼层
Snow7 发表于 2016-4-25 20:22
中断结束应该有标志的

学的太肤浅还不懂
android2 发表于 2016-4-28 22:31 | 显示全部楼层
楼主解决了吗,是不是没清中断标志呢
qiangtech 发表于 2016-5-5 22:43 | 显示全部楼层
我也是刚学。。
It is cleared by a software sequence (a read to the USART_SR register
followed by a read to the USART_DR register).  这句的意思应该是:由软件清零,读取USART_DR寄存器后再读USART_SR寄存器。就可以清零了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

173

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部