0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简述如何使用Harmony的动态驱动和状态机来编写程序

算法&编程学院 来源:网络整理 2018-02-01 03:33 次阅读

上一篇中介绍了UART的收发数据操作,那些操作都是基于外设库的,而不是采用Harmony的动态驱动,也没有采用状态机的机制。本篇就来介绍一下如何使用Harmony的动态驱动和状态机来编写程序。其实状态机是挺简单的,就是事先定义好可能发生的哪些状态,然后主循环里根据不同的状态进行不同的处理,这个在项目中也是比较常用的方法。

注意Dynamic的驱动对象都需要有一个Open动作来创建一个Handle,后续所有操作都是用Handle来代表这个驱动对象。所有动态驱动的中断都是采用注册回调函数的方式来使用,无需到system_init中添加,也无需自己清除中断标识,驱动已经自己完成了。

另外要注意的一点是,串口接收一个字节后进入了中断,如果不使用Read接收一下,那么后续就再也无法进入中断,就会出现仅中断一次的现象,因此,也不要在中断中进行耗时操作,避免没有及时接收数据,导致数据残缺不全。

先在app.h文件中定义状态机和UART要使用的相关变量结构体,使用结构体也是满方便的。

1

在app.c中编写应用程序,包含头文件之后,初始化函数编写,这里的初始化不是底层的初始化,而是初始化UART的相关变量,并创建句柄。第一步要initial(open一个客户端),然后判断创建的客户端时候有效,有效的话,就创建中断回调函数,中断程序的内容直接在回调函数里编写就可以了。

2

编写中断回调函数内容程序,收到一个数据后存储到数据缓冲区,并置位接收完成标志位

3

发送数据的函数,发送采用查询方式

4

编写Uart_Task()函数,状态里就在这里处理,初始化状态时进行初始化,然后进入接收数据状态,接收到数据后回发,并在OLED上显示接收到的字节数。

5

在APP_Tasks()中循环调用Uart_Task(),以处理接收到的数据。

6

编译,下载程序到开发板,打开串口软件测试

7

OLED显示效果

092736phxohksn4x4kxd44

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 状态机
    +关注

    关注

    2

    文章

    486

    浏览量

    27164
收藏 人收藏

    评论

    相关推荐

    状态机编程

    、基于状态机分析的简单按键设计(一)我们把单个按键作为一个简单的系统,根据状态机的原理对其动作和确认的过程进行分析,并用状态图表示出来,然后根据状态
    发表于 07-10 18:00

    状态机结构

    自己编写状态机结构程序
    发表于 08-14 21:46

    为什么PIC32的Harmony编写没有交互的状态机

    重新定义,但是基于和声方法,这些状态机也基于中断在不同的文件中从一个状态移动到另一个状态。这个应用程序运行良好,但我询问您的意见,如果这种方法是正确的或可以改进的,或者如果您有任何SU
    发表于 08-12 08:36

    有限状态机按键接口程序怎么编写

    的系统,根据状态机的原理对其动作的操作和确认的过程进行分析,并用状态图表示出来,然后根据状态编写出按键接口程序
    发表于 10-21 08:33

    怎么在应用程序状态机之间共享信息

    寻找最好的/常见的做法,当你有多个状态机需要使用彼此的函数/数据。例如,我有一个“应用程序”,它处理I2C设备并从一个结构中收集所有信息(来自多个设备)。来自其他“应用程序”/状态机
    发表于 04-15 10:12

    什么是有限状态机

    在嵌入式,机器人领域,由于多的复杂逻辑状态,我们编写程序的时候不得不考虑很多种情况,容易造成功能间的冲突。有限状态机(finite-state machine),简称状态机,是一种表示
    发表于 12-20 06:51

    状态机思路在单片机程序设计中的应用

    状态机思路在单片机程序设计中的应用 状态机的概念状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序
    发表于 02-09 11:25 1w次阅读
    <b class='flag-5'>状态机</b>思路在单片机<b class='flag-5'>程序</b>设计中的应用

    状态机原理在控制程序设计中的应用

    计算机控制系统的控制程序具有有限状态自动机的特征 可以用有限状态机理论来描述。利用状态转移图和条件编码可以更直观和清晰地描述程序的转移与条件
    发表于 03-22 15:30 1次下载

    VFP9.0编写程序

    数据库编写程序,VFP9.0编写程序,中文版利用数据库知识编写可以运行程序
    发表于 06-21 16:42 0次下载

    简述使用QII状态机向导如何创建一个状态机

    如何使用QII状态机向导创建一个状态机
    的头像 发表于 06-20 00:11 3983次阅读
    <b class='flag-5'>简述</b>使用QII<b class='flag-5'>状态机</b>向导如何创建一个<b class='flag-5'>状态机</b>

    状态机如何简化PLC程序编写

    在PLC程序编写过程中,可以使用状态机的控制思路,将一些复杂的控制过程使用状态机的方法处理。这里简单给大家介绍一下什么是状态机?如下图所示
    的头像 发表于 09-10 14:44 3188次阅读
    <b class='flag-5'>状态机</b>如何简化PLC<b class='flag-5'>程序</b>的<b class='flag-5'>编写</b>

    FPGA:状态机简述

    本文目录 前言 状态机简介 状态机分类 Mealy 型状态机 Moore 型状态机 状态机描述 一段式
    的头像 发表于 11-05 17:58 6228次阅读
    FPGA:<b class='flag-5'>状态机</b><b class='flag-5'>简述</b>

    关于stm32编写程序的头文件合集

    关于stm编写程序的合集
    发表于 04-23 09:39 1次下载

    虚拟机linux怎么编写程序

    在虚拟机Linux上编写程序是一项非常常见且有用的任务。无论是开发一个简单的脚本、一个Web应用程序还是一个复杂的软件项目,Linux提供了强大的工具和环境来帮助你进行编程。本文将详细介绍如何在
    的头像 发表于 11-17 10:08 592次阅读

    怎样在codeblocks上编写程序

    在CodeBlocks上编写程序是一项相对简单而又重要的任务。CodeBlocks是一个广泛使用的集成开发环境(IDE),它能够帮助程序编写、编译和运行他们的代码。在本篇文章中,我们将详细介绍
    的头像 发表于 11-26 09:26 596次阅读