您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> uart 接口怎么没有读写数据
本帖共有635个阅读者
发表帖子 发表投票 回复主题
uart 接口怎么没有读写数据
hitcxf(论坛新手)
hitcxf
头衔:社区公民
帮派:无帮无派
帖数:9
金钱:154
积分:10
注册时间:2012/3/14
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
uart 接口怎么没有读写数据

void Test_TX(void)
{
int i,j;  
for(i=0;i<50;i++)   //发送测试函数,将生成的数据通过IR发送出去。
{
  *pUART_THR=TXbuf[i];
  j=*pUART_THR;
  printf("j is %ld\n",j);
      while(!(*pUART_LSR&0x0020));
    }
这一段在第六课uart的讲解中。

打印出来的J为什么都是0.

测试函数没有起作用  pUART_THR 好像没有发送数据啊   这个程序写接收中断函数也没有起作用


EX_INTERRUPT_HANDLER(UART_ISR)
{
if(*pUART_LSR&DR)          //判断是否有新的数据。
{
  if(cont>512)   //防止buff溢出,测试代码,将接收到的数据重复写入512字节的buff
  cont = 0;  
  RXbuf[cont]=*pUART_RBR;
  cont++;
  printf("%c\n",RXbuf[cont]);
}
}

void Init_Interrupts(void)
{
*pSIC_IAR0 = 0xffffffff;    
*pSIC_IAR1 = 0xf3ffffff;     // UART 中断定义
*pSIC_IAR2 = 0xfffFFffF;    
register_handler(ik_ivg10, UART_ISR);  // UART ISR -> IVG 10
*pSIC_IMASK = 0x00004000;
}

没有进入中断,求详解


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2012/7/26 20:09:56
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

通过查找帮助文件,可以看到UART_THR 寄存器上写有 WO,意思为write only ,所以这个寄存器不可以回读,所以你读到的数据是错误的。

删除打印,将板卡连接串口,运行电脑超级终端,设置好代码配置的波特率,运行代码你会在超级终端上看到串口发送的信息,你将串口发送代码屏蔽,或者在发送后增加一个大的延时,在中断中打断点,运行代码,在超级中端界面按下键盘,代码就会进入中断读取键值信息。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2012/7/26 21:50:28
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159341 Call, 1 Queries, Processed in 0.016602 second(s),