stm32F103 的UART5怎么用?

发布于 2018-05-02 18:57:50
大家好,因为板子要用到比较多的串口,所以需要将uart5也用起来。
看了代码,发现uart1-4都是用到了DMA,uart5是不支持DMA的,
那uart5口怎么用?是否可以提供一下代码,谢谢

查看更多

关注者
0
被浏览
3.5k
13 个回答
nongxiaoming
nongxiaoming 2018-05-02
使用中断收发就可以了
compagis
compagis 2018-05-03
重点是有没有代码可以提供一下:'(
moss
moss 2018-05-03
    rt_hw_serial_register(&serial1, "uart1",
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX |
RT_DEVICE_FLAG_INT_TX | RT_DEVICE_FLAG_DMA_RX,
uart);

注册的时候把 RT_DEVICE_FLAG_DMA_RX 去掉,打开的时候不要加 RT_DEVICE_FLAG_DMA_RX,其他抄一下
tcsun
tcsun 2018-10-22
问一下,你的改好没有?我改的可以发送,但一接收就死机:
msh >
msh >psr: 0x81000045
r00: 0x20000708
r01: 0x200002f0
r02: 0x20001758
r03: 0xffffffff
r04: 0x00000001
r05: 0xdeadbeef
r06: 0xdeadbeef
r07: 0xdeadbeef
r08: 0xdeadbeef
r09: 0xdeadbeef
r10: 0xdeadbeef
r11: 0xdeadbeef
r12: 0x00000000
lr: 0xfffffffd
pc: 0xbf180f00
hard fault on handler

mem manage fault:
SCB_CFSR_MFSR:0x01 IACCVIOL

知道是怎么回事吗?

fengye
fengye 2018-10-23
问题找到了吗?
我的串口5也是这个问题
moss
moss 2018-10-23
1. 可以加入cmbacktrace包查一下
2. 如果可以接调试器的话可以用调试器单步调试缩小范围
3. 加大线程buffer和uart5接收buffer试试
4. 最好用github上最新的代码,说不定你的问题已经解决了
xunnrtthread
xunnrtthread 2018-12-22
我用uart5作为shell 只能发送不能接收、
jacycle
jacycle 2019-07-17
tcsun 发表于 2018-10-22 18:53
问一下,你的改好没有?我改的可以发送,但一接收就死机:
msh >
msh >psr: 0x81000045


startup_stm32f103xb.s这个文件要选对,根据自己的芯片修改
jacycle
jacycle 2019-07-17
xunnrtthread 发表于 2018-12-22 16:22
我用uart5作为shell 只能发送不能接收、


startup_stm32f103xb.s这个文件需要修改成自己的型号,如startup_stm32f103xg.s
tcsun
tcsun 2019-07-20
jacycle 发表于 2019-7-17 23:05
startup_stm32f103xb.s这个文件需要修改成自己的型号,如startup_stm32f103xg.s


谢谢!
whj467467222
whj467467222 2019-07-20
xunnrtthread 发表于 2018-12-22 16:22
我用uart5作为shell 只能发送不能接收、


因为uart5只能实现半双工,shell使用的全双工,如果要用uart5实现shell,那么你需要修改代码来控制收发引脚。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友