开发板使用的是gd32f450zk,env工具使用的版本是1.3.5,rtthread版本是5.0.0。2个串口,一个串口打印,一个串口收发数据。 串口2作为打印调试口,串口0作为数据收发。 串口2打印调试口,测试是正常的,如下: 串口0使能,如果直接使用官方的串口测试例程,是正常的,如下:添加了rs232驱动软件包之后,测试发现,不仅数据发收口(串口0)不能使用,打印调试口2也不能使用了。
查看更多
只测试rs232软件包的发送函数,调试发现卡在了while((usart_flag_get(uart->uart_periph, USART_FLAG_TBE) == RESET));
static int gd32_uart_putc(struct rt_serial_device *serial, char ch){ struct gd32_uart *uart; RT_ASSERT(serial != RT_NULL); uart = (struct gd32_uart *)serial->parent.user_data; usart_data_transmit(uart->uart_periph, ch); while((usart_flag_get(uart->uart_periph, USART_FLAG_TBE) == RESET)); return RT_EOK;}
static int gd32_uart_putc(struct rt_serial_device *serial, char ch)
{
struct gd32_uart *uart;
RT_ASSERT(serial != RT_NULL);
uart = (struct gd32_uart *)serial->parent.user_data;
usart_data_transmit(uart->uart_periph, ch);
while((usart_flag_get(uart->uart_periph, USART_FLAG_TBE) == RESET));
return RT_EOK;
}
没发送完吧,里面估计卡死了
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部
直接使用官方文档中的串口设备demo,是可以正常收发的。
你用的什么编程啊,你将它直接改成串口2,在setting文件里面改吧。
@YZRD
说明 uart_periph 这个变量被修改了,不是指向 UART0 了。可以打断点看一下这个变量肯定不是任何串口外设首地址。
或者说,内存被破坏了
确实不是任何串口外设的首地址了,请问遇到这种情况有什么好的查找思路么?
@出出啊
我也遇到这个问题了,uart_periph被修改了