这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 2214 2214自学求助!灯点亮了!但中断不知道如何下手,例子也看不懂

共2条 1/1 1 跳转至

2214 2214自学求助!灯点亮了!但中断不知道如何下手,例子也看不懂

院士
2006-09-17 18:14:16     打赏
2214 2214自学求助!灯点亮了!但中断不知道如何下手,例子也看不懂



关键词: 自学     求助     灯点     亮了     中断     不知道     如何     下手         

院士
2006-12-22 22:43:00     打赏
2楼
问 !
我还不会用LPC2000 ARM的中断,我写的程序进不了中断,
关于VICIntEnable,VICIntSelect
以下是KEIL的例子,那里有VICIntEnable,VICIntSelect的详细说明?
在周立功的用户指南里只是简单的提一下,这个寄存器是干什么用的,但并没有说明如下的VICIntSelect     = 0x00008000;//这个0x00008000是依据什么来定的?又如VICIntEnable    = 0x00008000;//当是EXTINT0、或串口时又如何设置?
void initFiq(void)
{
IODIR1        = 0x00FF0000;                            //Set the LED pins as outputs
PINSEL0         = 0x20000000;                            //Enable the EXTINT1 interrupt
VICIntSelect     = 0x00008000;                            //Enable a Vic Channel as FIQ
VICIntEnable    = 0x00008000;     1: 这些寄存器中每一位控制的中断源在该小节中有说明0x00008000表示第16位为1,即中断源为“外部中断1”(参看《基础教程》表5.63)。 2: 多谢指点,我看了你们的课件后,写了以下程序,
#include "uart.h"
//=============================================
#define BaudRate 115200
#define Fosc 14318180
#define VPB 1
#define MSEL 4
#define PSEL 2
#define cclk MSEL*Fosc/VPB
#define Uart0_value cclk/16/BaudRate
//=============================================
void uart0_isr(void)__irq
{
unsigned char U0IIR_value,test;
test = U0LSR;
U0IIR_value = U0IIR;
if(U0IIR_value&0x01)//为1时,没有中断挂起。
{
  
}
else
{
  switch(U0IIR_value&0x07)
  {
   case 0x06: break;
   case 0x04:    //接收数据可用或FIFO到达触发点。
      test = U0RBR;
      U0THR = test;
      break;
   case 0x0C: break;//字符超时
   case 0x02: break;//THER空
   default: break;
  }
}
}
void  DefaultIRQ(void)__irq
{

}
void init_uart(void)
{
  PINSEL0 = 0x01e00005;           /* Enable RxD0 and TxD0                     */
   U0LCR = 0x83;                   /* 8 bits, no Parity, 1 Stop bit            */
   U0DLL = Uart0_value;            /* 115200Baud Rate               */
   U0LCR = 0x03;     /* DLAB = 0         */
U0IER = 0x03;     /* Enable UART0 intrrupt      */

   VICIntSelect   = 0x00000000; /*Enable a Vic Channel as IRQ    */
   VICIntEnable   = 1<<6;   /* Set Default interrupt vector     */
   VICDefVectAddr = (unsigned long)DefaultIRQ; //非向量中断入口地址。
VICVectCntl0 = 0x26;      //设置优先级0为第6中断源,并打开中断源6的中断允许。
VICVectAddr0 = (unsigned long)uart0_isr;/*把uart_isr函数的入口地址赋给优先为0的中断源的中断入口地址。*/
IODIR0 = 0x01e00000;
IOSET0 = 0x01e00000;
}
/*这是我写的串口测试程序,为什么PC只收到最开始的数据呢?到第二个数据就收不到了。我给他发了N个数据!*/ 3: 建议参看我们提供的串口中间件程序,里面有串口和中断的使用方法 4: 多谢zlgARM我只有你们的课件、用户手册、DATASHEET。书就没有了!十分感谢你的帮忙! 5: 我是easy ARM 2100 的用户,也有相同的迷惑配套的用户手册的确不详细,对寄存器的每一位代表的含义就是不太了解!
请问《基础教程》是书还是电子档? 6: 基础教程是书 7: 《基础教程》是用户手册,还是在市面上买的?《基础教程》是用户手册,还是在市面上买的?书名全称吗? 8: re;《ARM嵌入式系统基础教程》,北京航空航天大学出版社出版.

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]