测试环境

协议栈版本:BLE-STACK V2.1

IAR开发环境版本:IAR for Arm 7.40

硬件设备:Amo-SmartRF v2.0 开发板(对应TI官方的SmartRF06EB 开发板)

示例测试Demo工程:simpleBLEPeripheral工程

系统驱动层RTOS配置

1.打开“C:\ti\tirtos_simplelink_2_13_00_06\packages\ti\boards\SRF06EB\CC2650EM_7ID”目录下的“Board.c”文件,在文件的最后添加如下代码:

/*
*  ============================= WatchDog Begin===========================
*/
#include <ti/drivers/Watchdog.h>
#include <ti/drivers/watchdog/WatchdogCC26XX.h>/* Watchdog objects */
WatchdogCC26XX_Object watchdogCC26XXObjects[SENSORTAG_CC2650_WATCHDOGCOUNT];/* Watchdog configuration structure */
const WatchdogCC26XX_HWAttrs watchdogCC26XXHWAttrs[SENSORTAG_CC2650_WATCHDOGCOUNT] = {/* SENSORTAG_CC2650_WATCHDOG0 with 1 sec period at default CPU clock freq */{WDT_BASE, INT_WATCHDOG},
};const Watchdog_Config Watchdog_config[] = {{&WatchdogCC26XX_fxnTable, &watchdogCC26XXObjects[0], &watchdogCC26XXHWAttrs[0]},{NULL, NULL, NULL},
};/*
*  ============================= WatchDog End============================
*/

2.打开“C:\ti\tirtos_simplelink_2_13_00_06\packages\ti\boards\SRF06EB\CC2650EM_7ID”目录下的“Board.h”文件,在文件的最后添加如下代码:

/*!
*  @def    CC2650_WatchdogName
*  @brief  Enum of Watchdogs on the CC2650 dev board
*/
typedef enum CC2650_WatchdogName {CC2650_WATCHDOG0 = 0,CC2650_WATCHDOGCOUNT
} CC2650_WatchdogName;/*!
*  @def    SENSORTAG_CC2650_WatchdogName
*  @brief  Enum of Watchdogs on the SENSORTAG_CC2650 dev board
*/
typedef enum SENSORTAG_CC2650_WatchdogName {SENSORTAG_CC2650_WATCHDOG0 = 0,SENSORTAG_CC2650_WATCHDOGCOUNT
} SENSORTAG_CC2650_WatchdogName;

这样,RTOS中看门狗部分就配置好了,下面我们来看看应用层是如何配置的。

应用层配置

1.将驱动中看门狗相关的文件添加到编译选项中,选择“CC2640App”--->右键点击“Drivers”--->“Add”--->“Add Files...”,操作截图如下:

2.上述操作之后,会弹出文件添加的对话框,找到“C:\ti\tirtos_simplelink_2_13_00_06\packages\ti\drivers”目录下的“Watchdog.c”和“Watchdog.h”文件,选中之后,点击“打开”添加到工程中。操作显示如下:

3.选择“CC2640App”--->右键点击“Drivers”--->“Add”--->“Add Group...”,操作截图如下:

在弹出的对话框中输入“WATCHDOG”,操作显示如下:

点击“OK”之后,结果如下:

在“Drivers”文件夹下生成“WATCHDOG”文件夹。

4.在刚生成的“WATCHDOG”文件夹下添加“WatchdogCC26XX.c”和“WatchdogCC26XX.h”,这两个文件所在的路径为“C:\ti\tirtos_simplelink_2_13_00_06\packages\ti\drivers\watchdog”,操作显示如下:

选中文件,点击“打开”,即可成功添加文件。

5.应用层初始化中调用看门狗的接口,打开“C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\SimpleBLEPeripheral\CC26xx\Source\Application”目录下的“simpleBLEPeripheral.c”文件,在该文件中添加头文件引用:

#include <ti/drivers/Watchdog.h>

并添加我们封装的两个函数,源码如下:

void wdtCallback(UArg handle)
{Watchdog_clear((Watchdog_Handle)handle);
}void wdtInitFxn()
{Watchdog_Params wp;Watchdog_Handle watchdog;Watchdog_Params_init(&wp);wp.callbackFxn    = wdtCallback;wp.debugStallMode = Watchdog_DEBUG_STALL_ON;wp.resetMode      = Watchdog_RESET_ON;watchdog = Watchdog_open(Board_WATCHDOG, &wp);Watchdog_setReload(watchdog, 1500000); // 1sec (WDT runs always at 48MHz/32)
}

然后,在“simpleBLEPeripheral.c”文件的开头部分声明“wdtInitFxn”函数,截图如下:

最后,在“simpleBLEPeripheral.c”文件的初始化函数“SimpleBLEPeripheral_init”中调用看门狗“wdtInitFxn”函数。截图如下:

下面,我们来说明一下上述封装的两个函数,首先,我们可以看到“wdtInitFxn”函数中“wp.callbackFxn”的配置,该回调函数的配置是用来清除看门狗计时的,其实也就相当于我们常说的喂狗操作。在没有软件错误、程序正常允许的情况下,会定时触发该回调来喂狗,如果程序运行出现问题,该回调无法触发,看门狗达到设定的超时时间就会触发重启。

至于看门狗超时时间设置的问题,有的人会问为什么设置1500000就是1s呢?我们知道CC2640运行在48MHZ的频率,通过查阅资料,如下:

我们可以看到,计算看门狗超时时间的时候,需要除以32,也就是48MHZ除以32等于1.5MHZ,看门狗运行在1.5MHZ的频率上,也就是每计数一次等于1/1500000秒的时间,所以要实现1s超时时间,需要计数1500000次。这就是上面设置计数1500000即为1s的由来。

通过上述配置,我们的看门狗功能就添加完成了,通过实测,该看门狗配置方式可以起作用。另外,可能还有别的看门狗配置方法,后面研究出来之后,我们再继续讨论。

CC2640之看门狗相关推荐

  1. CC2640R2F学习笔记(8)——Watchdog看门狗使用

    一.背景 如果在一定的时间内没有通过"喂狗"来清除看门狗的 counter,则看门狗会产生一个复位,使程序重启. 看门狗一旦开启,就不能停下来. 二.移植文件 链接:https:/ ...

  2. CC2640 看门狗配置

    原文https://blog.csdn.net/zzfenglin/article/details/52253536 测试环境 协议栈版本:BLE-STACK V2.1 IAR开发环境版本:IAR f ...

  3. 调试模式和定时器,看门狗和嘀嗒定时器

    文章目录 一.调试模块 二.定时器模块 三.看门狗 四.系统时基定时器 五.定时器与内核之间的关系 杨桃32学习笔记,本文图片文字皆为转述 参考博客连接 一.调试模块 所谓调试的过程便是,写好程序然后 ...

  4. uplay服务器未响应,《看门狗:军团》存在崩溃丢失存档BUG 育碧正在修复

    原标题:<看门狗:军团>存在崩溃丢失存档BUG 育碧正在修复 <看门狗:军团>的部分玩家们近日在游戏中遇到了一个十分恼人的问题--在进行游戏时,有时会遇到游戏未响应或崩溃的问题 ...

  5. WINCE平台下C#应用程序中使用看门狗

    看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个大数,程序开始运行后看门狗开始倒计数.如果程序运行正常,过一段时间CPU应发出指令让 ...

  6. 用看门狗定时器做计时器,计算程序耗时,超声波测距,FL2440

    开发板:FL2440 核心芯片:S3C2440(ARM9) 超声波模块:HC-SR04 超声波模块工作原理:共四个脚,VCC接5V,GND接地,Trig脚接芯片通过IO传出的高电平(持续时间不低于10 ...

  7. 龙将加速浏览器_《看门狗:军团》即将开启预载,迅游加速器支持下载和联机加速 18183手机游戏网...

    来源:作者:阿姆斯特朗雷时间:2020-10-26分享到: <看门狗:军团>是<看门狗>系列的最新作品,将于10月29日正式上线亚洲地区,并且即将面向各平台开启预载,迅游加速器 ...

  8. 5、CC2541芯片中级教程-OSAL操作系统(PWM+看门狗)

    本文根据一周CC2541笔记汇总得来-- 适合概览和知识快速索引-- 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 ...

  9. Linux 软件看门狗 watchdog

    Linux 自带了一个 watchdog 的实现,用于监视系统的运行,包括一个内核 watchdog module 和一个用户空间的 watchdog 程序.内核 watchdog 模块通过 /dev ...

最新文章

  1. 典型用户 persona
  2. linux下使用inotify实时监控文件变更,做完整性检查
  3. 还纠结选机器学习还是深度学习?看完你就有数了
  4. 总结2020,起航2021,奔向腾讯,实现增长!
  5. arcmap创建空间索引_mysql搜索引擎你会用了么
  6. 游戏上线... 记录下...
  7. openglpython3d重构_python+opengl显示三维模型小程序
  8. 数据结构--二叉搜索树
  9. 五秒原则,做一件事之前数 5 秒,1,2,3,4,5 立马去做。比如睡觉:数五秒,立马放下手机,闭眼。...
  10. 鸿蒙移植mate10,鸿蒙系统+麒麟1020再升一个台阶,华为Mate30黯然神伤无奈下跌
  11. 计算机毕业设计之SSM网上订餐系统
  12. 软件测试数据中心,数据中心行业测试方案.PDF
  13. Photoshop插件-HDR(二)-脚本开发-PS插件
  14. shell编程——select语句东子破解
  15. 【Android】安卓开发实战之软键盘设置
  16. 用lingo解决钢管下料问题
  17. 年后第一场面试,被阿里P8测试专家虐惨了....
  18. class的操作:className和classList
  19. 裁员不可怕,可怕的是行业在发生巨变,而你却原地踏步
  20. 分式化简 设计算法 c语言,化简分式(对小数有用)

热门文章

  1. 企业开源该选什么软件许可证?
  2. 沃谈小知识丨通俗科普4G、5G CPE
  3. 【基础入门题022】一元钱换成分币
  4. 新版OpenWrt VLAN设置方法
  5. OpenWRT 教程 之 设置网络和无线
  6. c3p0连接池报错 A client timed out while waiting
  7. java官网以及java官网下载地址
  8. JavaWeb图书馆管理系统的设计与实现
  9. Style.xml的妙用(一)
  10. 自动化测试 (一) 12306火车票网站自动登录工具