你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32进阶之串口环形缓冲区实现  

[复制链接]
xiaojie0513 发布时间:2018-6-4 09:49
阅读主题, 点击返回1楼
收藏 8 评论112 发布时间:2018-6-4 09:49
112个回答
alexcnsz 回答时间:2018-6-4 15:54:43
) |- {! Y4 t, J0 F6 ^$ G+ l6 U* r0 p
看看再说
xiaojie0513 回答时间:2018-6-4 16:32:37
toofree 发表于 2018-6-4 12:50
1 S1 G. \" y# M5 Y; n& }我也没正规学过数据结构,是考3级数据库时,数据结构是必须的。7 c8 E; j8 z- f: x$ h( C2 F
一个暑假自学完一本数据结构课本,做完一 ...

: D2 W9 g% q0 y' {& Q% R给我?????@zero99
zero99 回答时间:2018-6-4 16:44:19
xiaojie0513 发表于 2018-6-4 16:32
) c0 x9 `/ ]. U1 U2 w+ ]7 V  \2 k给我?????@zero99

/ u( ~/ k, d* q$ q+ X* \" T# B
七哥 回答时间:2018-6-4 16:46:02
本帖最后由 toofree 于 2018-6-4 16:47 编辑 0 M2 i- D8 l% M7 T4 M
xiaojie0513 发表于 2018-6-4 16:32) g. `8 g% @+ {, o% s+ R
给我?????@zero99

+ L0 y8 @& q1 I& h( G打字失误,是“给我”,已改。五笔打字,小手一哆嗦快,就可能出错,容易造成误会,好处是可以盲打。2 w$ P, A( u2 C7 s+ g0 y
用上个月回答问题,奖励的“100元内图书任选”指标买的书。
xiaojie0513 回答时间:2018-6-4 17:56:48
toofree 发表于 2018-6-4 16:46; M! w6 _; R  z2 A( \1 T
打字失误,是“给我”,已改。五笔打字,小手一哆嗦快,就可能出错,容易造成误会,好处是可以盲打。
' a4 U; b  l* t+ C7 t% K$ N用上 ...

, F4 u/ ?% K. Y1 O, i% E! o9 X5 K哈哈哈哈哈,加油
xiaojie0513 回答时间:2018-6-4 17:57:19

% R4 M$ a, O7 Y0 r1 B没你事了哈哈哈哈
布丁奶茶 回答时间:2018-6-4 21:10:31

: v# p; ]4 X$ Z. y4 h
3 R! A( K. m, T" C: P% @0 e1 t看看再说
myxiexing 回答时间:2018-6-4 21:32:18
谢谢分享
xiaojie0513 回答时间:2018-6-4 23:28:38
xself 发表于 2018-6-4 21:32; F9 _( |4 x- [# ]
谢谢分享

* O0 W. z3 Z. G谢谢支持
darren_liu 回答时间:2018-6-6 08:41:45
还不错。。。其实呢,搞懂数据结构这本书后,这些都是小意思,难点高的是树什么的!!!
wugenchao-14878 回答时间:2018-6-7 20:34:57
看看那
roguebear2012 回答时间:2018-6-7 21:11:46
给lz看一个移植的linux的串口fifo 用在stm32上的。
9 {7 C  I6 N- D) q+ b#include <kfifo.h>
/ p! r- p* X6 n. `% z' e
5 x& q2 [0 U* G& T  z
# d* y8 z: b+ p; U1 g7 Y& I0 ]# \; X" m0 P0 v& R/ Q( u

0 s# [& g5 Z# F/ L; r0 V) Iint __kfifo_init(struct __kfifo *fifo, void *buffer, unsigned int size)
3 K+ Y+ ^9 n1 \0 O, J' Y{
% y. _5 e( V4 z3 g    fifo->in = 0;
- Z1 Q& b' I& J; V& H    fifo->out = 0;
3 i/ M# s$ S9 P+ a) u1 U    fifo->mask = 0;
* J" B3 k, e' H    fifo->data = buffer;
& F- c3 m/ P7 Z. X+ p
6 U5 {2 @6 I! H% G    if (size < 2) {
0 J. K: [2 D0 p! q! U; t        return -1;. i9 i: U  S8 Y* V
    }
7 m$ ]; H1 x+ q3 k. A8 ^
3 W5 ~1 e& L% z7 T7 V9 C    if ((size & (size-1)) != 0)3 H) B* R* P$ x* K
    {
" y+ w' x# ]& w% p8 d4 G  f" F        return -2;            /*** Must be a power of 2 (2,4,8,16,32,64,128,256,512,...) ***/5 s0 _& [$ X! I
    }- i2 N, O  k6 c0 \8 }+ Y  p
$ r# b' Y2 `" u4 K6 w
    fifo->mask = size - 1;' H2 f" Z# @' h6 f0 i1 R' w

" ?. d- ^, c5 J; H    return 0;
: x% S" ]- _+ g1 [6 G+ e}$ v$ M7 E0 V) A! a1 o+ Y' {0 R

: N" @" d: y! L. c
& Y3 H( @, G9 i  U. {* u- X. z3 Y" ]6 P' z1 \/ {2 d" R
  {: e7 W, B1 {/ ]

9 ~* \( V, Z0 ?8 _; c3 Bunsigned int __kfifo_push_char(struct __kfifo *fifo,  const char *p)* E% E# C" _- w
{
8 o% y: G- \& r+ n* Q% f# Q" Y1 m2 ~( Q( ]
    if(( ( fifo->in - fifo->out ) & ( ~fifo->mask ) ) == 0 )
! z- }- j8 c. D* M# E2 r    {
/ U+ X6 O& L4 b5 T# H        *( (char*)fifo->data + (fifo->in++ & fifo->mask) ) = *p;
$ C, g3 R, q1 F$ J3 e0 B$ v
$ p4 Y5 h7 R& Q# }        return 1;6 P( B( z8 L4 O
    }. O( ?8 A% t" `7 L' \, s8 x
1 j  F/ W& A1 O+ u9 |5 W+ N
    return 0;! d0 T* Z3 ?; N* O% F0 r% o" l5 U
}% ]. a; z$ c8 |' W: V. y$ N& {

- s# P2 C% c0 d+ U8 A
2 M9 E0 e2 o- c8 i0 T8 j
/ ^3 W$ c+ Y2 p3 u+ P, F1 {# N/ J& |3 }  N& G4 `: P- x+ M4 c
& k, o0 K6 ~+ G
unsigned int __kfifo_pop_char(struct __kfifo *fifo, char* p )
. b) @) m0 h) C9 `- }: y7 z7 L{4 W5 ~$ h  j# T1 t8 _% W
    if( fifo->in != fifo->out )
7 r- y. l4 T2 ]) p    {2 N9 V1 C% U& n9 j
        *p =  *(  (char*)fifo->data + (fifo->out++ &  fifo->mask) ) ;
; j4 H7 h, d7 b3 |! }' l! Y
/ A7 l" Y) A* o% o! @' i2 S7 N" W        return 1;6 P+ k; Q( `+ z$ ]& F/ c
    }& G1 W, ^2 O7 E/ C* |. A8 R6 b
' f5 ]" \: h7 K6 _4 Y
    return 0;
5 P! I% y8 }, h( o& O}. X3 Z3 C3 y- u# b6 ^/ u1 u0 k
/ B- U& q# }" j# u' ?
% }8 W4 o) l/ W! T- \2 I7 F# A

% k4 s5 L1 o  q6 [
gdgly 回答时间:2018-6-9 10:56:37
xiaojie0513 回答时间:2018-6-9 11:13:56
roguebear2012 发表于 2018-6-7 21:11
* V( {$ j6 E" R. S4 U# t% T1 X8 i给lz看一个移植的linux的串口fifo 用在stm32上的。
4 f, R, w/ F+ \#include
) b% M( \6 ~) ^" K3 Y
大。。。。大。。。。大佬
八五哥 回答时间:2018-6-9 16:35:20
这个写得是非常不错了。) q5 q- Z+ f1 P

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版