OpenEdv-开源电子网

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

串口输出无法进入中断(已上传工程)

[复制链接]

26

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
金钱
209
注册时间
2012-5-31
在线时间
0 小时
发表于 2012-8-9 01:02:12 | 显示全部楼层 |阅读模式

char BUF1[64];
   char BUF2[64];
   char *pBUF = BUF1;    
   char *SendBuf = BUF1;
  
   void StartSend(void)
   {
  USART1->DR = *SendBuf;
   }
  
   void Input_BUF(u8 Data)
   {
   static u8 count = 0;
  if (count >= 64){
   if (pBUF == &BUF1[0]) {pBUF = &BUF2[0]; SendBuf = &BUF1[0];}
   else if (pBUF == &BUF2[0]) {pBUF = &BUF1[0]; SendBuf = &BUF2[0];}
   StartSend();
   count = 0;
  }
  *(pBUF+count++) = Data;
   }

void USART1_IRQHandler(void)
{
  static u8 count = 1;
  /*中断发送*/
 if(USART1->SR&(1<<5))//接收到数据
 {
      if (count < 63){
    USART1->DR = *(SendBuf + count++);
   }
   else {
    count = 1;
   }
    USART_RX_STA|=0x80;
         }                                
}

貌似是没有使能发送中断,于是在串口初始化的程序中加入 USART1->CR1|=1<<7;    //TCIE中断使能

主函数如下 while(1)
 {
    Input_BUF(test++);
    delay_ms(50);
 } 

现在问题是这样的,不加入TCIE中断使能的话串口可以输出00 40 80 00 40 80.。。  中断使能后却什么都输出不出来了。。。

找不到原因啊!!! 为啥使能了发送中断反而进不了中断呢?

串口发送.rar

544.93 KB, 下载次数: 139

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

头像被屏蔽

82

主题

191

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
465
金钱
465
注册时间
2011-11-14
在线时间
33 小时
发表于 2012-8-9 01:23:45 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

26

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
金钱
209
注册时间
2012-5-31
在线时间
0 小时
 楼主| 发表于 2012-8-9 08:29:32 | 显示全部楼层
回复【2楼】tianheyun:
看不懂
---------------------------------
 就是把数据压到BUF1 BUF2两个数组里,然后把BUF1 BUF2的内容写入USART_DR 让其自动发送~  
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-8-9 08:53:47 | 显示全部楼层
回复【楼主位】yyisme1988:
---------------------------------
很可能是你没有清发送中断标志.导致程序一直在中断.
你仿真一下看看.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
金钱
209
注册时间
2012-5-31
在线时间
0 小时
 楼主| 发表于 2012-8-9 14:02:47 | 显示全部楼层
回复【4楼】正点原子:
回复【楼主位】yyisme1988:
---------------------------------
很可能是你没有清发送中断标志.导致程序一直在中断.
你仿真一下看看.
---------------------------------
试过了反而无法压栈了。。。不知道为什么原因,原子哥我已上传工程能麻烦你帮我看一下么,谢谢了~
回复 支持 反对

使用道具 举报

26

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
金钱
209
注册时间
2012-5-31
在线时间
0 小时
 楼主| 发表于 2012-8-9 14:44:25 | 显示全部楼层
回复【4楼】正点原子:
回复【楼主位】yyisme1988:
---------------------------------
很可能是你没有清发送中断标志.导致程序一直在中断.
你仿真一下看看.
---------------------------------
发现是中断优先级的分配出了点问题,调整之后就一直死在了串口初始化的那一块了。。。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 06:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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