//串口代码如下
void Blue_Init(void)
{
//串口时钟使能
CLK_EnableModuleClock(UART0_MODULE);
//串口时钟选择HIRC(48MHZ)
CLK_SetModuleClock(UART0_MODULE,CLK_CLKSEL1_UART0SEL_HIRC,CLK_CLKDIV0_UART0(1));
//串口管脚复用PA14:TXD0/PA15:RXD0
SYS->GPA_MFPH=(SYS->GPA_MFPH & ~(SYS_GPA_MFPH_PA14MFP_Msk | SYS_GPA_MFPH_PA15MFP_Msk)) |\
(SYS_GPA_MFPH_PA14MFP_UART0_TXD | SYS_GPA_MFPH_PA15MFP_UART0_RXD);
//复位串口
SYS_ResetModule(UART0_RST);
//打开串口波特率115200
UART_Open(UART0, 57600);
Blue_NVInit();
}
void Blue_NVInit(void)
{
//打开串口0的中断
NVIC_EnableIRQ(UART02_IRQn);
//设置中断优先级
NVIC_SetPriority(UART02_IRQn,1);
//打开串口的发送/接收中断使能
UART_EnableInt(UART0,(UART_INTEN_THREIEN_Msk|UART_INTEN_RDAIEN_Msk));
}
现在的问题是一直进入中断?但是规格书上面写的寄存器是只读没有写的标志,所以没有清除标志的函数。
//串口0/2中断服务函数
void UART02_IRQHandler(void)
{
if(UART_GET_INT_FLAG(UART0,UART_INTSTS_THREINT_Msk))
{
Blue_Tx_IT();
}
if(UART_GET_INT_FLAG(UART0,UART_INTSTS_RDAINT_Msk))
{
Blue_Rx_IT();
}
}
发帖问问大家怎么办?
|