搜索
bottom↓
回复: 5

悬赏人民币了!!!lpc2106的中断进不了的问题

[复制链接]

出0入0汤圆

发表于 2010-11-18 15:59:10 | 显示全部楼层 |阅读模式
用的是zlg的lpc210X的工程模板,中断进不去,有经验的同志给指正指正。
还有我看到网上有的例程有EnableIRQ();这个函数,我加上去后就编译错误。
/****************************************************************************
* File:SENDSTR.C
* 功能:串口发送数据。
* 说明:将跳线器JP2短接。
*           使用外部11.0592MHz晶振,不使用PLL,Fpclk = 1/4 Fcclk。
****************************************************************************/
#include  "config.h"
char flag=0;

/****************************************************************************
* 名称:DelayNS()
* 功能:长软件延时
* 入口参数:dly                延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void  DelayNS(uint32  dly)
{  uint32  i;

   for(; dly>0; dly--)
      for(i=0; i<50000; i++);
}


/****************************************************************************
* 名称:UART0_Ini()
* 功能:初始化串口0。设置为8位数据位,1位停止位,无奇偶校验,波特率为9600
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  UART0_Ini(void)
{  U0LCR = 0x83;                            // DLAB = 1,可设置波特率
   U0DLL = 0x12;
   U0DLM = 0x00;
   U0LCR = 0x03;
}
                               

/****************************************************************************
* 名称:UART0_SendByte()
* 功能:向串口发送字节数据,并等待发送完毕。
* 入口参数:data                要发送的数据
* 出口参数:无
****************************************************************************/
void  UART0_SendByte(uint8 data)
{  U0THR = data;                                    // 发送数据

   while( (U0LSR&0x40)==0 );            // 等待数据发送完毕

}



/****************************************************************************
* 名称:UART0_SendStr()
* 功能:向串口发送一字符串
* 入口参数:srt                要发送的字符串的指针
* 出口参数:无
****************************************************************************/
void  UART0_SendStr(uint8 const *str)
{  while(1)
   {  if( *str == '\0' ) break;
      UART0_SendByte(*str++);            // 发送数据
   }
}

void __irq IRQ_UART0 (void)
{
        uint8 i;
        i=U0IIR;
        switch(i & 0x0f)       
        {
                case 0x04:
                        flag=1;
                        //rcv0_buf[RX0_count++]= U0RBR;
                        break;
                default:
                        break;
        }
        VICVectAddr = 0x00;                        // 中断处理结束
}

/****************************************************************************
* 名称:main()
* 功能:向串口UART0发送字符串"Hello World!"
****************************************************************************/
int  main(void)
{  uint8 const  SEND_STRING[] = "Hello World!\r\n";
        uint8 const aa[]="abcd\r\n";

   PINSEL0 = 0x00000005;                    // 设置I/O连接到UART0
   PINSEL1 = 0x00000000;
   
   UART0_Ini();
   U0IER = 0x01;                                                // 允许RBR中断,即接收中断
   U0FCR = 0x01;
       
//        IRQEnable();                                                // 使能IRQ中断
/* 使能UART0、UART1中断 */
        VICIntSelect = 0x00000000;                        // 设置所有的通道为IRQ中断
        VICVectCntl0 = 0x20 | 0x06;                        // UART0分配到IRQ slot0,即最高优先级
        VICVectAddr0 = (uint32)IRQ_UART0;        // 设置UART0向量地址
        VICIntEnable = 1 << 0x06;                        // 使能UART0中断       
  
   while(1)       
   
   {
           if(1==flag)
        {
                flag=0;          
                   UART0_SendStr(SEND_STRING);
        }         
      UART0_SendStr(aa);
      DelayNS(50);
      
   }
   return(0);
}

我的工程帮看看啊
lpcourdev_598859H2XTI3.rar(文件大小:85K) (原文件名:xin2.rar)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-11-18 16:26:13 | 显示全部楼层
MSR     CPSR_c, #0x1f;//0xdf,只所以用0x1f替换0xdf,是为了开启IRQ和FIQ,花了一天时间找出原因的,靠,靠,靠...
LDR     SP, =StackUsr


Startup.s文件中 把 0xdf 改成 0x1f 就可以了,我刚学时也遇到这个问题,好不容易弄明白原因

出0入0汤圆

 楼主| 发表于 2010-11-18 16:35:03 | 显示全部楼层
回复【1楼】Clinging 哆拉C梦
----------------------------------------------------------------------
我试试看啊,回头再一起讨论下

出0入0汤圆

发表于 2010-11-18 16:47:39 | 显示全部楼层
悬赏多少啊?

出0入0汤圆

 楼主| 发表于 2010-11-18 16:51:05 | 显示全部楼层
悬赏只是一块砖,目的是要引出您这样的玉!

出0入0汤圆

发表于 2010-11-25 20:39:10 | 显示全部楼层
不要瞎承诺!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-13 20:58

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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