profile

profile

0个粉丝

15

问答

0

专栏

20

资料

profile  发布于  2013-11-18 21:45:29
采纳率 0%
15个问答
4431

STM32F103VET6串口1+DMA实现printf函数(调用了vsnprintf)

 
大多数人实现printf基本上采用函数重定位的方法,1个字节1个字节的发送,效率不高;还有在用串口接收不定长度数据时也一般采用在数据中额外添加长度信息或终止信息,也有采用定时器定时接收的方法.

而这里给大家分享一个用STM32F103VET6串口1+DMA实现printf函数(调用了vsnprintf),与利用STM32串口特有的空闲中断+DMA实现接收的代码,开发环境是IAR6.3.如果要移植到UCOSII,只要把其中STM32F1_USART1.c文件里操作sendDoneFlag和recvDoneFlag变量置1或清0部分改成UCOSII的标志组操作即可,个人觉得DMA运行在多任务系统上才能充分体现它的效率,因为在DMA传输的过程中系统可以调度运行其他任务.




使用串口助手(波特率:115200,其他默认)向串口1发送任意长度数据,若超过串口1内部接收缓存则会导致数据被覆盖.
易百纳技术社区文件: printf.zip
下载
我来回答
回答1个
时间排序
认可量排序

dongfo

0个粉丝

10

问答

0

专栏

39

资料

dongfo 2013-11-18 22:19:22
认可0
好方法,这样接收会变得很方便
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区