stm32F103 的UART5怎么用?

发表在 UART2018-5-2 18:57 [复制链接] 13 2985

大家好,因为板子要用到比较多的串口,所以需要将uart5也用起来。
6 x$ f+ W6 q1 R7 V/ f, M) R2 m看了代码,发现uart1-4都是用到了DMA,uart5是不支持DMA的,
7 C* g" i- _- L+ t0 e' E那uart5口怎么用?是否可以提供一下代码,谢谢( O. b/ m! |  P6 H
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2018-5-2 19:23:21 | 显示全部楼层
使用中断
使用道具 举报 回复
发表于 2018-5-2 19:34:42 | 显示全部楼层
使用中断收发就可以了
使用道具 举报 回复
发表于 2018-5-3 09:23:58 | 显示全部楼层
重点是有没有代码可以提供一下
使用道具 举报 回复
发表于 2018-5-3 11:33:44 | 显示全部楼层
  1.     rt_hw_serial_register(&serial1, "uart1",/ A5 B0 t7 v+ c) o) T1 @
  2.                           RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX |1 T* D; o9 Z5 v
  3.                           RT_DEVICE_FLAG_INT_TX |   RT_DEVICE_FLAG_DMA_RX,
    9 K, T0 w+ |& u  P  b: D: b
  4.                           uart);" p# _# v9 F- [* j- X, p  X
复制代码

7 F- \4 \' B4 }注册的时候把 RT_DEVICE_FLAG_DMA_RX 去掉,打开的时候不要加  RT_DEVICE_FLAG_DMA_RX,其他抄一下
使用道具 举报 回复
发表于 2018-5-3 13:47:29 | 显示全部楼层
感谢
/ t0 E% c$ p+ i! y- W/ v% K$ K
使用道具 举报 回复
发表于 2018-10-22 18:53:59 | 显示全部楼层
问一下,你的改好没有?我改的可以发送,但一接收就死机:
) R" M# D; {2 x* k* H  D4 E$ Tmsh >
* ]: j2 n. L! b2 a$ `: Smsh >psr: 0x81000045
9 b$ _" a" l5 S# L- ]6 n) Mr00: 0x20000708% e5 n+ S+ j  ^; j
r01: 0x200002f0$ n7 o7 M: y, N3 m1 l
r02: 0x20001758
) u, |# X' i* Xr03: 0xffffffff  L- S' w3 e# x
r04: 0x00000001, k5 e6 p" ^  Z
r05: 0xdeadbeef
8 N, d5 E8 a9 h8 M) gr06: 0xdeadbeef8 [$ x" J' f6 Q
r07: 0xdeadbeef7 y4 b; j5 C4 Z( G% \6 G) d
r08: 0xdeadbeef
% B$ j, V6 K# q) M4 Q. Q3 Ar09: 0xdeadbeef
0 W0 i6 E( ]  ir10: 0xdeadbeef
; W8 U7 H' b! c# B0 X" _6 p9 |r11: 0xdeadbeef' N! a2 O0 I  F
r12: 0x00000000/ E8 m; N4 c. T. F  k) A- N! t
lr: 0xfffffffd
9 P/ e3 a: t' w# O9 \4 X& x- ?$ ^# r4 d pc: 0xbf180f00
, K- ]- G' @3 ~2 p, O' ]hard fault on handler
" ?3 x! B) V. A
: p/ o$ j- i$ |9 G* n% hmem manage fault:$ O) N0 r0 |. J
SCB_CFSR_MFSR:0x01 IACCVIOL 2 q5 }+ |4 a; J- b# E3 e

$ a: I/ N& i- g) F) ]4 ]知道是怎么回事吗?
% c5 |( C+ e6 V% Z' |- O1 J/ Y9 ?' D7 C
' v4 V) z  V( _/ U) E  _- G4 ^
使用道具 举报 回复
发表于 2018-10-23 00:12:28 | 显示全部楼层
问题找到了吗?
0 n7 |" J$ I) X% a我的串口5也是这个问题
使用道具 举报 回复
发表于 2018-10-23 08:14:57 | 显示全部楼层
1. 可以加入cmbacktrace包查一下: z% k9 l/ H# ~* u/ P) c; o
2. 如果可以接调试器的话可以用调试器单步调试缩小范围+ ?9 E- o  F% G. ~
3. 加大线程buffer和uart5接收buffer试试  I9 F: M% z% ?8 J2 z6 b
4. 最好用github上最新的代码,说不定你的问题已经解决了
使用道具 举报 回复
发表于 2018-12-22 16:22:27 | 显示全部楼层
我用uart5作为shell 只能发送不能接收、
使用道具 举报 回复
发表于 2019-7-17 23:04:24 | 显示全部楼层
tcsun 发表于 2018-10-22 18:533 n1 j7 U# N) D  `4 L$ C
问一下,你的改好没有?我改的可以发送,但一接收就死机:
, y% N9 @& ?" l+ c" `8 `msh >
, L3 Z4 \" j# ]4 F: S3 t" Ymsh >psr: 0x81000045
$ }) v  f/ F% c/ f# X( y
startup_stm32f103xb.s这个文件要选对,根据自己的芯片修改
使用道具 举报 回复
发表于 2019-7-17 23:05:08 | 显示全部楼层
xunnrtthread 发表于 2018-12-22 16:22
" E- T# Z# B; L9 _4 r2 b我用uart5作为shell 只能发送不能接收、
$ v; ^7 m$ G4 |. w
startup_stm32f103xb.s这个文件需要修改成自己的型号,如startup_stm32f103xg.s
使用道具 举报 回复
发表于 2019-7-20 16:27:48 | 显示全部楼层
jacycle 发表于 2019-7-17 23:05" @$ c' c: b2 A* t
startup_stm32f103xb.s这个文件需要修改成自己的型号,如startup_stm32f103xg.s
0 @: [6 _" `( q: b! O4 P2 X
谢谢!
使用道具 举报 回复
发表于 2019-7-20 16:44:15 | 显示全部楼层
xunnrtthread 发表于 2018-12-22 16:22
) Y* B6 O/ ~) U% h我用uart5作为shell 只能发送不能接收、
* K3 i& I6 O: ~  ?8 S* e
因为uart5只能实现半双工,shell使用的全双工,如果要用uart5实现shell,那么你需要修改代码来控制收发引脚。
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表