STM32串口中断程序-迪文屏,串口接收准确数值
这几天一直在做原子开发板与迪文屏的通信,开发板向迪文屏写数据已经完成,但是从迪文屏读的数据总是无法返回开发板。原始及调试程序见下图:


在串口接收到从dwin屏返回的相应9位数据,通过序号1的方式,一次次利用函数TX_TEST();进行测试。最后得出结论是**由于for()循环语句。**在串口中断中,是无法进入for循环的。原因不明。

问题2:

RX_buf[2]==0x06;但是赋值到TX_writetest[7],输出值变为90,这个原因是什么呢?当上图中1序号区域的“if”条件语句继续可用的时候,函数TX_TEST()输出的值就是0x06了。
此时,直接给TX_writetest[7]赋值是没有问题的。输出为“88”。
原因:串口中断接收数据的RX_buf[]需要区分哪些可用,哪些不可用。如果不用if条件语句进行区分的话,迪文屏返回来的串口数据好多是不规范的,倒是扫描到的数据为不可用的。。


此时输出的数值为0x06.
问题2:

在运行后,time_min++;
FLASH_W(FLASH_TIMER_ADDR,(unsigned short)time_min);
TX_WTime();
一直在运行,迪文屏上显示的数值一直在增大。但此时条件应该是不符合的,结果现在继续执行,则说明此时条件满足,条件表达式没有根据状态进行变换。即数组里面的值,在第一次赋值后,就没有再次变化。在中断函数中,我增加了赋值语句,在对一个数组赋值前,先清零。


只需要将[8]进行初始化就可以了。


在串口中断函数中加延时函数delay_ms(10)。这样在迪文屏上设置数值时才能够保存到MCU的flash中。如果没有延时,数值在设置后会一直跳动,无法稳定的设置到自己想要的数值。
第2部分
当时做到这里后,周末改动了一下,保存。然后有其他事情,忘了将改动前的程序内容给记录下来,结果导致无法通过串口向DWIN屏写数据。
出现的新问题:串口中断程序中增加此延时函数后,则串口就停止发送了,接收了。见下图,这个问题的原因是什么呢?


问题:
在下图程序中,当statusvalue=1;的时候,依然执行time_min++,这个问题的原因是什么?

在程序编写过程中,看到一个博客中说,最好让RX_length赋0最好在主函数中执行(见正点原子串口程序),另一篇写中断程序要尽可能的简单。我想了一下自己写的串口中断程序,确实有些乱。逻辑上有些不清晰。最后改为串口中断只输出Rx_buf[],其余的赋值,选择语句都放到定时器中断函数中。串口中断的优先级是最高的。


更改后发现思路一下子就清晰了。原来的一些问题也没有再出现,迪文屏与开发板的数据发送接收都已经能够实现了。但是第二部分中提出的问题还是没有搞清楚,如果有朋友知道原因,欢迎给我留言。

STM32串口中断程序-迪文屏,相关推荐

  1. 分享:STM32与迪文屏交互,轻松实现一些简单的功能!

    最近,托朋友用STM32F103评估板和迪文屏做了交互(@田),没写多少代码,就实现了一些简单常用的功能,还是很简单的!今天跟大家分享一下: 一.评估板使用说明 1.功能 图1:整体效果图 图2:MC ...

  2. dgus屏c语言程序,迪文DGUS屏 网上的经验和感慨

    注意:DGUS屏和串口屏是两个东西,所用的上位机软件不同.找客服要资料的链接.dwin客服还是很好的. 网上的经验: http://www.amobbs.com/forum.php?mod=viewt ...

  3. 22、T5L 迪文屏 C51开发之Hello World例程

    T5L 迪文屏 C51开发之Hello World例程 1.写在前面 2.例程功能简介 3.GUI界面设计 4.C51代码设计 1.写在前面   前面已经介绍了如何使用DGUS Tool软件来进行迪文 ...

  4. STM32串口中断接收实验

    STM32串口中断接收实验的详细说明 准备 代码实现 总结 准备 材料:STM32F407ZGT6最小系统板,串口1通过跳线帽连接到了CH340上. 需求:从电脑向板子的串口1发送一个字符串(以回车和 ...

  5. 1、迪文屏基于T5L_C51开发手势6宫格解锁

    演示视频 1.概述 基于迪文屏DMG32240C028-03WTC屏的滑动手势6宫格解锁功能,该功能运用了触摸屏状态读取和坐标读取的功能(系统变量接口0x0016),绘图功能,需要配合变量图标显示等基 ...

  6. 一种迪文屏软件在线升级方法

    --来自迪文开发者论坛 开发自己的项目中遇到文件升级不方便的问题,因此设计了一个在线升级方案,可以有效解决如下问题: 1. 当产品已发出需要修复Bug时,无法在线修复. 2. 无法判断新老版本,当数据 ...

  7. 【OKT507】迪文屏事件

    前言 本章介绍如何实现迪文屏与飞凌OKT507的uart事件通信. 代码 从上到下是uart_example.c.dwin.c.dwin.h.makefile #include "dwin. ...

  8. 30、T5L 迪文屏 C51开发之 ADC模数转换

    T5L 迪文屏 C51开发之 ADC模数转换 1.介绍 2.例程功能介绍 3.GUI界面设计 4.C51程序设计 1.介绍   T5L 芯片内部的 ADC 模数转换外设,有一点需要注意的是此 ADC ...

  9. STM32 HAL库 串口DMA(收发)和STM32串口中断接收(接收时间管理机制)+ESP8266 wifi模组通信问题

    一.HAL库 串口 DMA+ESP8266模组通信问题 用STM32 HAL库串口的DMA发送和空闲中断接收处理数据,单片机发送AT指令给ESP8266 wifi模组问题:单片机连续几次给wifi模组 ...

最新文章

  1. 快速求区间和的有趣算法——树状数组
  2. Transformer和自注意力机制Self-Attention详解和时间复杂度计算+Image Transformer简介
  3. 兔子的区间密码-最大异或对
  4. 向git库提交代码出现”There are no staged files怎么办?
  5. js字符串string转object对象 - 方法篇
  6. 【Hibernate一】概述及入门
  7. Unity中使用多构造函数(转)
  8. java show方法显示_Java Presence.Show方法代码示例
  9. 苹果 macOS Big Sur 11.2.3 正式版发布
  10. WeChatExtension for Mac(mac微信小助手)支持big surv2.7.0中文修复版
  11. 数据库系统概论知识点总结(附期末考试题库)
  12. 计算机毕业设计JAVA鸿鹄教育培训mybatis+源码+调试部署+系统+数据库+lw
  13. AD19快速制作多管脚元件符号
  14. 笑话生成器_爸爸笑话发生器
  15. Creational.Builder建造者模式:构造流程和具体实现的分离
  16. 计算机word表格怎么求和,如何在Word中插入Excel自动汇总a求和表格,上班族必备技巧...
  17. 肠道核心菌属——巨单胞菌属(Megamonas)
  18. 使用搜狗输入法实现对代码快捷注释
  19. 【贪心+堆/模拟费用流增广】BZOJ4946 [NOI2017]蔬菜
  20. C++接口实现汉字拼音转换

热门文章

  1. Python惰性序列
  2. 小程序项目(uniapp)
  3. mysql分季度统计数据,mysql按日周月季度统计数据
  4. 雨轻风色暴,梅子青时节
  5. SIEMENSplc200和电脑电缆通讯设置(设置PC/PG接口)
  6. Windows7环境下命令行一次运行多条命令
  7. 在复杂交通环境下智能汽车行驶风险评估与智能决策——王建强
  8. 【线性代数】矩阵及其特性
  9. opencv dnn模块 示例(15) opencv4.2版本dnn支持cuda加速(vs2015异常解决)
  10. 常用字体介绍(freetype)