测试环境

协议栈版本: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. 【杠精】问卷星防切屏解除方法-解除问卷星平台模拟考试防作弊切屏和最大化全屏的方法
  2. LeetCode Minimum Depth of Binary Tree
  3. Consul入门02 - 运行Consul代理
  4. 福州大学软件工程1816 | W班 第7次作业成绩排名
  5. Sqlserver系统数据库和用户数据库日志文件全部丢失的恢复
  6. 北京黑马计算机培训宿舍图案,黑马经典图形!
  7. 2021泉州高考学校成绩查询,2021泉州市地区高考成绩排名查询,泉州市高考各高中成绩喜报榜单...
  8. 美团Android自动化之旅—生成渠道包
  9. 来自我的破船大大的博客,记录他的iOS成长之路,与君同勉!
  10. oracle表数据如何恢复,ORACLE如何恢复被delete的表数据
  11. Windows系统利用5次shift维权漏洞复现
  12. setwindowpos怎么改变z序_【情感问答】||朋友圈子小,沉默寡言嘴不甜,情商低,该怎么脱单?...
  13. python comprehensions_Python中的Comprehensions和Generations
  14. python大数据和java大数据的区别-学习大数据先学Python还是JAVA?
  15. mysql用户和权限管理总结_【转】mysql 用户及权限管理 小结
  16. winapi检测鼠标是否在任务栏
  17. 计算机中¥符号按哪个键,人民币键盘符号怎么打 电脑怎么打人民币符号
  18. C程序~一元二次方程求解
  19. 聊天室系统测试用例设计及报告
  20. Linux 驱动开发 六十六:多点触控(MT)协议

热门文章

  1. C与C++游戏项目练习1:弹跳的小球简易版
  2. STC单片机蓝牙无线下载-烧写程序ISP(STC8 STC15 STC12 STC11 STC89)
  3. 深入浅出CChart 每日一课——快乐高四第二十四课 武当梯云纵,移花接木之Visual Basic.Net
  4. 动态链接库的路径及依赖
  5. OK6410A 开发板 (八) 6 linux-5.11 OK6410A 详细解析 从 u-boot 的 theKernel 到 linux的 start_kernel
  6. 闪迪/西数新“带锁”颗粒45FF,用SM2263XT成功开卡经验分享
  7. 相机参数和相机模型各个坐标系(世界坐标系、相机坐标系、图像坐标系、像素坐标系之间变换)
  8. VMware部分产品
  9. ITextpdf将Markdown转换成PDF详细流程(HTML转PDF)
  10. 校园二手交易商城系统小程序-JAVA【数据库设计、源码、开题报告】