打印
[STM8]

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

[复制链接]
1263|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取反

使用特权

评论回复
5
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).    这样清的  也看不懂啊    到底怎么清     谢谢各位了

使用特权

评论回复
6
Snow7| | 2016-4-25 20:22 | 只看该作者
中断结束应该有标志的

使用特权

评论回复
7
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)
{

我的系统开始的时候工作正常,后来总死机,发现是没有清溢出中断

使用特权

评论回复
8
RF、龙龙|  楼主 | 2016-4-26 09:07 | 只看该作者
bitofnoone 发表于 2016-4-25 21:37
我的系统开始的时候工作正常,后来总死机,发现是没有清溢出中断

敢问你是怎么清除溢出标志的呢   谢谢

使用特权

评论回复
9
RF、龙龙|  楼主 | 2016-4-26 09:08 | 只看该作者
Snow7 发表于 2016-4-25 20:22
中断结束应该有标志的

学的太肤浅还不懂

使用特权

评论回复
10
android2| | 2016-4-28 22:31 | 只看该作者
楼主解决了吗,是不是没清中断标志呢

使用特权

评论回复
11
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

粉丝