| 问题已经解决了!经过3天折腾,通过示波器排除硬件问题,还是初始化函数的问题,GD32 IrDA 除了正常的串口配置之外,还需要加入IrDA 使能,正常工作模式,设置频率(不设置频率可以发送,不能接收)。 GD32F450代码如下:
 void gd_eval_com_init(uint32_t com)
 {
 /* enable GPIO clock */
 uint32_t COM_ID;
 if(EVAL_COM1 == com)
 {
 COM_ID = 0U;
 }
 
 rcu_periph_clock_enable( EVAL_COM_GPIO_CLK);
 
 /* enable USART clock */
 rcu_periph_clock_enable(COM_CLK[COM_ID]);
 
 /* connect port to USARTx_Tx */
 gpio_af_set(EVAL_COM_GPIO_PORT, EVAL_COM_AF, COM_TX_PIN[COM_ID]);
 
 /* connect port to USARTx_Rx */
 gpio_af_set(EVAL_COM_GPIO_PORT, EVAL_COM_AF, COM_RX_PIN[COM_ID]);
 
 /* configure USART Tx as alternate function push-pull */
 gpio_mode_set(EVAL_COM_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP,COM_TX_PIN[COM_ID]);
 gpio_output_options_set(EVAL_COM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,COM_TX_PIN[COM_ID]);
 
 /* configure USART Rx as alternate function push-pull */
 gpio_mode_set(EVAL_COM_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP,COM_RX_PIN[COM_ID]);
 gpio_output_options_set(EVAL_COM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,COM_RX_PIN[COM_ID]);
 
 /* USART configure */
 usart_deinit(com);
 usart_baudrate_set(com,9600U);
 usart_stop_bit_set(com, USART_STB_1BIT);
 
 usart_receive_config(com, USART_RECEIVE_ENABLE);
 usart_transmit_config(com, USART_TRANSMIT_ENABLE);
 
 usart_irda_lowpower_config(com, USART_IRLP_NORMAL);
 usart_prescaler_config(com, 0x01);
 usart_irda_mode_enable(com);
 
 usart_enable(com);
 
 /* USART interrupt configuration */
 nvic_irq_enable(UART3_IRQn, 1, 1);
 /* enable USART0 receive interrupt */
 usart_interrupt_enable(UART3, USART_INTEN_RBNEIE);
 //                /* enable USART0 transmit interrupt */
 //                usart_interrupt_enable(USART0, USART_INTEN_TBEIE);
 }
 |