stm32F103 的UART5怎么用?

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

大家好,因为板子要用到比较多的串口,所以需要将uart5也用起来。( }, X+ T9 v( ?! _0 S: a) h0 x; T" j( J
看了代码,发现uart1-4都是用到了DMA,uart5是不支持DMA的,
( n' w4 {  t. E8 u% \那uart5口怎么用?是否可以提供一下代码,谢谢* a8 i+ o2 m( Q" s* A- G
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 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",( p2 S& L  b1 u0 w  g! n
  2.                           RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX |# z( L0 i9 u& A% E7 ^+ k4 E
  3.                           RT_DEVICE_FLAG_INT_TX |   RT_DEVICE_FLAG_DMA_RX,6 f# h  [* a  E; x' N6 R
  4.                           uart);
    9 _( X3 h7 n; W0 U: O
复制代码

2 l  b$ X) N9 P; Y; U4 S注册的时候把 RT_DEVICE_FLAG_DMA_RX 去掉,打开的时候不要加  RT_DEVICE_FLAG_DMA_RX,其他抄一下
使用道具 举报 回复
发表于 2018-5-3 13:47:29 | 显示全部楼层
感谢
; `( `. g3 ^3 T2 T+ t
使用道具 举报 回复
发表于 2018-10-22 18:53:59 | 显示全部楼层
问一下,你的改好没有?我改的可以发送,但一接收就死机:6 g9 u1 n1 k+ j6 n- {
msh >
+ n1 E) k" x' W" ?msh >psr: 0x81000045. a" E7 v8 p7 ^- g
r00: 0x20000708$ Q5 q0 E9 R+ z1 e
r01: 0x200002f09 \) o/ h6 |' l4 G
r02: 0x20001758! a/ P5 G$ J# O) ]" G. q& g
r03: 0xffffffff  `3 x# X! Q  ~3 P+ R9 h
r04: 0x000000015 \% _6 n% u; N5 [
r05: 0xdeadbeef& A6 u2 o+ a( E4 E) f' n4 [
r06: 0xdeadbeef
: U, S5 F2 t$ y% z! `" u$ E+ K9 ~8 Er07: 0xdeadbeef( ~& y4 ~0 S, T7 o) A8 ^$ H6 N
r08: 0xdeadbeef
; K' u3 |$ d- o, T- t9 ^: Wr09: 0xdeadbeef- m3 F. L; `" A1 }
r10: 0xdeadbeef
1 n" P" r, L, S- g5 d( Lr11: 0xdeadbeef
* F# A; f0 l, yr12: 0x00000000
. ^. }6 B' E! a lr: 0xfffffffd
& p) O' y: ~4 @9 w% N2 o1 r pc: 0xbf180f00
3 d3 W% C: Z4 N, w, C- jhard fault on handler
* L& {0 l, F+ |3 B  `5 B4 T" F  J' y
mem manage fault:, o# P1 N6 D# z  [1 {
SCB_CFSR_MFSR:0x01 IACCVIOL
6 p% r" W. H8 r. T8 _, `2 [, I
' W7 e4 ~# M; B; u5 s& ~0 e知道是怎么回事吗?6 s8 Y* z& w* f& P' w! U" F

# q+ }0 F4 \* O; @) A# d( H
使用道具 举报 回复
发表于 2018-10-23 00:12:28 | 显示全部楼层
问题找到了吗?
/ f9 ?4 ]( s3 @我的串口5也是这个问题
使用道具 举报 回复
发表于 2018-10-23 08:14:57 | 显示全部楼层
1. 可以加入cmbacktrace包查一下
4 Q5 r5 f1 N8 J5 K2. 如果可以接调试器的话可以用调试器单步调试缩小范围
- C% j0 X- U2 y3. 加大线程buffer和uart5接收buffer试试
7 b2 l% ^  h8 q+ M4 Z$ [! E4. 最好用github上最新的代码,说不定你的问题已经解决了
使用道具 举报 回复
发表于 2018-12-22 16:22:27 | 显示全部楼层
我用uart5作为shell 只能发送不能接收、
使用道具 举报 回复
发表于 2019-7-17 23:04:24 | 显示全部楼层
tcsun 发表于 2018-10-22 18:53
  H+ o: P  |, I: M( m* i6 @8 k问一下,你的改好没有?我改的可以发送,但一接收就死机:
4 n* Y* S$ F8 {6 `/ cmsh >
1 t: R4 {0 x! P+ }msh >psr: 0x81000045

7 A, S2 }* z! f' @6 dstartup_stm32f103xb.s这个文件要选对,根据自己的芯片修改
使用道具 举报 回复
发表于 2019-7-17 23:05:08 | 显示全部楼层
xunnrtthread 发表于 2018-12-22 16:222 ?# c- i2 _3 m( W9 \2 p6 T9 I
我用uart5作为shell 只能发送不能接收、

, G. T! J0 D' lstartup_stm32f103xb.s这个文件需要修改成自己的型号,如startup_stm32f103xg.s
使用道具 举报 回复
发表于 2019-7-20 16:27:48 | 显示全部楼层
jacycle 发表于 2019-7-17 23:05
( p! b; R+ a4 L6 G, e* tstartup_stm32f103xb.s这个文件需要修改成自己的型号,如startup_stm32f103xg.s
8 S6 u, Y; Z/ {
谢谢!
使用道具 举报 回复
发表于 2019-7-20 16:44:15 | 显示全部楼层
xunnrtthread 发表于 2018-12-22 16:22
) W/ m9 F6 G" Y# R$ s; [我用uart5作为shell 只能发送不能接收、

5 A. u. l; n6 |, t1 }因为uart5只能实现半双工,shell使用的全双工,如果要用uart5实现shell,那么你需要修改代码来控制收发引脚。
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

Powered by RT-Thread

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