在RT-Thread Setting中的硬件界面,配置了串口,如下图
在内核界面,在“内核设备对象”中配置了“为rt_kprintf使用控制台”,并设置了串口为uart1
如下图
这时,使用如下程序进行串口发送
是正常的。
如果把二图中的“为rt_kprintf使用控制台”去掉,再使用rt_device_write发送数据,程序就会卡死
,卡死在了_serial_fifo_tx_blocking_nbuf函数中的
这一条程序。
最后会调用,rt_hw_hard_fault_exception
如果初始化了多个串口,在调用除rt_kprintf使用的那个串口时,也会进到rt_hw_hard_fault_exception
如果使用控制台串口进行数据发送的话,可以直接用rt_kprintf()就好了。
如果想用串口进行收发操作的话,最好不要跟控制台共用一个串口,换一路串口。串口的使用要先open,在调用control或者write函数,可以参考串口设备使用示例
我的问题是。
使用不同路时,会卡死,使用同一路时,正常的。
串口是先用rt_device_find查找到,是找到了的。
按我上面的程序,是已经open了的。
就是write的时候卡死了。