void UART1Init(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIOPinConfigure(GPIO_PB0_U1RX);
GPIOPinConfigure(GPIO_PB1_U1TX);
GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1);
UARTConfigSetExpClk(UART1_BASE, SysCtlClockGet(), 115200,(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |UART_CONFIG_PAR_NONE));
//IntRegister(UART1_BASE,UART1IntHandler);
MAP_UARTIntDisable(UART1_BASE, 0xFFFFFFFF);
UARTIntEnable(UART1_BASE,UART_INT_RX|UART_INT_RT);
//UARTIntEnable(UART1_BASE,UART_INT_TX);
IntEnable(INT_UART1);
UARTEnable(UART1_BASE);
}
u8 Tx1Buffer[256];
u8 Tx1Counter=0;
u8 count1=0;
u8 com_data;
void UART1IntHandler(void)
{
uint32_t ulStatus;
ulStatus = UARTIntStatus(UART1_BASE,true);
if( ulStatus== UART_INT_RX )
{
UARTIntClear(UART1_BASE,UART_INT_RX);
com_data = HWREG(UART1_BASE + UART_O_DR);
//ANO_DT_Data_Receive_Prepare(com_data);
}
else if(ulStatus== UART_INT_TX )
{
HWREG(UART1_BASE + UART_O_DR) = Tx1Buffer[Tx1Counter++];
UARTIntClear(UART1_BASE,UART_INT_TX);
if(Tx1Counter == count1)
{
UARTIntDisable(UART1_BASE,UART_INT_TX);
}
}
else UARTIntClear(UART1_BASE,ulStatus);
}
void UART1Send(unsigned char *DataToSend ,u8 data_num)
{
u8 i;
for(i=0;i<data_num;i++)
{
Tx1Buffer[count1++] = *(DataToSend+i);
}
UARTIntEnable(UART1_BASE,UART_INT_TX);
}
不知道为什么一直进不了发送中断,这是我的主循环函数。
UART1Send(&a,1);
DelayUs(100000);
这是在住循环里运行的。总中断已打开,中断函数也注册了
DCD UART1IntHandler
extern UART1IntHandler
不明白啊,求解答。