之前在物联网-移远M26模块OpenCPU开发第1讲中提到过需要给外部看门狗芯片喂狗才能正常工作,阅读过的读者应该知道,我是通过周期性的控制M26的一个GPIO引脚电平变化来实现喂狗的。关于其硬件参考设计如下图:

其实,移远M26 OpenCPU自带看门狗管理器,可以使用其内部看门狗管理器来进行喂狗,软件实现的原理如下图:

除了执行用户应用期间的喂狗,还可以在芯片启动时和远程升级软件时主动喂狗(没有验证过,后期会试一下远程升级软件功能),如下图:

当然在执行应用期间也需要用到定时器,调用Ql_WTD_Feed(wtd_id)函数,具体理论知识我就不过多的阐述了,烦请读者自行阅读参考手册,里面有详细的操作方式和例程,详情参考: Quectel_OpenCPU_Watchdog_Application_Note_V1.0

下面我上传一下我项目应用中用到的配置代码,如下:


// 定义定时器相关变量
static u32 g_myTimerId_wtd = TIMER_ID_USER_START+2;             // 喂狗定时器ID   102
static u32 g_nInterval_wtd = 500;                               // 500ms中断void WTD_Program(void)
{s32 ret;s32 wtdid;// Initialize external watchdog:// specify the GPIO pin (PINNAME_NETLIGHT) and the overflow time is 600ms.ret = Ql_WTD_Init(0, PINNAME_NETLIGHT, 600);if (0 == ret){               Ql_memset(pchData, 0x0, sizeof(pchData));                               dataLen = Ql_sprintf(pchData, "\r\n<--OpenCPU: watchdog init OK!-->\r\n");    Ql_UART_Write(UART_PORT1,(u8*)pchData,dataLen); }// Create a logic watchdog, the interval is 3swtdid = Ql_WTD_Start(3000);// Register & start a timer to feed the logic watchdog.// The watchdog id will be passed into callback function as parameter.ret = Ql_Timer_Register(g_myTimerId_wtd, Callback_OnTimer, &wtdid);if(ret < 0){Ql_memset(pchData, 0x0, sizeof(pchData));                                 dataLen = Ql_sprintf(pchData, "<--main task: register fail ret=%d-->\r\n",ret);  Ql_UART_Write(UART_PORT1,(u8*)pchData,dataLen); return;}// The real feeding interval is 2sret = Ql_Timer_Start(g_myTimerId_wtd, 2000,TRUE);if(ret < 0){Ql_memset(pchData, 0x0, sizeof(pchData));                                 dataLen = Ql_sprintf(pchData, "<--main task: start timer fail ret=%d-->\r\n",ret);   Ql_UART_Write(UART_PORT1,(u8*)pchData,dataLen);       return;}Ql_memset(pchData, 0x0, sizeof(pchData));                              dataLen = Ql_sprintf(pchData, "<--main task: start timer OK  ret=%d-->\r\n",ret);    Ql_UART_Write(UART_PORT1,(u8*)pchData,dataLen);
}

请大家不要过多纠结函数中用到的变量,可以自行定义或者更改。当然了,上面只是初始化配置函数,还需在定时器回调函数里调用Ql_WTD_Feed()函数,代码如下:

// 定时器回调函数
void Callback_OnTimer(u32 timerId, void* param)
{s32* wtdid = (s32*)param;Ql_WTD_Feed(*wtdid);         Ql_memset(pchData, 0x0, sizeof(pchData));                                dataLen = Ql_sprintf(pchData, "<-- time to feed logic watchdog (wtdId=%d) -->\r\n",*wtdid);  Ql_UART_Write(UART_PORT1,(u8*)pchData,dataLen); }

关于定时器相关知识请参考:Quectel_M26-OpenCPU_User_Guide_V1.0定时器相关章节。

到此,m26的看门狗功能也就讲完了,欢迎读者提出疑问,可以加群讨论:838839442   微信公众号:物联网技术交流与学习

物联网-移远M26模块OpenCPU开发第3讲(看门狗)相关推荐

  1. 物联网-移远M26模块OpenCPU开发第1讲

    心心恋恋的基于移远M26模块设计的用于开发OpenCPU功能的板子终于完成,废话少说,直接上图: 对于板子外观这里不作讨论,毕竟不是我设计的,期望能用吧. 可能是由于设计者经验不足的原因吧.我刚拿到板 ...

  2. 物联网-移远M26模块OpenCPU开发第2讲(FLASH处理)

    最近有个项目,需要频繁的操作移远M26的内部flash.众所周知,flash的擦写次数为10W次,超过这个次数后flash就没有用了.这个项目需要频繁的对其进行写操作,要想设备工作3~5年,10W明显 ...

  3. 物联网-移远M26模块MQTT开发(AT命令)

    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分.该协议支持所有平台,几乎可以把所有联 ...

  4. 物联网-移柯L206模块TCP开发(基于STM32+AT命令)

    最近一直在做2g模块联网的项目,用到了移柯L206 2G模块,今天就简单讲一下移柯L206 2G模块基于STM32+AT命令开发TCP联网的过程,参考文档:移柯L206 TCPIP开发流程说明V1.1 ...

  5. NBIOT 移远BC28模块+stm32开发板例程、教程(打通TCP、COAP协议)

    为了开发者能够快速入门BC28的开发,加快开发者的项目进度,开发出此款针对BC28的stm32开发板和完善的发送网络数据的示例程序(TCP协议.COAP协议),程序流程逻辑清楚,注释完善,上手就可以玩 ...

  6. 大白NBIOT 移远BC28模块+stm32开发板例程、教程(打通TCP、COAP协议)

    大白为了开发者能够快速入门BC28的开发,加快开发者的项目进度,大白开发出此款针对BC28的stm32开发板和完善的发送网络数据的示例程序(TCP协议.COAP协议),程序流程逻辑清楚,注释完善,上手 ...

  7. 嵌入式linux驱动开发之移远4G模块EC800驱动移植指南

    回顾下移远4G模块移植过程, 还是蛮简单的.一通百通,无论是其他4G模块都是一样的.这里记录下过程,分享给有需要的人.环境使用正点原子的imax6ul开发板,板子默认支持中兴和移远EC20的驱动,这里 ...

  8. NBIOT(3)---NBIOT 移远BC28模块+stm32

    NBIOT 移远BC28模块+stm32 大白为了开发者能够快速入门BC28的开发,加快开发者的项目进度,大白开发出此款针对BC28的stm32开发板和完善的发送网络数据的示例程序(TCP协议.COA ...

  9. STM32开发笔记77: 内部看门狗长延时的产生

    单片机型号:STM32L053R8T6 开发笔记STM32开发笔记45:看门狗驱动程序的移植介绍了看门狗驱动程序的基本设计方法.今天项目中看门狗的延时时间达到10秒,则实际运行效果只有3秒. 以下是看 ...

最新文章

  1. php将图片链接转换为base64编码文件流
  2. kettle中job给转换配置相对路径
  3. 贪心算法之——喷水装置二(nyoj12)
  4. flutter 页面加载动画_Flutter撸一个加载动画
  5. 你们数学老师当年是怎么叫这些符号的…
  6. 飞机游戏项目完整代码(详解JAVA300集)
  7. python3怎么创建文件_Python3.5 创建文件的简单实例
  8. EXCEL VBAProject密码破解 工作表密码破解
  9. 【LOJ#10170】国王
  10. IMX6 dts 配置GPIO
  11. 固定资产管理有关的计算机知识,固定资产管理相关知识问答梳理(无形资产篇)...
  12. 沟通技巧-《非暴力沟通》书中的精髓:改变对待冲突和矛盾的看法,通过非暴力沟通的方式,可以使生活更加美好。
  13. 公众号菜单栏如何添加设置一键导航?
  14. 南开计算机考研难么,我的一点考研心得
  15. IBM山东开建全球首个完整云计算中心
  16. webpack 打包时排除某些依赖模块
  17. 红外光谱曲线的基线调整
  18. word添加水印后多出一条线的删除方法
  19. gsoap应用---利用gsoap工具生成代码
  20. MATLAB虚拟现实

热门文章

  1. android studio读写txt,Android Studio从.txt文件读取/写入,保存路径?
  2. 静态方法中调用spring容器中的对象
  3. Markdown 复选框
  4. Pytorch 配置 Tensorboard 可视化学习(一)
  5. 青海师大c语言研究生专业课_【考研资讯】多所高校更改专业课科目!考研人还能再怎么惨?...
  6. 无法删除计算机文件是什么意思,该计算机是Windows10系统,我不知道为什么最近无法删除某些文件...
  7. ei会议和ei源刊的区别_核心期刊SCI论文发表 | SCI和EI和核心有什么区别
  8. android 图片拍照,Android获取图片拍照时间
  9. C#巧妙实现服务器端应用程序和asp网页交互
  10. webService(简单小demo)