| 但用bios 方式中断却没有中断产生不知为什么,下面这个程序有错吗?<br />我买的开发板,在上面做DM642做UART串口通信实验。它是由一个外围芯片TL16C752B提供两个中断请求信号INTA、INTB分别用于通道A和B申请TMS320DM642的中断。在DM642中,INTA和ITB相与,复用DM642的INT5.<br /><br />#include <csl.h><br />#include <csl_emifa.h><br />#include <csl_irq.h><br />#include <csl_chip.h><br />#include "stdio.h"<br /><br />#include "seeddm642.h"<br />#include "seeddm642_uart.h"<br /><br />/*SEEDDM642的emifa的设置结构*/<br />EMIFA_Config Seeddm642ConfigA ={<br />       0x00052078,/*gblctl EMIFA(B)global control register value */<br />                     /*将CLK6、4、1使能;将MRMODE置1;使能EK2EN,EK2RATE*/<br />       0xffffffd3,/*cectl0 CE0 space control register value*/<br />                     /*将CE0空间设为SDRAM*/<br />       0x73a28e01,/*cectl1 CE1 space control register value*/<br />                     /*Read hold: 1 clock;<br />                       MTYPE : 0000,选择8位的异步接口<br />                       Read strobe :001110;14个clock宽度<br />                       TA:2 clock; Read setup 2 clock;<br />                       Write hold :2 clock; Write strobe: 14 clock<br />                       Write setup :7 clock<br />                       --                     ---------------<br />                                    14c        /1c<br />                           ----------------/ */<br />       0x22a28a22, /*cectl2 CE2 space control register value*/<br />       0x22a28a42, /*cectl3 CE3 space control register value*/<br />       0x57115000, /*sdctl SDRAM control register value*/<br />       0x0000081b, /*sdtim SDRAM timing register value*/<br />       0x001faf4d, /*sdext SDRAM extension register value*/<br />       0x00000002, /*cesec0 CE0 space secondary control register value*/<br />       0x00000002, /*cesec1 CE1 space secondary control register value*/<br />       0x00000002, /*cesec2 CE2 space secondary control register value*/<br />       0x00000073 /*cesec3 CE3 space secondary control register value*/    <br />};<br /><br />SEEDDM642_UART_Config UartConfig ={<br />       0x01,/*寄存器IER*/<br />       0x57,/*寄存器FCR*/<br />       0x03,/*寄存器LCR*/<br />       0x08,/*寄存器MCR*/<br />};<br /><br />extern far void vectors();<br /><br />Uint8 IOreadback;<br />Uint16 buffer;<br />SEEDDM642_UART_Handle SEEDuartHandleA;<br />SEEDDM642_UART_Handle SEEDuartHandleB;<br /><br />/*此程序可将四个采集口的数据经过Video Port0送出*/<br />void main()<br />{<br />    <br />/*-------------------------------------------------------*/<br />/* perform all initializations                           */<br />/*-------------------------------------------------------*/<br />    /*Initialise CSL,初始化CSL库*/<br />    CSL_init();<br />/*----------------------------------------------------------*/<br />    /*EMIFA的初始化,将CE0设为SDRAM空间,CE1设为异步空间<br />     注,DM642支持的是EMIFA,而非EMIF*/<br />    EMIFA_config(&Seeddm642ConfigA);<br />/*----------------------------------------------------------*/<br />    IRQ_globalDisable();<br />    IRQ_nmiEnable();<br />    <br />    IRQ_enable(IRQ_EVT_EXTINT5);<br />    IRQ_globalEnable(); <br />    /*中断向量表的初始化*/<br />    //Point to the IRQ vector table<br />   <br />   <br />/*测试串口A*/<br />    /* Open UART */<br />    SEEDuartHandleA = SEEDDM642_UART_open(SEEDDM642_UARTA, <br />                                          SEEDDM642_UART_BAUD9600, <br />                                          &UartConfig);<br />    /*Open UARTB*/<br />    SEEDuartHandleB = SEEDDM642_UART_open(SEEDDM642_UARTB, <br />                                          SEEDDM642_UART_BAUD9600, <br />                                          &UartConfig);<br />     IRQ_setVecs(vectors);<br />     printf("Uart Test Begin... ");<br /><br />}<br /><br />    interrupt void uart_isr(void)<br />    {<br />      Uint16 Data_Temp;<br />      Data_Temp = SEEDDM642_UART_rget(SEEDuartHandleA,0);<br />      printf("DATA : %x
 ",Data_Temp);<br />    } <br />
 |