打印

新手求教外部中断问题

[复制链接]
2055|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
北京户口|  楼主 | 2010-1-16 19:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人新手,用的是EASYARM2200,自己按照UART0的实验改写了一个程序,使用了EINT1这个外部中断,串口接收正常,可是发送的数据不正确,而且EINT1中断只能产生一次,请高手指教,谢谢。下面是程序:
#include "config.h"
#define UART_BPS 115200
#define IRQ_EINT1 0x00008000
uint8  rcv_buf[8];

void UART0_Init(void)
{
uint16 Fdiv;

U0LCR = 0x83;
Fdiv = (Fpclk/16)/UART_BPS;
U0DLL = Fdiv<<8;
U0DLM = Fdiv>>8;
U0LCR = 0x03;
}

void senddata(uint8 data)
{
U0THR = data;
while ((U0LSR & 0x20) == 0);
}

void __irq IRQ_EINT1_Send(void)
{
uint8 i = 0;
for(i = 0;i<8;i++)
{
  senddata(rcv_buf);
}
EXTINT = 0x02;
VICVectAddr0 = 0x00;
}

void   __irq IRQ_UART0(void)
{  uint8  i;
     

   for(i=0; i<8; i++)
   {
   rcv_buf = U0RBR;               
   }
   VICVectAddr = 0x00;               
}

        int main (void)
{// add user source code
   PINSEL0 = 0x20000005;               
   EXTMODE = 0x00;
   
   U0FCR = 0x81;
   U0IER = 0x01;
   
   VICIntSelect = 0x00000000;           
   VICVectCntl0 = 0x26;                 
   VICVectCntl1 = 0x2f;
   VICVectAddr0 = (int)IRQ_UART0;      
   VICVectAddr1 = (int)IRQ_EINT1_Send;
   EXTINT = 0x02;
   VICIntEnable = 0x00008040;           
   
    UART0_Init();
   
    while(1);
    return 0;
}

相关帖子

沙发
6019实验室| | 2010-1-16 19:28 | 只看该作者
您好

您可能是外部中断设置的不正确,

有些芯片外部中断是有BUG的,具体请参考相关芯片的勘误表,上面有具体的解决方法。

使用特权

评论回复
板凳
gongtengxinyi| | 2010-1-16 22:01 | 只看该作者
我也觉的应该是设置问题

使用特权

评论回复
地板
米其林r| | 2010-1-17 18:00 | 只看该作者
加个延时试试,还有换个串口调试工具!

使用特权

评论回复
5
北京户口|  楼主 | 2010-2-24 12:32 | 只看该作者
不行啊。郁闷啊,求助高手!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

107

主题

521

帖子

1

粉丝