STM32F103VET6串口1+DMA实现printf函数(调用了vsnprintf) 空闲中断+DMA实现接收

2019-07-20 22:20发布

大多数人实现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内部接收缓存则会导致数据被覆盖.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
31条回答
正点原子
1楼-- · 2019-07-20 23:04
cool,谢谢分享。
ChrisLiu1017
2楼-- · 2019-07-21 04:22
             謝謝,但我是用keil C的,所以只能載來研究看看
qq371833846
3楼-- · 2019-07-21 04:32
 精彩回答 2  元偷偷看……
zuoyi
4楼-- · 2019-07-21 10:19
写的很不错啊!
jnfxt95
5楼-- · 2019-07-21 10:48
做了一个串口1的DMA传输完成中断实验,谢谢楼主!!
ywlzh
6楼-- · 2019-07-21 13:49
这么好的东西,我怎么现在才发现呀

一周热门 更多>