因为一开始用的是FreeRTOS,因此,项目中的RTOS也是FreeRTOS,但是在项目开发过程中,发现需要解析AT指令集,

因此来移植一波RT-thread的软件包。下次就用RT-thread了,纯纯浪费时间移植。

首先捋清at库运行思路

1. 串口接收中断被外界消息输入触发,中断在回调函数中将消息内容发给AT任务,并进行任务切换,将所有权转移给AT任务,

2. AT任务进行指令解码,并且相应的解码结果会发送不同的事件给APP任务,并进行任务切换,将所有权转移给APP任务。

    这里解释一下为什么AT任务要将解码结果传递。因为该库保证自己良好的可移植性,

    AT指令集的格式是统一的,但是指令内容并不统一,将不同的部分分离出来,让用户实现差异部分。

    我们应该参考这种设计思路。

然后再由上往下分析一下运用思路

1.初始化相应的硬件串口

2.初始化AT库,创建任务,相应的信号量,队列。

3.在任务中阻塞等待消息传来。

4.消息传来,进行处理,并发送相应的信号量,将所有权转移给app任务。回到3

 

改进:

  AT组件似乎有一定的e_log函数调用,用来显示过程。决定将其删除,这并不在我们的规划范围之内,

  其除了加大任务量,让程序更加无序,不可控,调试代码输出更加混乱之外,毫无意义。调试风格应该一致,因此,我们在RT-thread中会采用这种方式。这个项目不用。

 

具体移植步骤

1. 获得源码,在rt-thread中获得对应的源码,我们这个项目只要at_client.c  at_log.h   at_tils.c    at.h四个文件即可 

2.  修改对应的函数使之适配FreeRTOS

3. main函数中加入AT组件初始化函数

4.创建任务等待信号量并进行app操作。

5.串口中断增加回调函数。

6.加入URC处理函数。

posted on 2023-10-31 09:52  __诗酒趁年华  阅读(294)  评论(0编辑  收藏  举报