OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2942|回复: 5

串口中断发送出问题 每次都只进入一次中断,两个字节只发了一个

[复制链接]

26

主题

63

帖子

0

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2016-4-6
在线时间
102 小时
发表于 2016-11-16 15:00:33 | 显示全部楼层 |阅读模式
1金钱
USART_ITConfig(USART2, USART_IT_TXE, ENABLE); //使能发送中断

void USART2_IRQHandler(void)
{   
    if(USART_GetITStatus(USART2, USART_IT_TXE) != RESET)  //发送中断
    {                                                                                                          
           if(USART2_TX_BUFSIZE!=0)
       {  
            USART_SendData(USART2,USART2_TX_BUF[tx_len++]);      
            USART2_TX_BUFSIZE-=1;

       }
           else
       {
            USART_ITConfig(USART2,USART_IT_TXE,DISABLE);          
       }
       USART_ClearITPendingBit(USART2, USART_IT_TXE);
    }   

最佳答案

查看完整内容[请看2#楼]

SART_ITConfig(USART2,USART_IT_TXE,DISABLE); 你这里把发送中断都给关闭了。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-11-16 15:00:34 | 显示全部楼层
SART_ITConfig(USART2,USART_IT_TXE,DISABLE); 你这里把发送中断都给关闭了。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
130
金钱
130
注册时间
2015-11-25
在线时间
25 小时
发表于 2016-11-16 17:50:04 | 显示全部楼层
本帖最后由 汤焰 于 2016-11-16 17:51 编辑

你如果是发送多个字节应该加个循环, USART_SendData(USART2,USART2_TX_BUF[tx_len++]);    。网上应该有很多这种函数吧,给你抓一个函数 ,自己改下
void COM2_SendNBytes(uint uiSendLen, uchar *pucSendBuff)
{
        uint i;

        for(i=0; i<uiSendLen; i++)
        {
            USART_SendData(COM2_USART, pucSendBuff);            
        while(USART_GetFlagStatus(COM1_USART, USART_FLAG_TXE) == RESET);        
        }        
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-11-17 21:31:26 | 显示全部楼层
串口发送没必要用中断。。。
回复

使用道具 举报

26

主题

63

帖子

0

精华

高级会员

Rank: 4

积分
506
金钱
506
注册时间
2016-4-6
在线时间
102 小时
 楼主| 发表于 2016-11-18 14:27:23 | 显示全部楼层
正点原子 发表于 2016-11-16 15:00
SART_ITConfig(USART2,USART_IT_TXE,DISABLE); 你这里把发送中断都给关闭了。。。

是在USART2_TX_BUFSIZE为0,即全发送出去才清中断标志的
回复

使用道具 举报

6

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2016-5-25
在线时间
29 小时
发表于 2016-11-18 15:08:02 | 显示全部楼层
机械式teli 发表于 2016-11-18 14:27
是在USART2_TX_BUFSIZE为0,即全发送出去才清中断标志的

你应该是第0个字节没有发送,,,只发送了第一个字节
&lt;a target=&amp;quot;_blank&amp;quot; href=&amp;quot;http://wpa.qq.com/msgrd?v=3&amp;uin=10984466&amp;site=qq&amp;menu=y
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 08:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表