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

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

本帖最后由 misonyo 于 2019-1-29 17:29 编辑
5 W( I: M% W6 Z
- D, L. e( q5 C6 L! t" N
" {) ^! n* j/ }1 C3 [" u

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

# e4 ^. V% a& V! g7 r3 z+ z. V

串口设备

! R& G0 R+ [% R4 S * L0 o, d& C/ `8 z0 F

I2C 设备

' D* h" h$ |6 ]% U. `* F. ~* | 4 f% Q/ D+ k. K2 S/ K+ t

SPI 设备

, R2 Y: p+ |1 S* j( _7 J2 D' [" `* q; F8 @0 U  H9 @) c

RTC 设备

" D. d3 p8 E; c: ]  A3 L! D# E0 t/ ]1 @5 ]

PIN 设备

2 }0 @5 b( ?' X' A 1 Y" c' W9 [7 e; v6 C/ \2 j

文件系统

  p9 K+ `0 z8 J4 B, m) @. s 6 H/ C0 w5 k+ r

FinSH

; H' [; |0 ~" d" L ; L; x3 p: m8 E  g: J

软件包

) K+ H0 F9 C3 @8 v8 O; f: U% T/ v9 G/ K3 z' k8 [6 l! I

其他

8 J& {* @/ f) f$ V# G# S& @3 \. ~5 R" K

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

( b8 U2 l/ N7 ]# k: i: o

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

# t# f/ n/ d* }

A:

& Y& R+ V9 ]2 I* Z
    7 E$ `, e" a. D: Z
  • 首先在 menuconfig 里面使能串口的 DMA 模式,如下图所示使能串口 3 的 DMA 接收模式:
  • ; a# ~" |" z: \( K, C
$ t" l3 Q- i* W. h* }4 L7 M

uart-dma-rx.png

8 [! S- [$ Y. C. H- [  x: n
    ! }+ Q5 c4 r7 Y  G; ~" t" S( k
  • 然后打开串口时使用 RT_DEVICE_FLAG_DMA_RX 参数打开:
  • % j3 Z) e: R2 Y; ]5 ^/ ^: ~+ o
) f) p+ O& e' [
#define SAMPLE_UART_NAME       "uart3"  /* 串口设备名称 */, f- b( @9 [' Y/ D6 |/ m
static rt_device_t serial;              /* 串口设备句柄 */0 ~' n  K- d4 I; d7 p! R$ p3 H
/* 查找串口设备 */
% O# s5 S% O8 z3 t+ U2 z( ]+ X$ j, xserial = rt_device_find(SAMPLE_UART_NAME);
9 w* O) k: F, Q/ ~0 [5 }+ T4 X) k
1 d% n5 Q" N1 c5 p9 D/* 以 DMA 接收及轮询发送模式打开串口设备 */
8 s0 `+ p% M5 [( [; S% Q* prt_device_open(serial, RT_DEVICE_FLAG_DMA_RX);
0 k8 d2 r" T* y/ n6 K% t

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

# p7 Y3 T0 T7 _4 n0 r: U8 P

A:

8 ]  i( T% W1 n/ Y& S1 D; Y
    . ?' [. ~3 X2 V; P& Y
  • 5 T4 M0 @& Y" u2 ~* O

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

    ; a- i, y8 o: s' r
  •   Z! y# O8 \; U! g( E7 b- h
  • 参考 dwin 屏幕 的使用, 主要利用 sem 信号量与串口接收回调函数配合接受数据与解析数据。
  • . }6 H' X# S9 k5 X* P! f, Y
; ?9 A4 D5 e0 Y. J; }0 m6 ?" @

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

" c2 N! m8 L. K/ B: t8 F7 Z' B+ `

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

" Z8 t6 P8 A9 L6 `; k0 J

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

2 [: x  l/ J! v8 f0 @- N

A:

+ w( C, B  n8 B) e1 z; ?: l3 k
    ' W0 J% s3 U  {4 ^
  • : C; t: \+ ?6 x8 p, K) a" c

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

    / v# `# ^8 @' M# u; E$ [0 ?' d( ^
  •   ~1 c) F& ?2 `6 s
  • 一般 SPI 总线命名原则为 spix, SPI 设备命名原则为 spixy ,如 spi10 表示挂载在 spi1 总线上的 0 号设备。
  • 7 v8 [( w+ G  L* Z. F3 N
; H4 _# X- U+ h% h  [& J+ |4 T* v3 k
    5 o2 o& m! N" s1 G& Z
  1.   A, I$ B& A6 z2 S% n

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

    - E& ~  r, {8 k4 U
  2. $ ]# y) f" b6 u1 \% h% G
  3. 然后挂载 SPI 设备到 SPI1 总线上,SPI 设备名称为 spi10。
  4. 5 |" Q6 \. u% b" `# ^: o- H
; b' H$ R0 L$ g3 x

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

& I( I6 o: z  m* D: g! Q$ u

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

6 j9 x$ p- G- w* W) ?/ S; t

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

$ J6 s" g' q( |; ^

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

9 Y, H7 ]/ h5 M' ]6 F
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 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
) {4 z5 T/ N' _, ^STM32 H750板子,H743的内核是否支持?

" l2 J  E' I% [" i$ R& g模拟IIC可以用,其他的不知道。
使用道具 举报 回复
发表于 2019-6-4 10:22:44 | 显示全部楼层
whj467467222 发表于 2019-6-3 15:10; d0 e# q% b6 w; b' j
模拟IIC可以用,其他的不知道。
  I6 d: Z) u; V2 |1 A9 P  ~
模拟IIC就是两个GPIO,板子都可以跑吧。我想知道RT-Thread系统,能不能在H750上运行
使用道具 举报 回复
发表于 2019-6-4 11:38:51 | 显示全部楼层
戎传林 发表于 2019-6-4 10:22! K6 F6 _+ F: M" }! }; W
模拟IIC就是两个GPIO,板子都可以跑吧。我想知道RT-Thread系统,能不能在H750上运行 ...

5 M, l+ ~9 M  X, M" z可以的,而且我认识的人,已经在用了,因为不是开发板所以就没有PR。
使用道具 举报 回复
发表于 2019-6-5 09:50:39 | 显示全部楼层
whj467467222 发表于 2019-6-4 11:38
8 b, I) e$ _' w( z5 M( ?可以的,而且我认识的人,已经在用了,因为不是开发板所以就没有PR。
) Y% j4 f- n' ^; t) W& T
好的,谢谢哈
使用道具 举报 回复
发表于 2019-6-12 17:58:54 | 显示全部楼层
戎传林 发表于 2019-6-4 10:22* Y2 C2 w# g6 S: g
模拟IIC就是两个GPIO,板子都可以跑吧。我想知道RT-Thread系统,能不能在H750上运行 ...
% t! Y& j) K* c
目前尚未有针对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

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