主题中讨论的其他器件:、 CC2650STK、 LAUNCHXL-CC2650、 CC2650
工具/软件:TI-RTOS
环境:
CC2640F128 (我们基于 LSR 可寻址 x R3的定制板)
TI\simplelink\ble_sdk_2_02_02_25
TI RTOS 2.21.1.08
编译器 TI v 16.9.11 LTS
CCS 8.2.0.00007
已将 TI-RTOS 中的看门狗驱动程序添加至 SimplePeripheral 示例。 还添加了以下代码段。
在应用中
静态 Watchdog_handle wdtHandle=NULL; #define ENABLE_WDT 1 #define WDT_TICKs (200) // 1200000 => 1分钟?? // 15000 => 1sec (WDT 始终以48MHz/32运行) // 2000 =>超时周期到100ms? void watchdogTimerCallback (UArg handle) { Watchdog_clear (wdtHandle); //执行等效的 PIN 重置(硬重置)。 // cc26xx 系统尚未设计为处理软复位。 //进行软复位会使系统不稳定。 //所有软复位都需要替换为硬复位。 SysCtrlSystemReset();// SysCtrlSystemReset()而不是 HAL_SYSTEM_RESET() } void watchdogtimer_init() { Watchdog_Params wdParams; uint32_t tickValue; //打开看门狗 Watchdog_init(); Watchdog_Params_init (wdParams); wdParams.resetMode = Watchdog_reset_off;//或 Watchdog_reset_off? wdParams.debugStallMode = Watchdog_debug_star_on; //或 Watchdog_debug_stard_on?? wdParams.callbackFxn = watchdogTimerCallback; wdtHandle = Watchdog_open (Board_watchdog、&wdParams);// CC2650STK_WATCHDOG0 tickValue = Watchdog_convertMsToTicks (wdtHandle、WDT_TICKs); Watchdog_setReload (wdtHandle、tickValue); }
板头文件
/*! *@def CC2650STK_WatchdogName *@CC2650STK 开发板上看门狗的简短枚举 */ typedef 枚举 CC2650STK_WatchdogName{ CC2650STK_WATCHDOG0 = 0、 CC2650STK_WATCHDOGCOUNT }CC2650STK_WatchdogName; //通用看门狗实例标识符*/ #define Board_watchdog CC2650STK_WATCHDOG0
板级 C 文件
#if defined (_TI_Compiler_version__) #pragma DATA_SECTION (Watchdog_config、".const:Watchdog_config") #pragma DATA_SECTION (watchdogCC26XXHWAttrs、".const:watchdogDogWDogWAttrs") #endif #include "WatchdogCC26XHCC26XHWD_CC26XHOT_CC26XHOT_CC2620_CC26XHOT_CC26XHOT_Dog_CC2620_DogDog_Dog_CC2620_CC2620_CC2620_CC2620_CC2620_CC26XHOT_CC2620_DogDog_Dog_Dog_ { baseAddr = WDT_BASE、 .intNum = INT_WDT_IRQ、 .reloadValue = 1000 //重新加载值(以毫秒为单位)*/ }、 }; const Watchdog_Config Watchdog_config[CC2650STK_WATCHDOGCOUNT]={ { fxnTablePtr =&WatchdogCC26XX_fxnTable、 .object =&watchdogCC26XX 对象[Board_watchdog]、// CC2650STK_WATCHDOG0 * hwAttrs =&watchdogCC26XXHWAttrs[Board_Watchdog]/* CC2650STK_WATCHDOG0 * }、 }; const uint_least8_t Watchdog_count = CC2650STK_WATCHDOGCOUNT;
这不奏效。
在 CC2640R2F、LAUNCHXL-CC2640R2评估板环境中对相同代码进行了细微的相关修改(如电路板 LAUNCHXL 而不是 CC2650STK)- simplelink_cc2640r2_sdk_2_40_00_32、编译器 TI v 18.1.5 LTS、SimpleLink R2 SDK 2.40.32
正常工作。 我能够看到示波器探测红色/绿色 LED。 发生看门狗复位的情况。
解决方案是什么? (适用于 我们的定制板 -已经在 CC2640F128上进行了设计)