dma环形缓存_stm32F4 串口DMA+环形缓冲区的实现

下面是串口DMA+环形缓冲区的实现,将读写接口抽象出来,实现不定长度的数据收发。

关于环形缓冲区参考:

/******************************************************************************

* Copyright (C) 2016, roger

* All rights reserved.

*

* 文件名称: tty.h

* 摘 要:控制台驱动

*

* 当前版本: 3.0

* 作 者: roger

* 完成日期: 2016-09-24

*

* 取代版本: 2.0

* 原作者 : roger

* 完成日期: 2015-07-08

******************************************************************************/

#ifndef _TTY_H_

#define _TTY_H_

#define TTY_BAUDRATE 115200 /*波特率 ------------*/

#define TTY_TXBUF_SIZE 256 /*发送缓冲区长度 -----*/

#define TTY_RXBUF_SIZE 256 /*接收缓冲区长度 -----*/

#define TTY_DMA_TX_LEN 10 /*DMA 发送缓冲区 ----*/

#define TTY_DMA_RX_LEN 10 /*DMA 接收缓冲区 ----*/

#define TTY_USE_DMA 1 /*启用DMA -----------*/

/* Exported Structs ---------------------------------------------------------*/

typedef struct

{

void (*init)(void); /*初始化 --------*/

unsigned int (*write)(void *buf, unsigned int len); /*数据写 --------*/

unsigned int (*read) (void *buf, unsigned int len); /*读数据 --------*/

void (*puts)(const char *str); /*输入一个字符串 */

void (*clr)(void); /*清除接收缓冲区 */

unsigned int (*buflen)(void); /*接收缓冲区的长度*/

void (*printf)(const char *format, ...); /*格式化打印 ----*/

}tty_t;

/* Exported variables ------------------------------------------------------- */

extern const tty_t tty;

#endif1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

511

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

/******************************************************************************

* Copyright (C) 2016, roger

* All rights reserved.

*

* 文件名称: tty.c

* 摘 要:打印串口驱动

*

* 当前版本: 3.0

* 作 者: roger

* 完成日期: 2016-09-24

*

* 取代版本: 2.0

* 原作者 : roger

* 完成日期: 2015-07-08

******************************************************************************/

/* Includes ------------------------------------------------------------------*/

#include "tty.h"

#include "ringbuffer.h"

#include "stm32f4xx.h"

#include

#include

#include

static unsigned char rxbuf[TTY_TXBUF_SIZE]; /*接收缓冲区 ------------*/

static unsigned char txbuf[TTY_RXBUF_SIZE]; /*发送缓冲区 ------------*/

sta

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值