音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

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

二改《深入淺出ARM7—LPC213X/214X(上)》第163頁(yè)的程序4.11?

作者:上善若水 欄目:ARM技術(shù)
二改《深入淺出ARM7—LPC213X/214X(上)》第163頁(yè)的程序4.11?

同樣對(duì)于這個(gè)程序,我想不使用FIFO,其它設(shè)置和原程序相同,完整程序如下:
#include "config.h"
/* 定義串口模式設(shè)置數(shù)據(jù)結(jié)構(gòu) */
typedef struct UartMode
{
  
}
uint8 rcv_buf[];    // UART0數(shù)據(jù)接收緩沖區(qū)
volatile uint8 rcv_new;  // 接收新數(shù)據(jù)標(biāo)志
uint8 i=0;

/*
*********************************************************************************************************
** 函數(shù)名稱 :IRQ_UART0()
** 函數(shù)功能 :串口0接收中斷服務(wù)程序
*********************************************************************************************************
*/
void __irq IRQ_UART0 (void)
{
  //uint8 i;
  if ((U0IIR & 0x0F) == 0x04)
    rcv_new = 1;      // 設(shè)置接收到新的數(shù)據(jù)標(biāo)志
//for (i=0; i<4; i++)
  //{
    rcv_buf[i] = U0RBR;    // 讀取FIFO的數(shù)據(jù),并清除中斷
       
  //}
  VICVectAddr = 0x00;      // 中斷處理結(jié)束
}

/*
*********************************************************************************************************
** 函數(shù)名稱 :UART0_SendByte()
** 函數(shù)功能 :向串口0發(fā)送1字節(jié)數(shù)據(jù)
*********************************************************************************************************
*/
void UART0_SendByte (uint8 dat)
{
  U0THR = dat; // 要發(fā)送的數(shù)據(jù)
}

/*
*********************************************************************************************************
** 函數(shù)名稱 :UART0_SendBuf()
** 函數(shù)功能 :向串口發(fā)送8字節(jié)數(shù)據(jù)
** 入口參數(shù) :dat 要發(fā)送的數(shù)據(jù)
** 出口參數(shù) :無(wú)
*********************************************************************************************************
*/
void UART0_SendBuf (void)
{
//uint8 i;
  
  //for (i=0; i<4; i++)
    UART0_SendByte(rcv_buf[i]);
  while ((U0LSR & 0x20) == 0);   // 等待數(shù)據(jù)發(fā)送完畢
i++;
}

/*
*********************************************************************************************************
** 函數(shù)名稱 :UART0_Init()
** 函數(shù)功能 :串口初始化,設(shè)置工作模式和波特率。
*********************************************************************************************************
*/
int8 UART0_Init (uint32 baud, UARTMODE set)
{
  
}
/*
*********************************************************************************************************
** 函數(shù)名稱 :main()
*********************************************************************************************************
*/
int main (void)
{
  UARTMODE set;

  set.datab  = 8;
  set.stopb  = 1;
  set.parity = 0;
  
  rcv_new = 0;
  
  PINSEL0 = 0x00000005;          // 設(shè)置I/O連接到UART0
  
  UART0_Init(115200, set);       // 串口初始化
  U0FCR = 0x00;               // 使能FIFO,并設(shè)置觸發(fā)點(diǎn)為8字節(jié)
  U0IER = 0x01;               // 允許RBR中斷,即接收中斷
  
  IRQEnable();             // 使能IRQ中斷
  /* 使能UART0中斷 */
  VICIntSelect = 0x00000000;       // 設(shè)置所有的通道為IRQ中斷
  VICVectCntl0 = 0x20 | 0x06;      // UART0分配到IRQ slot0,即最高優(yōu)先級(jí)
  VICVectAddr0 = (uint32)IRQ_UART0;   // 設(shè)置UART0向量地址
  VICIntEnable = 1 << 0x06;      // 使能UART0中斷

  while (1)
  {
    if (rcv_new == 1)
    {  
       rcv_new =0;
       UART0_SendBuf();
    }
  }
    return 0;
}
運(yùn)行的結(jié)果是:無(wú)論發(fā)多少數(shù),沒有任何響應(yīng),不用FIFO就不能使用RBR的中斷了嗎?我改的這個(gè)程序錯(cuò)在哪里?

2樓: >>參與討論
zlgarm
re

if ((U0IIR & 0x0F) == 0x04);
改為
i=U0IIR;(讀取U0IIR以清除中斷標(biāo)志,并不是將值賦給i,當(dāng)然也可以用其他變量)

* - 本貼最后修改時(shí)間:2006-1-4 14:14:03 修改者:zlgarm

3樓: >>參與討論
上善若水
請(qǐng)問zlgarm
我好笨啊,考慮了好長(zhǎng)時(shí)間還是沒能明白您說這種改動(dòng)的道理。為什么要將中斷標(biāo)志付給i呢?麻煩您再給詳細(xì)的解釋一下。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請(qǐng)教周工,LPC2210的UART0能否實(shí)現(xiàn)9位數(shù)據(jù)通信
LPC2000 Flash Utility的問題
請(qǐng)教(Compilation aborted!)
easyd12.dll
程序不執(zhí)行條件比較的的怪問題,請(qǐng)教!。。!
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)