【外设及组件精华帖及常见问题汇总】

置顶 精华 发表在 BSP2019-1-25 17:21 [复制链接] 11 6174

本帖最后由 misonyo 于 2019-1-29 17:29 编辑
2 K. U3 v# I7 O* |" C) H+ _8 r. i! f& `! X
* z( P5 g% Q+ d  H% ^; ?, o

外设及组件使用精华帖汇总

! f9 q& z/ q+ E) B& X# d4 Z

串口设备

) a7 B2 {1 i  }. B9 w* M: x. f   {! F. ]4 V& m, X( k  l! o

I2C 设备

8 ]! l2 x" X' K" Y# `' O6 Z3 \- z, U! H

SPI 设备

/ m4 N. O6 u2 m2 ?' \0 E   O9 }1 O; m1 ?. n0 q) ~/ Y

RTC 设备

& I- s& k( O7 ?% h' m/ R+ j 5 V$ |' u. ~6 g- h; f# |8 f9 Y1 _8 T

PIN 设备

1 p$ ^4 j% R4 S6 Q# |; a( f7 H' T* ?& ~

文件系统

5 ~+ D; A0 W+ a# o3 ^% q- N" Z + B  U6 A, ~3 f# c5 u, A) W

FinSH

+ m  F+ g7 {& C * U3 D( N" Y9 _; D  o4 o" X7 O

软件包

" b/ D: q. I7 X3 x% C  } 9 S0 [/ j: S, b

其他

, Y, B! _4 b4 Z* Y: k/ ^5 c4 z6 |3 [/ {4 E2 ]) @

外设及组件使用常见问题汇总

; P( d) s! u( u! H

Q: 新 bsp/stm32 BSP 怎么使用串口 DMA 模式。

# V9 c& M7 t3 @+ [, {

A:

9 t  ]) c6 C( A: n% R
    3 H( `8 g& @. k# \
  • 首先在 menuconfig 里面使能串口的 DMA 模式,如下图所示使能串口 3 的 DMA 接收模式:
  • $ s# X( M. c. Q0 h) K' ]. E) B% s
% S- ]' ]0 H) Q( y: [) t

uart-dma-rx.png

! ?- `* I6 ]' F* L8 p7 z
    - n8 `: t2 E$ H" `5 D
  • 然后打开串口时使用 RT_DEVICE_FLAG_DMA_RX 参数打开:
  • $ t4 c6 v' d8 q- D( j
% `  I( y+ [! t) v8 F: v
#define SAMPLE_UART_NAME       "uart3"  /* 串口设备名称 */
: {% h5 D1 a4 q9 W4 U( Ystatic rt_device_t serial;              /* 串口设备句柄 */
+ o$ f' W% j% c9 l# a9 [( w9 O! U/* 查找串口设备 */" M" |2 j' {' [7 Y$ A) }9 d
serial = rt_device_find(SAMPLE_UART_NAME);
# B" ~! w: z% V: g' Z# k! Z. }# }
/* 以 DMA 接收及轮询发送模式打开串口设备 */9 d" Y! R4 F: d
rt_device_open(serial, RT_DEVICE_FLAG_DMA_RX);
; J) R( E! N% g% O8 X4 R& `

Q: 串口接收不定长数据该怎么处理?

3 w3 ?$ L- x3 B  T- K+ j

A:

5 N- u- j% `8 I' y* l4 E+ s% ~3 G
    $ ^6 w. q) o1 j
  • / c- E+ D- {! r$ G- n( r

    参考帖子 玩溜 GD32303E-EVAL BSP 系列(二)---- 读取 GPS 传感器数据 提供的源代码。开发板通过串口获取 GPS 传感器的数据, 使用事件和串口接收回调函数配合接受数据与解析数据。

    9 ^% D. |- g7 ~" i* O0 I6 U# B* k! y
  • / w9 s1 e8 s0 `: t
  • 参考 dwin 屏幕 的使用, 主要利用 sem 信号量与串口接收回调函数配合接受数据与解析数据。
  • 1 g: E$ D9 c. C3 m& o0 M
+ F# D6 Y* x) r+ r$ g2 E) N

Q: 串口发送数据时,当发送数据 0x0A 时,会被自动转换为 0x0D 0x0A 两个字节发送。

5 x, U- U. R/ q! |7 _3 b) \& W! r" u! q

A: 串口使用 RT_DEVICE_FLAG_STREAM 方式打开或者注册时,输出的字符是 "\n" 时,会自动在前面补一个 "\r" 做分行。

+ B/ K9 u) C. V6 a' G/ V& f

Q: 新 STM32 BSP(bsp/stm32) SPI 驱动提供的 rt_hw_spi_device_attach() 怎么使用,要挂载一个新的设备怎么操作?

3 r, q7 f1 [* D) t4 F3 O1 t2 |

A:

3 a6 B1 R6 {9 H4 i. a" E; t7 F( t
    % N: ]' {. T* i* L
  • 3 ]" X0 C1 ]+ \0 g

    可以参考 RT-Thread 官方文档 SPI 设备章节对挂载 SPI 设备的介绍。

    $ S( q: ]4 A6 e& g3 m
  • 4 ?* z5 X3 C' L/ h& h
  • 一般 SPI 总线命名原则为 spix, SPI 设备命名原则为 spixy ,如 spi10 表示挂载在 spi1 总线上的 0 号设备。
  • 6 @: v. [+ Y* Y  x4 t! v
6 p+ Q1 A/ p6 G( ?
    ; A6 ]* W- W- x+ C' |$ s
  1. * z, F3 F$ |4 z% f3 g' \+ q! x4 e) Z% p

    先注册 SPI 总线,名称一般为 spi1,spi2。注册成功可使用 list_device 查看。

    " H: M8 g2 w* U, C
  2. 1 h9 K! ~7 s! H6 j  W
  3. 然后挂载 SPI 设备到 SPI1 总线上,SPI 设备名称为 spi10。
  4. 5 j. ^) ^" t/ q  ^: k* ~
7 u; |; o, ?; s" e7 |! ~3 Y( C- |

Q: 在中断 ISR 中调用 SPI 发送数据相关函数,导致 assertion 报错。Function[rt_mutex_take] shall not be used in ISR,assertion failed at function:rt_mutex_take, line number:656。

" j5 y% i+ s6 ?9 {/ n

A: RT-Thread SPI 和 I2C 数据收发相关函数会调用 rt_mutex_take(),此函数不能再中断函数中使用。

+ c* \( B% L" {4 a* Y' \9 s

Q: RT-Thread  I2C 的数据传输接口使用的从机地址不包含读写位!

0 m! j+ J" C" `1 l0 g! ^( X! O

A: RT-Thread I2C驱动框架对地址和读写位是分开处理的,底层发送的地址数据时会将地址左移 1 位再或上读写位。

0 I: I" o. h9 l8 B
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-1-25 20:00:13 | 显示全部楼层
使用道具 举报 回复
发表于 2019-1-28 13:43:57 | 显示全部楼层
d=====( ̄▽ ̄*)b
使用道具 举报 回复
发表于 2019-6-3 14:41:41 | 显示全部楼层
STM32 H750板子,H743的内核是否支持?
使用道具 举报 回复
发表于 2019-6-3 15:10:53 | 显示全部楼层
戎传林 发表于 2019-6-3 14:41) @) j( m; Y' M% E5 Z. u$ F
STM32 H750板子,H743的内核是否支持?
( m3 u3 I& u1 ]' k. o6 {1 X
模拟IIC可以用,其他的不知道。
使用道具 举报 回复
发表于 2019-6-4 10:22:44 | 显示全部楼层
whj467467222 发表于 2019-6-3 15:10  l* j0 z: a- B2 V4 t4 F* F7 x
模拟IIC可以用,其他的不知道。
7 ]/ O# B0 F3 n5 v- S
模拟IIC就是两个GPIO,板子都可以跑吧。我想知道RT-Thread系统,能不能在H750上运行
使用道具 举报 回复
发表于 2019-6-4 11:38:51 | 显示全部楼层
戎传林 发表于 2019-6-4 10:22
. f+ w; o% s( J9 F4 p模拟IIC就是两个GPIO,板子都可以跑吧。我想知道RT-Thread系统,能不能在H750上运行 ...

5 E- C' ~, }; z4 [8 y0 z可以的,而且我认识的人,已经在用了,因为不是开发板所以就没有PR。
使用道具 举报 回复
发表于 2019-6-5 09:50:39 | 显示全部楼层
whj467467222 发表于 2019-6-4 11:38
/ S2 w9 y/ F: Q' U可以的,而且我认识的人,已经在用了,因为不是开发板所以就没有PR。
4 {/ _' J1 U( e% m- D
好的,谢谢哈
使用道具 举报 回复
发表于 2019-6-12 17:58:54 | 显示全部楼层
戎传林 发表于 2019-6-4 10:22. Z% O! A9 Y) M% a( `! F
模拟IIC就是两个GPIO,板子都可以跑吧。我想知道RT-Thread系统,能不能在H750上运行 ...
; \: z: j2 y: |3 ~
目前尚未有针对H750的BSP,不过有针对stm32h743-atk-apollo的BSP,https://github.com/RT-Thread/rt- ... tm32h743-atk-apollo,可以尝试参考它自己做一份针对H750的BSP噢
使用道具 举报 回复
发表于 2019-6-19 09:56:03 | 显示全部楼层
STM32的BSP通用模板什么时候把L0xx的加进来啊?
使用道具 举报 回复
发表于 2019-7-18 16:53:06 | 显示全部楼层
mark
使用道具 举报 回复
发表于 2019-8-26 19:53:28 | 显示全部楼层
果断收藏哈哈哈,AN文档看的很爽
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

Powered by RT-Thread

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