如何编写应用程序

**每次要编写嵌入式应用程序的时候总是不知道该如何入手,于是简单的研究了下现在普遍的扫码支付模块的SDK开发结构。**

1. 模块化

拿到一个项目需求时,我们需要看下该项目分为几个模块,每个模块之间又是以什么形式连接的。模块化会使程序结构清晰,维护也会方便很多。比如说扫码支付模块就分为三个部分,底层core部分,mqtt功能模块,uart功能模块。分好了模块之后开始入手写程序了。

2.模块初始化

在函数入口写各模块的初始化程序,底层core部分,里面的许多功能底层已经能够初始化好了,我们只要等待消息即可。mqtt模块我们需要建立一个task,该task有四个功能函数,连接,关闭,读,发送。
uart功能模块有两个功能函数,读和写。初始化也就是各种准备工作,每个模块都需要,就不写了。

3.工作逻辑

1.底层自动附着上网络后,会有消息上报,消息的分类用switch函数。在这种情况下,mqtt才可以去连接服务器。连接好后,mqtt线程阻塞等待底层的读消息上报。(也有初始化的时候将读函数当作回调函数传入底层的)。
2.串口收到消息上报时(也有在初始化的时候将读函数当作回调函数传入底层的),一顿处理之后(组协议包),调用mqtt发送接口将数据发送给服务器。
3.mqtt收到服务器发来的消息之后,一顿分析之后(分析协议包),调用uart写函数将数据发送给外设主板,至于外设怎么再操作就不用关系了(外设与uart口之间也有串口协议)。

![](https://img2018.cnblogs.com/blog/1532705/201907/1532705-20190707231100211-1586713324.jpg)
不怕世界大,就怕格局小
原文地址:https://www.cnblogs.com/wangjian1226/p/11148757.html