串口在嵌入式设备中无疑是排在第一位的调试、输入输出接口!STM32中的串口应用起来比较简单,代码量不太复杂。但是一般用户的设计都是使用最基本的功能没有完全发挥串口硬件的功能,使得串口这个低速设备,严重影响了32的性能。一般情况下,使用串口的发送会浪费掉CPU的大量时间,到底有多大,你自己可以算算。
为了解决这个问题eBox使用DMA来实现异步执行,使得单片机即使在没有操作系统的情况下也大大提高效率。
此处讲解下异步执行的概念,当用户需要通过串口发送数据的时候,用户只需要将数据填充到发送缓冲区(指DMA发送缓冲区),然后开启DMA发送。MCU的任务就完成了,不用做任何等待就可以继续执行其他任务。这是,真正的发送是有DMA和串口自动配合完成字符串的发送。这就是简单的异步执行的概念。
好清晰的赶脚啊!uart1对象在哪里创建的呢?USART uart1(USART1,&PA9,&PA10);这是串口1对象的创建。在object.cpp中。声明在eBox.h中。
我的众筹项目地址:http://z.elecfans.com/30.html 期待大家一起来完善和发展eBox,打造国人自己的库,不仅仅支持STM32,更能支持飞思卡尔MCU、NXP MCU······
更多回帖