发 帖  
[资料] 【eBox生态圈】连载六:hello world!同样的经典,品味出不一样的味道!
2015-11-27 18:51:16  2625
收藏 0 收藏 推荐 0 推荐
分享


串口在嵌入式设备中无疑是排在第一位的调试、输入输出接口!STM32中的串口应用起来比较简单,代码量不太复杂。但是一般用户的设计都是使用最基本的功能没有完全发挥串口硬件的功能,使得串口这个低速设备,严重影响了32的性能。一般情况下,使用串口的发送会浪费掉CPU的大量时间,到底有多大,你自己可以算算。

为了解决这个问题eBox使用DMA来实现异步执行,使得单片机即使在没有操作系统的情况下也大大提高效率。

此处讲解下异步执行的概念,当用户需要通过串口发送数据的时候,用户只需要将数据填充到发送缓冲区(指DMA发送缓冲区),然后开启DMA发送。MCU的任务就完成了,不用做任何等待就可以继续执行其他任务。这是,真正的发送是有DMA和串口自动配合完成字符串的发送。这就是简单的异步执行的概念。

此例程用到USART类成员函数
  1. class USART
  2. {
  3.         public:
  4.                      USART(USART_TypeDef *USARTx,GPIO *tx_pin,GPIO *rx_pin);
  5.                      void begin(uint32_t baud_rate);
  6.                      void printf(const char *fmt,...);            
复制代码
此处没有将所有的成员函数列出,只列出了关键方法。详细内容请查看下面的附件。
应用实例:
  1. #include "ebox.h"
  2. void setup()
  3. {
  4.     ebox_init();
  5.     uart1.begin(9600);        
  6. }
  7. int main(void)
  8. {
  9.     setup();
  10.     while(1)
  11.     {
  12.         uart1.printf("hello World !\r\n");
  13.         delay_ms(1000);
  14.     }
  15. }
复制代码

好清晰的赶脚啊!uart1对象在哪里创建的呢?USART uart1(USART1,&PA9,&PA10);这是串口1对象的创建。在object.cpp中。声明在eBox.h中。


串口详解:


我的众筹项目地址:http://z.elecfans.com/30.html 期待大家一起来完善和发展eBox,打造国人自己的库,不仅仅支持STM32,更能支持飞思卡尔MCU、NXP MCU······






· 2015-12-4 16:49:33
谢谢分享               谢谢分享       分                分
谢谢     谢谢分享              谢谢分享        享                享
谢谢分 谢谢分享              谢谢分享        谢                谢
谢谢分 谢谢分享                               谢       谢
谢谢分谢谢分享                         谢                 谢
         谢谢谢谢                    分                               分
             谢谢                   享                                     享
· 2015-12-7 13:41:49
好好好好好好好好好好好好好好好好好好
· 2015-12-13 15:15:33
程序感觉有点像Arduino的写法,但又和C又有类似之处
· 2015-12-18 18:25:56

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

发资料
关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表