串口1调通,初始化代码如下:
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调试成功,复制了串口1的初始化代码,修改了串口2的配置如下,但是没有调试成功:
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发送函数:
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函数初始化打印串口2发送数据,串口2的TX接电脑PC端的串口RX进行监听,目前没有监听到串口2发送的数据。接收电脑端的串口后,经过几次按demo板上的RESET键,都没有收到数据,判断当前串口2发送不正常。 同样的测试方法,串口1的发送正常,硬件上的接法正常,可以排除掉硬件上的接法不对问题。
串口2的TX引脚有复位功能,不知道是不是需要别的配置?