最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

關(guān)于多路中斷應(yīng)用的疑問

作者:hzq888676 欄目:ARM技術(shù)
關(guān)于多路中斷應(yīng)用的疑問
    我在調(diào)試時發(fā)現(xiàn),若同時設(shè)置兩個中斷(UART0 分配為SLOT0 和 TIMER0 分配為 SLOT1)則不能產(chǎn)生中斷,見程序示例。
    而將UART或TIMER0分別配置為SLOT0,關(guān)閉SLOT1 則中斷正常,不知是否需要修改LPC2200模板設(shè)置,如何修改。

void __irq IRQ_Timer0(void)
{
  TCounter --;
  if (TCounter ==0)
  {
    FL_overtime = 0x5A;
  }
  T0IR = 0x01;
  VICVectAddr = 0x00;
}

void   __irq IRQ_UART0(void)
{  
  if( 0x04==(U0IIR&0x0F))                                  //若有接收到數(shù)據(jù)
  {
    Receive = U0RBR;                                       //取接收到的數(shù)據(jù)==〉recv_data
  }
  VICVectAddr = 0x00;                                      // 中斷處理結(jié)束
}               

void initial(void)
{
  UARTMODE  uart0_set;    
  uart0_set.datab = 8;                                     // 8位數(shù)據(jù)位
  uart0_set.stopb = 1;                                     // 1位停止位
  uart0_set.parity = 0;                                    // 無奇偶校驗
  UART0_Ini(115200, uart0_set);                            // 初始化串口模式
   
  U0FCR = 0x01;                                            // 使能FIFO,并設(shè)置觸發(fā)點為1字節(jié)
  U0IER = 0x01;                                            // 允許RBR中斷,即接收中斷

  T0PR = 0;
  T0MCR = 0x03;
  T0MR0 = Fpclk/1000;                                      //1ms定時中斷
  T0TCR = 0x01;
   
  /* 設(shè)置中斷允許 */
  VICIntSelect = 0x00000000;                               // 設(shè)置所有通道為IRQ中斷
  VICVectCntl0 = 0x26;                                     // UART0中斷通道分配到IRQ slot 0,即優(yōu)先級最高
  VICVectAddr0 = (int)IRQ_UART0;                           // 設(shè)置UART0向量地址
  VICVectCntl1 = 0x24;                                     // Timer0中斷通道分配到IRQ slot1.
  VICVectAddr1 = (uint32)IRQ_Timer0;                       // 設(shè)置Timer0向量地址
  VICIntEnable = 0x00000060;                               // 使能UART0、Timer0中斷
}

int main (void)
{
  uint8 TEMP;
  uint32 uid,uid1;
  /*
  uint8 err=0;
  volatile uint16 *ADR;
  volatile uint16  *ip;
  */
  uint16  TEMP1;
                                    
  PINSEL0 = 0x00050055;                                       // 定義TXD0、RXD0、SCL、SDA、TXD1、RXD1,其余為通用IO
  PINSEL1 = 0x000002A9;                                       //設(shè)置EINT0、SCK1、MISO1、MOSI1、SSEL1、其它為GPIO
  IO0DIR = P0_IOCON;                                       //設(shè)置I/O口輸入/輸出方向
  initial();
  while(1)
  {
                                                       // 等待中斷
  }


2樓: >>參與討論
hzq888676
找到錯誤啦

我把控制位搞錯了,應(yīng)該是:
VICIntEnable = 0x00000050;                               // 使能UART0、Timer0中斷

測試后,中斷都正常了。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
與周工商榷SmartARM2200的復(fù)位電路設(shè)計
EASY ARM2200軟件升級
請教ZLGARM分散加載的問題,如圖設(shè)置。沒有生成hex文件
我的2100板子用不了了
調(diào)試信息被load到哪了?在哪執(zhí)行的?
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號