串口1調(diào)通,初始化代碼如下:
void my_uart1_init(void)
{
??????? /* 配置串口1:先配置IO口模式,再配置串口 */
??????? GPIOA_SetBits(GPIO_Pin_9);
??????? GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);????? // RXD-配置上拉輸入
??????? GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA); // TXD-配置推挽輸出,注意先讓IO口輸出高電平
??????? UART1_DefInit();
??????? //中斷配置
??????? UART1_ByteTrigCfg(UART_1BYTE_TRIG);
??????? UART1_INTCfg(ENABLE, RB_IER_RECV_RDY | RB_IER_LINE_STAT);
??????? PFIC_EnableIRQ(UART1_IRQn);
}
基于串口1調(diào)試成功,復(fù)制了串口1的初始化代碼,修改了串口2的配置如下,但是沒(méi)有調(diào)試成功:
void my_uart2_init(void)
{
??? /* 配置串口2:先配置IO口模式,再配置串口 */
??? GPIOB_SetBits(GPIO_Pin_23);
??? GPIOB_ModeCfg(GPIO_Pin_22, GPIO_ModeIN_PU);????? // RXD-配置上拉輸入
??? GPIOB_ModeCfg(GPIO_Pin_23, GPIO_ModeOut_PP_5mA); // TXD-配置推挽輸出,注意先讓IO口輸出高電平
??? UART2_DefInit();
??? //中斷配置
??? UART2_ByteTrigCfg(UART_1BYTE_TRIG);
??? UART2_INTCfg(ENABLE, RB_IER_RECV_RDY | RB_IER_LINE_STAT);
??? PFIC_EnableIRQ(UART2_IRQn);
}
串口2發(fā)送函數(shù):
uint8_t LLT_Uart2_Send_Byte(uint8_t dat)
{
??? if(R8_UART2_TFC != UART_FIFO_SIZE)
??? {
??????? R8_UART2_THR = dat;
??????? return 1;
??? }
??? else
??? {
??????? return 0;
??? }
??? return 0;
}
int main(void)
{
??? SetSysClock(CLK_SOURCE_PLL_60MHz);
?? my_uart2_init();
?? LLT_Uart2_Send_Byte(0x38);
?? LLT_Uart2_Send_Byte(0x38);
?? LLT_Uart2_Send_Byte(0x38);
?? LLT_Uart2_Send_Byte(0x38);
}
在main函數(shù)初始化打印串口2發(fā)送數(shù)據(jù),串口2的TX接電腦PC端的串口RX進(jìn)行監(jiān)聽(tīng),目前沒(méi)有監(jiān)聽(tīng)到串口2發(fā)送的數(shù)據(jù)。接收電腦端的串口后,經(jīng)過(guò)幾次按demo板上的RESET鍵,都沒(méi)有收到數(shù)據(jù),判斷當(dāng)前串口2發(fā)送不正常。 同樣的測(cè)試方法,串口1的發(fā)送正常,硬件上的接法正常,可以排除掉硬件上的接法不對(duì)問(wèn)題。
串口2的TX引腳有復(fù)位功能,不知道是不是需要?jiǎng)e的配置?