迪文屏怎么样同时发送几个数据,比如一个平面坐标给单片机要在迪文屏怎么样确认发送加一个什么控件?

迪文串口屏单片机历程代码可鉯直接编译通过,附有c语言的和汇编的

先说说应用通讯模式串口终端嘚工作方式和迪文屏怎么样差不多,终端被动接受MCU发的指令终端会偶尔主动发送一些数据给MCU(像迪文屏怎么样的触摸信息上传)。

前台程序中有数据要发送则需要做如下几件事

1.      在数据发送缓冲区内放好要发送的数据,说明:此数据缓冲区的首地址必须要在DMA初始化的时候寫入到DMA配置中去

4.      等待发送完成标志位,即下面的终端服务函数中的第3点设置的标志位或者根据自己的实际情况来定,是否要一直等待這个标志位也可以通过状态机的方式来循环查询也可以。或者其他方式

启动DMA并发送完后,产生DMA发送完成中断在中断函数中做如下几件事:

3. 给前台程序设置一个软件标志位,说明数据已经发送完毕

串口接收DMA在初始化的时候就处于开启状态一直等待数据的到来,在软件仩无需做任何事情只要在初始化配置的时候设置好配置就可以了。

判断数据数据接收完成:

       这里判断接收完成是通过串口空闲中断的方式实现即当串口数据流停止后,就会产生IDLE中断这个中断里面做如下几件事:

4.      重新设置DMA下次要接收的数据字节数,注意这里是给DMA寄存器重新设置接收的计数值,这个数量只能大于或者等于可能接收的字节数否则当DMA接收计数器递减到0的时候,又会重载这个计数值重新循环递减计数,所以接收缓冲区的数据则会被覆盖丢失

5.  开启DMA通道,等待下一次的数据接收注意,对DMA的相关寄存器配置写入如第4条的寫入计数值,必须要在关闭DMA的条件进行否则操作无效。

说明一下STM32IDLE的中断在串口无数据接收的情况下,是不会一直产生的产生的条件是这样的,当清除IDLE标志位后必须有接收到第一个数据后,才开始触发一断接收的数据断流,没有接收到数据即产生IDLE中断。

DMA_Cmd(LUMMOD_UART_Rx_DMA_Channel, ENABLE); /* DMA 开启等待数据。注意如果中断发送数据帧的速率很快,MCU来不及处理此次接收到的数据中断又发来数据的话,这里不能开启否则数据会被覆盖。有2种方式解决

    1. 在重新开启接收DMA通道之前,将LumMod_Rx_Buf缓冲区里面的数据复制到另外一个数组中然后再开启DMA,然后马上处理复制出来的数據

我要回帖

更多关于 迪文屏 的文章

 

随机推荐