This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC1312R: SysCtrlSystemReset复位失败

Part Number: CC1312R
Other Parts Discussed in Thread: UNIFLASH

在小批量测试过程中,发现有部分设备在执行SysCtrlSystemReset()复位命令时,设备会卡死,复位失败,请问一下,可能的原因是什么?

  •     这是相关的代码:
        if (events & E_GUN_STATE_START_BUTTON_PRESSED)
            {
                // 延时50ms去抖
                Task_sleep(50 * 1000 / Clock_tickPeriod);

                // 重新判断按键是否按下
                if (0 == drv_button_get_state(GPIO_START_BUTTON))
                {
                    // 按键模块工作正常
                    s_task_acc_handler.module_key_sts = 1;
                    s_task_acc_handler.key_long_press_count = 0;
                    // 等待按键释放
                    do{
                        Task_sleep(10 * 1000 / Clock_tickPeriod);
                        s_task_acc_handler.key_long_press_count++;
                    } while (0 == drv_button_get_state(GPIO_START_BUTTON));

                    // 长按15s,重启
                    if (s_task_acc_handler.key_long_press_count >= 1500)        // 双灯长闪1次
                    {
                        MYLOG_DEBUG("重启\r\n");
                        SysCtrlSystemReset();
                    }
    }
  • debug是卡在SysCtrlSystemReset处了?返回的错误是什么

  • 已经找到原因了,我使用的cJtag2线制的编程接口,烧完程序后,我使用UniFlash的复位接口做的复位操作,复位后如果执行SysCtrlSystemReset(),几乎百分百会卡死,如果做1次硬复位或断电重新上电,这个问题就会解决。不再有卡死的现象。

  • 使用SysCtrlSystemReset时需要断开仿真器,否则会进入HIB状态

    断开jtag口就不会卡住

  • 断开也试过,也不行

  • 用HAL_SYSTEM_RESET()代替 SysCtrlSystemReset()试试

  • 不折腾了,我的问题解决了,只要硬复位或者断电重启就不会有这种情况,是Uniflash的复位命令带来的问题,规避就好了。

  • 也可以,HAL_SYSTEM_RESET()就相当于硬件复位