我参考的研旭6747的开发板,例程uart是查询方式,我想使用成中断方式,所以自己修改了只有uart的小程序,但是始终进不了中断,不知道初始化哪里有问题。
void main( void )
{
/* 初始化6747核 */
C6747_init();
PINMUX11 = 0x00001100; //UART1_TXD,UART1_RintXD
CSR&=0xfffe;
asm(" NOP 2 ");
/* 打开UART1,并设置波特率 */
Wuart_test(1);
INTmux1=0x2E0000; // 指定uart1 到中断
asm(" NOP 2 "); ISTP=0x80000000;
asm(" NOP 2 "); // 重置中断向量表到0C00h
ICR=0xfff0; asm(" NOP 2 ");
ISR=0x0; // 清除等待的中断
asm(" NOP 2 ");
IER=0xffff; CSR=CSR|0x1; //开总中断
while(1)
{
}
}
{
UART_Handle uart_handle;
Uint32 divisor;
volatile Uint16 dummy;
/*
* UART clk / baudrate
* = 150,000,000 / (900 * 16)
*/
divisor = 150000000 / ( baudrate * 16);
switch ( id )
{
case 0:
uart_handle = ( UART_Handle )&UART_MODULE_0;
break;
case 1:
uart_handle = ( UART_Handle )&UART_MODULE_1;
break;
case 2:
uart_handle = ( UART_Handle )&UART_MODULE_2;
break;
default:
return ( UART_Handle )-1;
}
uart_handle->regs->PWREMU_MGMT = 0; // Reset UART TX & RX components
C6747_wait( 100 );
uart_handle->regs->DLL = (divisor & 0xff); // Set baud rate
uart_handle->regs->DLH = (divisor >> 8);
uart_handle->regs->FCR = 0x0007; // Clear UART TX & RX FIFOs
uart_handle->regs->FCR = 0x0000; // Non-FIFO mode
uart_handle->regs->IER = 0x0007; // Enable interrupts
uart_handle->regs->LCR = 0x0003; // 8-bit words,
// 1 STOP bit generated,
// No Parity, No Stick paritiy,
// No Break control
uart_handle->regs->MCR = 0x0000; // RTS & CTS disabled,
// Loopback mode disabled,
// Autoflow disabled
uart_handle->regs->PWREMU_MGMT = 0xE001; // Enable TX & RX componenets
// Clear any pre-existing characters
dummy = uart_handle->regs->THR;
return uart_handle;
}
Shine:
重复帖。http://www.deyisupport.com/question_answer/dsp_arm/c6000_dsp/f/32/t/127785.aspx