Microchip Curiosity PIC32MZEF学习教程之:使用Harmony的动态驱动和状态机编写程序

分享到:

 
上一篇中介绍了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
 
继续阅读
Microchip首席运营官专访:展望2018!半导体行业的机遇与挑战

随着全球电子产品市场的蓬勃发展,在过去的一年里,Microchip与各位一起经历了半导体领域大幅、持续的增长。与此同时,半导体行业的格局也已发生了显著转变。那么,2018年行业内有哪些机遇和挑战呢?

用Microchip Curiosity PIC32MX470驱动OLED12864显示屏

这次要测试的是驱动OLED12864显示屏。OLED12864模块使用的是IIC接口,SDA接RF4引脚,SCL接RF5引脚,电源为3.3V。IIC时序使用软件模拟,采用强制读写模式。

Microchip专家技术文章;使用OptoLyzer® MOCCA FD进行CAN FD测试和模拟

本文中,我们重点介绍Op toLyzer MOCCA FD,这是一款用于CAN FD、CAN和LIN的开发工具。除了硬件外,我们还将讨论面向OptoLyzer MOCCA FD用户提供的软件选项:OptoLyzer Studio和K2L.Bus。

项目分享:基于Microchip PIC32MM开发板的电机控制

PIC32MM系列是Microchip功耗最低且最具成本效益的32位PIC32微控制器系列,选用PIC32MM 板卡,来进行这次电机控制项目

Microchip专家技术文章 LED调光引擎:基于8位MCU的开关模式可调光LED驱动器解决方案

开关模式可调光LED驱动器凭借其高效性以及对LED电流的精确控制而闻名。这类LED驱动器还可以提供调光功能,使得最终用户在营造奇幻灯光效果的同时有效降低自身功耗。

©2018 Microchip Corporation
facebook google plus twitter linkedin youku weibo rss