C6743 串口接收中断、定时中断都有问题,中断相关的寄存器已经设置了,出口不采用中断时能正常收发,就是中断进不去???一直找不到原因,还望大神指教
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
C6743 串口接收中断、定时中断都有问题,中断相关的寄存器已经设置了,出口不采用中断时能正常收发,就是中断进不去???一直找不到原因,还望大神指教
恩,好的
void initTIMER0(void)
{
// 设置中断控制寄存器
CSR&=0xfffffffe; // 关中断 GIE=0
ISTP=0x00820000; // 重置中断向量表到0C00h
INTmux1=0x0400;
ICR=0xfff0; // 清除等待的中断
ISR=0x00;
IER=0x23; // 使能int4中断
TIMER0_TGCR=0x00000015; //采用32位独立定时器12
TIMER0_TIM12=0;
TIMER0_PRD12=11999999; //周期值,改变其值的大小可以改变灯的亮灭频率
TIMER0_INTCLSTAT=0x1; //开定时器中断
TIMER0_TRC=0x00000080; //开定时器
CSR=CSR|1; // 开中断
}
手动置IFR可以进中断,说明中断配置没问题。
IFR不置1,标识timer定时器没有产生中断,我看到TIMER0_PRD12=11999999;周期设得挺大的,你可以试试多等一会儿看会不会进中断或者把周期值改小。
串口配置代码贴出来看看,如果手动设置IFR还是进不了中断,可能中断配置方面有问题。
跟周期指好像没有关系的,我定时器中断程序运行了好长时间都没进中断,周期值也改小过,依旧进不了中断。。。。。
串口配置代码:
void Wuart_test()
{
//设置中断控制寄存器
CSR&=0xfffffffe; // 关中断 GIE=0
asm(" NOP 2 ");
/* 打开UART1,并设置波特率 */
/*
* UART clk / baudrate
* = 150,000,000 / (900 * 16)
*/
divisor = 150000000 / ( 9600 * 16);
switch ( 2 )
{
case 0:
uart0 = ( UART_Handle )&UART_MODULE_0;
break;
case 1:
uart0= ( UART_Handle )&UART_MODULE_1;
break;
case 2:
uart0 = ( UART_Handle )&UART_MODULE_2;
break;
default:
uart0 = ( UART_Handle )-1;
}
uart0->regs->PWREMU_MGMT = 0; // Reset UART TX & RX components
C6747_wait( 100 );
uart0->regs->DLL = (divisor & 0xff); // Set baud rate
uart0->regs->DLH = (divisor >> 8);
uart0->regs->FCR = 0x0007; // Clear UART TX & RX FIFOs
uart0->regs->FCR = 0x0000; // Non-FIFO mode
uart0->regs->IER = 0x0001; // Enable interrupts
uart0->regs->LCR = 0x0003; // 8-bit words,
// 1 STOP bit generated,
// No Parity, No Stick paritiy,
// No Break control
uart0->regs->MCR = 0x0000; // RTS & CTS disabled,
// Loopback mode disabled,
// Autoflow disabled
uart0->regs->PWREMU_MGMT = 0xE001; // Enable TX & RX componenets
// Clear any pre-existing characters
dummy = uart0->regs->THR;
ISTP=0x00820000; // 重置中断向量表到0C00h
INTmux1=0x4500;
ICR=0xfff0; // 清除等待的中断
//ISR=0x20;
IER=0x23; // 使能int4中断
CSR=CSR|1; // 开中断
}