STM32/STM8技术william hill官网
直播中

ebox生态圈

9年用户 104经验值
擅长:可编程逻辑 电源/新能源 控制/MCU
私信 关注
[资料]

【eBox生态圈】连载六:hello world!同样的经典,品味出不一样的味道!


串口在嵌入式设备中无疑是排在第一位的调试、输入输出接口!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 !rn");
  13.         delay_ms(1000);
  14.     }
  15. }

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


串口详解:
06【eBox生态圈】连载六:串口详解.rar (26.38 KB)
(下载次数: 36, 2015-11-27 18:49 上传)


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






回帖(4)

chenterry

2015-12-4 16:49:33
谢谢分享               谢谢分享       分                分
谢谢     谢谢分享              谢谢分享        享                享
谢谢分 谢谢分享              谢谢分享        谢                谢
谢谢分 谢谢分享                               谢       谢
谢谢分谢谢分享                         谢                 谢
         谢谢谢谢                    分                               分
             谢谢                   享                                     享
举报

骑乌龟私奔

2015-12-7 13:41:49
好好好好好好好好好好好好好好好好好好
举报

EZTT

2015-12-13 15:15:33
程序感觉有点像Arduino的写法,但又和C又有类似之处
举报

h1654155920.4618

2015-12-18 18:25:56
举报

更多回帖

发帖
×
20
完善资料,
赚取积分