Quantcast
Channel: 蓝牙论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 7485

CC2541 BLE_Bridge,调用HAL_SYSTEM_RESET()死机

$
0
0
  现在CC2541 BLE_Bridge这个项目做得差不多了,但是还有一些问题:
  在设置蓝牙名重启时,调用HAL_SYSTEM_RESET(),会因为看门狗而不能重启,进入死机状态。
#define WD_EN               BV(3)
#define WD_MODE             BV(2)
#define WD_INT_1900_USEC    (BV(0) | BV(1))
#define WD_RESET1           (0xA0 | WD_EN | WD_INT_1900_USEC)
#define WD_RESET2           (0x50 | WD_EN | WD_INT_1900_USEC)
#define WD_KICK()           st( halIntState_t _s; HAL_ENTER_CRITICAL_SECTION(_s); WDCTL = (0xA0 | WDCTL & 0x0F); WDCTL = (0x50 | WDCTL & 0x0F); HAL_EXIT_CRITICAL_SECTION(_s);)
#define WD_INIT_1000MS()      st( WDCTL = 0x00; WDCTL |= 0x08; )                      //间隔时间为1000MS的看门狗启动
/* disable interrupts, set watchdog timer, wait for reset */
#define HAL_SYSTEM_RESET()  st( HAL_DISABLE_INTERRUPTS(); WDCTL = WD_RESET1; WDCTL = WD_RESET2; for(;;); )
     在代码中,初始化看门狗用WD_INIT_1000MS()这个函数,在void osal_start_system( void )函数中,调用WD_KICK()来喂狗,但在执行HAL_SYSTEM_RESET()时会死机,麻烦分析一下问题何在?

Viewing all articles
Browse latest Browse all 7485

Trending Articles