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.

[参考译文] TMS320F280023C:看门狗停止触发

Guru**** 2344730 points
Other Parts Discussed in Thread: SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1067391/tms320f280023c-watchdog-stops-triggering

部件号:TMS320F280023C
“线程:sysconfigtestLAUNCHXL-F280025C”中讨论的其它部分

你(们)好

我已设置看门狗在209 ms 后触发。

到目前为止,我没有设置看门狗的任何服务,所以它应该重新设置我的设备,或者拔下插头。

事实上,在首次启动后,它会重置设备,并持续一段时间,但随后它会停止执行此操作。

首先,我认为设备卡在某些 NMI 中,或者存在某些异常。 但事实证明,它运行正常,我的应用程序代码运行时就好像没有看门狗一样。

简而言之

预测:

设备每隔209毫秒重置一次,直到断电。

现实:

设备在一段时间内每209 MS 重置一次,然后重置事件停止,CPU 运行正常的软件。

“一些时间”=可变时间大约为2秒到20秒。

使用 sysconfig 工具设置看门狗:

随着209 MS 运行时间的推移,有足够的时间在串行端口上打印一些调试信息。

所以我在串行初始化后添加了这一项

    Log_debug("WatchDog counter value = %u\r\n", SysCtl_getWatchdogCounterValue());
    Log_debug("WatchDog reset status = %d\r\n", SysCtl_getWatchdogResetStatus());
    Log_debug("Sys control and status register = %X\r\n", HWREGH(WD_BASE + SYSCTL_O_SCSR));
    Log_debug("WatchDog KEY register = %X\r\n", HWREGH(WD_BASE + SYSCTL_O_WDKEY));
    Log_debug("WatchDog status register = %X\r\n", HWREGH(WD_BASE + SYSCTL_O_WDCR));
    Log_debug("WatchDog Windowed status register = %X\r\n", HWREGH(WD_BASE + SYSCTL_O_WDWCR));
    

* Log_debug 只是将宏扩展到 printf

我明白了

DBG: WatchDog counter value = 1
DBG: WatchDog reset status = 0
DBG: Sys control and status register = 5
DBG: WatchDog KEY register = 7
DBG: WatchDog status register = E07
DBG: WatchDog Windowed status register = 0

当 以后触发重置时,这两个值都相同。

我的 testmonitor 中还有这些值在命令上打印,当我要求它们在重置停止后,我仍然得到相同的值,除了不断变化的计数器(表示它正在运行)

那么,为什么我的看门狗停止工作?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    是否也可以在此处发布 WD 初始化代码? 同样,当 WD 停止触发重置时,IOS 上是否有任何活动可供您确认应用程序(代码)仍在运行。如果没有,则在 WD 初始化后的1个循环中添加 GPIO 切换代码以确认相同。 重置后,设备可能无法正常启动,因此永远不会执行 WD 初始化。 这是 TI 主板还是您自己的客户主板? 您的设备启动 PIN 上是否有任何活动驱动程序?  

    此致,

    维耶克·辛格

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1. sysconfig 生成的代码中的初始化代码(使用最新的 sysconfig 4.0)。

    void WATCHDOG_init(){
    	//WATCHDOG initialization 
    	SysCtl_disableWatchdog();
    	SysCtl_setWatchdogMode(SYSCTL_WD_MODE_RESET);
    	SysCtl_setWatchdogPredivider(SYSCTL_WD_PREDIV_128);
    	SysCtl_setWatchdogPrescaler(SYSCTL_WD_PRESCALE_64);
    	SysCtl_setWatchdogWindowValue(0);
    	SysCtl_enableWatchdog();
    	
    	 	
    }
    

    2.

    我在串行端口上运行的测试显示器中有许多 IO 活动。 下面是从我的串行终端复制的通信示例,因此您会看到应用程序代码非常有效。

    test>pm,r,d
    
    DBG: WatchDog counter value = 20
    DBG: WatchDog reset status = 0
    DBG: Sys control and status register = 5
    DBG: WatchDog KEY register = 7
    DBG: WatchDog status register = E07
    DBG: WatchDog Windowed status register = 0
    
    
    test>pm,r,d
    
    DBG: WatchDog counter value = 148
    DBG: WatchDog reset status = 0
    DBG: Sys control and status register = 5
    DBG: WatchDog KEY register = 7
    DBG: WatchDog status register = E07
    DBG: WatchDog Windowed status register = 0

    3.

    是的,WD 初始化正在运行,否则我在启动后就看不到 log_debug 在串行终端上打印的正确值,正如我在问题中所引用的。

    此外,正如您在我的测试监视器上的上述片段中所看到的,看门狗初始化的所有值都仍然存在。

    4.

    这是我们的定制板。

    5.

    GPIO32和 GPIO24有一个上拉,但如果您仍然怀疑 init 和应用程序是否实际运行,因为它进入了另一个引导模式, 然后,它进入闪存模式并运行上述 init 和应用程序,这也是我的第一个想法,我早就排除了这一点。

    [引用 userid="172948" url="~/support/icros/C2000 -微控制器组/CC2000 /f/C2000 -微控制器-论坛/1067391/tms320f280023c-watchders-stops -触发器]首先,我认为该设备在某些 NMI 或某些异常情况下卡住。 但事实证明,它运行正常,我的应用程序代码运行时就好像没有看门狗一样。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,所以你有两个连续的 WD 计数值,计数值正在变化。 这意味着 WD 正在计算。 如果您继续打印这些值,那么您是否曾经使用过 WD 计数最大值,之后会发生什么情况?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您还可以确认您的所有代码仅在闪存中,而不在 RAM 中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    只有闪存等待状态代码的设置在 ramfuncts 中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    “是”计数器正在运行,就像我在原始答案中所说的那样,当计数器换行时,不会发生任何情况。

    从终端附加带有时间戳的更长日志,以便您可以看到。

    正如我还提到的,我甚至没有为看门狗提供任何服务,所以我的 SW 没有在任何地方重置看门狗。

    [2022-01-08 01:01:23.987] pm,r,d
    [2022-01-08 01:01:26.066] 
    [2022-01-08 01:01:26.066] DBG: WatchDog counter value = 16
    [2022-01-08 01:01:26.072] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:26.072] DBG: Sys control and status register = 5
    [2022-01-08 01:01:26.072] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:26.072] DBG: WatchDog status register = E07
    [2022-01-08 01:01:26.072] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:26.088] 
    [2022-01-08 01:01:26.088] 
    [2022-01-08 01:01:26.088] test>pm,r,d
    [2022-01-08 01:01:26.872] 
    [2022-01-08 01:01:26.872] DBG: WatchDog counter value = 1
    [2022-01-08 01:01:26.872] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:26.888] DBG: Sys control and status register = 5
    [2022-01-08 01:01:26.896] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:26.896] DBG: WatchDog status register = E07
    [2022-01-08 01:01:26.899] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:26.904] 
    [2022-01-08 01:01:26.905] 
    [2022-01-08 01:01:26.905] test>pm,r,d
    [2022-01-08 01:01:27.522] 
    [2022-01-08 01:01:27.522] DBG: WatchDog counter value = 25
    [2022-01-08 01:01:27.522] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:27.522] DBG: Sys control and status register = 5
    [2022-01-08 01:01:27.522] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:27.522] DBG: WatchDog status register = E07
    [2022-01-08 01:01:27.538] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:27.538] 
    [2022-01-08 01:01:27.538] 
    [2022-01-08 01:01:27.538] test>pm,r,d
    [2022-01-08 01:01:28.155] 
    [2022-01-08 01:01:28.155] DBG: WatchDog counter value = 38
    [2022-01-08 01:01:28.155] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:28.155] DBG: Sys control and status register = 5
    [2022-01-08 01:01:28.165] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:28.165] DBG: WatchDog status register = E07
    [2022-01-08 01:01:28.171] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:28.171] 
    [2022-01-08 01:01:28.171] 
    [2022-01-08 01:01:28.171] test>pm,r,d
    [2022-01-08 01:01:28.803] 
    [2022-01-08 01:01:28.803] DBG: WatchDog counter value = 80
    [2022-01-08 01:01:28.803] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:28.803] DBG: Sys control and status register = 5
    [2022-01-08 01:01:28.818] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:28.822] DBG: WatchDog status register = E07
    [2022-01-08 01:01:28.822] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:28.822] 
    [2022-01-08 01:01:28.822] 
    [2022-01-08 01:01:28.822] test>pm,r,d
    [2022-01-08 01:01:29.486] 
    [2022-01-08 01:01:29.486] DBG: WatchDog counter value = 166
    [2022-01-08 01:01:29.502] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:29.505] DBG: Sys control and status register = 5
    [2022-01-08 01:01:29.505] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:29.505] DBG: WatchDog status register = E07
    [2022-01-08 01:01:29.505] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:29.522] 
    [2022-01-08 01:01:29.522] 
    [2022-01-08 01:01:29.522] test>pm,r,d
    [2022-01-08 01:01:30.105] 
    [2022-01-08 01:01:30.105] DBG: WatchDog counter value = 158
    [2022-01-08 01:01:30.105] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:30.121] DBG: Sys control and status register = 5
    [2022-01-08 01:01:30.121] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:30.121] DBG: WatchDog status register = E07
    [2022-01-08 01:01:30.121] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:30.137] 
    [2022-01-08 01:01:30.137] 
    [2022-01-08 01:01:30.137] test>pm,r,d
    [2022-01-08 01:01:30.738] 
    [2022-01-08 01:01:30.738] DBG: WatchDog counter value = 163
    [2022-01-08 01:01:30.738] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:30.738] DBG: Sys control and status register = 5
    [2022-01-08 01:01:30.738] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:30.738] DBG: WatchDog status register = E07
    [2022-01-08 01:01:30.755] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:30.755] 
    [2022-01-08 01:01:30.755] 
    [2022-01-08 01:01:30.755] test>pm,r,d
    [2022-01-08 01:01:31.404] 
    [2022-01-08 01:01:31.404] DBG: WatchDog counter value = 215
    [2022-01-08 01:01:31.405] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:31.405] DBG: Sys control and status register = 5
    [2022-01-08 01:01:31.405] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:31.405] DBG: WatchDog status register = E07
    [2022-01-08 01:01:31.405] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:31.422] 
    [2022-01-08 01:01:31.422] 
    [2022-01-08 01:01:31.422] test>pm,r,d
    [2022-01-08 01:01:32.015] 
    [2022-01-08 01:01:32.015] DBG: WatchDog counter value = 209
    [2022-01-08 01:01:32.023] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:32.025] DBG: Sys control and status register = 5
    [2022-01-08 01:01:32.025] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:32.025] DBG: WatchDog status register = E07
    [2022-01-08 01:01:32.035] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:32.038] 
    [2022-01-08 01:01:32.038] 
    [2022-01-08 01:01:32.038] test>pm,r,d
    [2022-01-08 01:01:32.663] 
    [2022-01-08 01:01:32.663] DBG: WatchDog counter value = 243
    [2022-01-08 01:01:32.671] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:32.673] DBG: Sys control and status register = 5
    [2022-01-08 01:01:32.673] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:32.673] DBG: WatchDog status register = E07
    [2022-01-08 01:01:32.683] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:32.683] 
    [2022-01-08 01:01:32.683] 
    [2022-01-08 01:01:32.683] test>pm,r,d
    [2022-01-08 01:01:33.278] 
    [2022-01-08 01:01:33.278] DBG: WatchDog counter value = 237
    [2022-01-08 01:01:33.286] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:33.288] DBG: Sys control and status register = 5
    [2022-01-08 01:01:33.288] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:33.288] DBG: WatchDog status register = E07
    [2022-01-08 01:01:33.298] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:33.305] 
    [2022-01-08 01:01:33.305] 
    [2022-01-08 01:01:33.305] test>pm,r,d
    [2022-01-08 01:01:33.888] 
    [2022-01-08 01:01:33.888] DBG: WatchDog counter value = 221
    [2022-01-08 01:01:33.888] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:33.888] DBG: Sys control and status register = 5
    [2022-01-08 01:01:33.888] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:33.904] DBG: WatchDog status register = E07
    [2022-01-08 01:01:33.904] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:33.904] 
    [2022-01-08 01:01:33.904] 
    [2022-01-08 01:01:33.904] test>pm,r,d
    [2022-01-08 01:01:34.613] 
    [2022-01-08 01:01:34.613] DBG: WatchDog counter value = 87
    [2022-01-08 01:01:34.613] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:34.613] DBG: Sys control and status register = 5
    [2022-01-08 01:01:34.622] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:34.623] DBG: WatchDog status register = E07
    [2022-01-08 01:01:34.623] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:34.631] 
    [2022-01-08 01:01:34.631] 
    [2022-01-08 01:01:34.631] test>pm,r,d
    [2022-01-08 01:01:35.267] 
    [2022-01-08 01:01:35.267] DBG: WatchDog counter value = 131
    [2022-01-08 01:01:35.269] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:35.272] DBG: Sys control and status register = 5
    [2022-01-08 01:01:35.277] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:35.277] DBG: WatchDog status register = E07
    [2022-01-08 01:01:35.277] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:35.287] 
    [2022-01-08 01:01:35.287] 
    [2022-01-08 01:01:35.287] test>pm,r,d
    [2022-01-08 01:01:35.924] 
    [2022-01-08 01:01:35.924] DBG: WatchDog counter value = 174
    [2022-01-08 01:01:35.926] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:35.926] DBG: Sys control and status register = 5
    [2022-01-08 01:01:35.926] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:35.934] DBG: WatchDog status register = E07
    [2022-01-08 01:01:35.938] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:35.946] 
    [2022-01-08 01:01:35.946] 
    [2022-01-08 01:01:35.946] test>pm,r,d
    [2022-01-08 01:01:36.562] 
    [2022-01-08 01:01:36.562] DBG: WatchDog counter value = 198
    [2022-01-08 01:01:36.562] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:36.570] DBG: Sys control and status register = 5
    [2022-01-08 01:01:36.572] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:36.572] DBG: WatchDog status register = E07
    [2022-01-08 01:01:36.580] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:36.582] 
    [2022-01-08 01:01:36.582] 
    [2022-01-08 01:01:36.582] test>pm,r,d
    [2022-01-08 01:01:37.171] 
    [2022-01-08 01:01:37.171] DBG: WatchDog counter value = 191
    [2022-01-08 01:01:37.171] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:37.171] DBG: Sys control and status register = 5
    [2022-01-08 01:01:37.188] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:37.188] DBG: WatchDog status register = E07
    [2022-01-08 01:01:37.188] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:37.188] 
    [2022-01-08 01:01:37.188] 
    [2022-01-08 01:01:37.188] test>pm,r,d
    [2022-01-08 01:01:37.835] 
    [2022-01-08 01:01:37.835] DBG: WatchDog counter value = 235
    [2022-01-08 01:01:37.838] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:37.843] DBG: Sys control and status register = 5
    [2022-01-08 01:01:37.845] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:37.845] DBG: WatchDog status register = E07
    [2022-01-08 01:01:37.853] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:37.856] 
    [2022-01-08 01:01:37.856] 
    [2022-01-08 01:01:37.856] test>pm,r,d
    [2022-01-08 01:01:38.467] 
    [2022-01-08 01:01:38.467] DBG: WatchDog counter value = 249
    [2022-01-08 01:01:38.472] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:38.472] DBG: Sys control and status register = 5
    [2022-01-08 01:01:38.475] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:38.475] DBG: WatchDog status register = E07
    [2022-01-08 01:01:38.475] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:38.485] 
    [2022-01-08 01:01:38.485] 
    [2022-01-08 01:01:38.485] test>pm,r,d
    [2022-01-08 01:01:39.107] 
    [2022-01-08 01:01:39.107] DBG: WatchDog counter value = 25
    [2022-01-08 01:01:39.117] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:39.121] DBG: Sys control and status register = 5
    [2022-01-08 01:01:39.121] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:39.121] DBG: WatchDog status register = E07
    [2022-01-08 01:01:39.121] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:39.121] 
    [2022-01-08 01:01:39.121] 
    [2022-01-08 01:01:39.121] test>pm,r,d
    [2022-01-08 01:01:39.738] 
    [2022-01-08 01:01:39.738] DBG: WatchDog counter value = 29
    [2022-01-08 01:01:39.738] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:39.738] DBG: Sys control and status register = 5
    [2022-01-08 01:01:39.738] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:39.738] DBG: WatchDog status register = E07
    [2022-01-08 01:01:39.755] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:39.755] 
    [2022-01-08 01:01:39.755] 
    [2022-01-08 01:01:39.755] test>pm,r,d
    [2022-01-08 01:01:40.321] 
    [2022-01-08 01:01:40.321] DBG: WatchDog counter value = 241
    [2022-01-08 01:01:40.321] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:40.321] DBG: Sys control and status register = 5
    [2022-01-08 01:01:40.321] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:40.338] DBG: WatchDog status register = E07
    [2022-01-08 01:01:40.338] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:40.355] 
    [2022-01-08 01:01:40.355] 
    [2022-01-08 01:01:40.355] test>pm,r,d
    [2022-01-08 01:01:40.938] 
    [2022-01-08 01:01:40.938] DBG: WatchDog counter value = 245
    [2022-01-08 01:01:40.938] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:40.955] DBG: Sys control and status register = 5
    [2022-01-08 01:01:40.955] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:40.955] DBG: WatchDog status register = E07
    [2022-01-08 01:01:40.955] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:40.955] 
    [2022-01-08 01:01:40.955] 
    [2022-01-08 01:01:40.955] test>pm,r,d
    [2022-01-08 01:01:41.555] 
    [2022-01-08 01:01:41.555] DBG: WatchDog counter value = 229
    [2022-01-08 01:01:41.569] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:41.571] DBG: Sys control and status register = 5
    [2022-01-08 01:01:41.571] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:41.571] DBG: WatchDog status register = E07
    [2022-01-08 01:01:41.571] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:41.577] 
    [2022-01-08 01:01:41.577] 
    [2022-01-08 01:01:41.577] test>pm,r,d
    [2022-01-08 01:01:42.221] 
    [2022-01-08 01:01:42.221] DBG: WatchDog counter value = 26
    [2022-01-08 01:01:42.223] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:42.223] DBG: Sys control and status register = 5
    [2022-01-08 01:01:42.238] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:42.238] DBG: WatchDog status register = E07
    [2022-01-08 01:01:42.238] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:42.241] 
    [2022-01-08 01:01:42.241] 
    [2022-01-08 01:01:42.241] test>pm,r,d
    [2022-01-08 01:01:42.828] 
    [2022-01-08 01:01:42.828] DBG: WatchDog counter value = 10
    [2022-01-08 01:01:42.828] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:42.828] DBG: Sys control and status register = 5
    [2022-01-08 01:01:42.836] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:42.838] DBG: WatchDog status register = E07
    [2022-01-08 01:01:42.855] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:42.858] 
    [2022-01-08 01:01:42.858] 
    [2022-01-08 01:01:42.858] test>pm,r,d
    [2022-01-08 01:01:43.455] 
    [2022-01-08 01:01:43.455] DBG: WatchDog counter value = 24
    [2022-01-08 01:01:43.455] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:43.455] DBG: Sys control and status register = 5
    [2022-01-08 01:01:43.455] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:43.472] DBG: WatchDog status register = E07
    [2022-01-08 01:01:43.472] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:43.488] 
    [2022-01-08 01:01:43.488] 
    [2022-01-08 01:01:43.488] test>pm,r,d
    [2022-01-08 01:01:44.072] 
    [2022-01-08 01:01:44.072] DBG: WatchDog counter value = 19
    [2022-01-08 01:01:44.072] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:44.072] DBG: Sys control and status register = 5
    [2022-01-08 01:01:44.087] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:44.088] DBG: WatchDog status register = E07
    [2022-01-08 01:01:44.088] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:44.109] 
    [2022-01-08 01:01:44.109] 
    [2022-01-08 01:01:44.109] test>pm,r,d
    [2022-01-08 01:01:44.659] 
    [2022-01-08 01:01:44.659] DBG: WatchDog counter value = 238
    [2022-01-08 01:01:44.671] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:44.671] DBG: Sys control and status register = 5
    [2022-01-08 01:01:44.688] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:44.688] DBG: WatchDog status register = E07
    [2022-01-08 01:01:44.688] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:44.688] 
    [2022-01-08 01:01:44.688] 
    [2022-01-08 01:01:44.688] test>pm,r,d
    [2022-01-08 01:01:45.321] 
    [2022-01-08 01:01:45.321] DBG: WatchDog counter value = 26
    [2022-01-08 01:01:45.321] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:45.321] DBG: Sys control and status register = 5
    [2022-01-08 01:01:45.321] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:45.338] DBG: WatchDog status register = E07
    [2022-01-08 01:01:45.338] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:45.360] 
    [2022-01-08 01:01:45.360] 
    [2022-01-08 01:01:45.360] test>pm,r,d
    [2022-01-08 01:01:45.938] 
    [2022-01-08 01:01:45.938] DBG: WatchDog counter value = 29
    [2022-01-08 01:01:45.938] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:45.955] DBG: Sys control and status register = 5
    [2022-01-08 01:01:45.955] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:45.955] DBG: WatchDog status register = E07
    [2022-01-08 01:01:45.961] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:45.961] 
    [2022-01-08 01:01:45.961] 
    [2022-01-08 01:01:45.961] test>pm,r,d
    [2022-01-08 01:01:46.538] 
    [2022-01-08 01:01:46.538] DBG: WatchDog counter value = 3
    [2022-01-08 01:01:46.538] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:46.555] DBG: Sys control and status register = 5
    [2022-01-08 01:01:46.555] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:46.572] DBG: WatchDog status register = E07
    [2022-01-08 01:01:46.572] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:46.572] 
    [2022-01-08 01:01:46.572] 
    [2022-01-08 01:01:46.572] test>pm,r,d
    [2022-01-08 01:01:47.222] 
    [2022-01-08 01:01:47.222] DBG: WatchDog counter value = 86
    [2022-01-08 01:01:47.238] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:47.238] DBG: Sys control and status register = 5
    [2022-01-08 01:01:47.255] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:47.255] DBG: WatchDog status register = E07
    [2022-01-08 01:01:47.255] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:47.255] 
    [2022-01-08 01:01:47.255] 
    [2022-01-08 01:01:47.255] test>pm,r,d
    [2022-01-08 01:01:47.805] 
    [2022-01-08 01:01:47.805] DBG: WatchDog counter value = 39
    [2022-01-08 01:01:47.821] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:47.821] DBG: Sys control and status register = 5
    [2022-01-08 01:01:47.821] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:47.838] DBG: WatchDog status register = E07
    [2022-01-08 01:01:47.838] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:47.838] 
    [2022-01-08 01:01:47.838] 
    [2022-01-08 01:01:47.838] test>pm,r,d
    [2022-01-08 01:01:48.452] 
    [2022-01-08 01:01:48.452] DBG: WatchDog counter value = 64
    [2022-01-08 01:01:48.452] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:48.452] DBG: Sys control and status register = 5
    [2022-01-08 01:01:48.467] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:48.471] DBG: WatchDog status register = E07
    [2022-01-08 01:01:48.471] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:48.488] 
    [2022-01-08 01:01:48.488] 
    [2022-01-08 01:01:48.488] test>pm,r,d
    [2022-01-08 01:01:49.073] 
    [2022-01-08 01:01:49.073] DBG: WatchDog counter value = 59
    [2022-01-08 01:01:49.073] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:49.073] DBG: Sys control and status register = 5
    [2022-01-08 01:01:49.073] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:49.088] DBG: WatchDog status register = E07
    [2022-01-08 01:01:49.088] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:49.088] 
    [2022-01-08 01:01:49.088] 
    [2022-01-08 01:01:49.088] test>pm,r,d
    [2022-01-08 01:01:49.795] 
    [2022-01-08 01:01:49.795] DBG: WatchDog counter value = 182
    [2022-01-08 01:01:49.795] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:49.795] DBG: Sys control and status register = 5
    [2022-01-08 01:01:49.805] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:49.805] DBG: WatchDog status register = E07
    [2022-01-08 01:01:49.822] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:49.822] 
    [2022-01-08 01:01:49.822] 
    [2022-01-08 01:01:49.822] test>pm,r,d
    [2022-01-08 01:01:50.404] 
    [2022-01-08 01:01:50.404] DBG: WatchDog counter value = 165
    [2022-01-08 01:01:50.405] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:50.405] DBG: Sys control and status register = 5
    [2022-01-08 01:01:50.421] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:50.421] DBG: WatchDog status register = E07
    [2022-01-08 01:01:50.421] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:50.421] 
    [2022-01-08 01:01:50.421] 
    [2022-01-08 01:01:50.421] test>pm,r,d
    [2022-01-08 01:01:51.082] 
    [2022-01-08 01:01:51.082] DBG: WatchDog counter value = 238
    [2022-01-08 01:01:51.088] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:51.088] DBG: Sys control and status register = 5
    [2022-01-08 01:01:51.105] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:51.105] DBG: WatchDog status register = E07
    [2022-01-08 01:01:51.105] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:51.105] 
    [2022-01-08 01:01:51.105] 
    [2022-01-08 01:01:51.105] test>pm,r,d
    [2022-01-08 01:01:51.689] 
    [2022-01-08 01:01:51.689] DBG: WatchDog counter value = 232
    [2022-01-08 01:01:51.705] DBG: WatchDog reset status = 0
    [2022-01-08 01:01:51.705] DBG: Sys control and status register = 5
    [2022-01-08 01:01:51.705] DBG: WatchDog KEY register = 7
    [2022-01-08 01:01:51.722] DBG: WatchDog status register = E07
    [2022-01-08 01:01:51.722] DBG: WatchDog Windowed status register = 0
    [2022-01-08 01:01:51.722] 
    [2022-01-08 01:01:51.722] 
    [2022-01-08 01:01:51.722] test>

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    为了三重确保,没有一些代码指针在驱动程序库中调用 serviceWatchdog 函数,我进入并更改了该键的定义,因此调用该键将失败。 正如预期的那样,这一点没有任何改变。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,马丁,

    我不确定您如何打印 WD 配置值。 您是否在连续循环中运行它? 我看到计数值有一段时间在下降而不是增加,例如从16上升到1,后来从215上升到209。  有什么想法为什么会这样。

    如果 WD 计数器达到0xFF 值,您还能检查您的代码吗? 基本上,您只需在循环中读取计数器寄存器,当计数器的值为0xFF 时,打印所有设置,包括计数器值。

    此致,

    维耶克·辛格

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我有一台运行在目标上的测试监视器,可以在其中键入命令

    test>

    是来自 trestmonitor 的提示

    pm,r,d

    是我键入的命令

     

    DBG: WatchDog counter value = 232
    DBG: WatchDog reset status = 0
    DBG: Sys control and status register = 5
    DBG: WatchDog KEY register = 7
    DBG: WatchDog status register = E07
    DBG: WatchDog Windowed status register = 0

    是测试监视器的响应。

    从时间戳(由 TeraTerm 记录器添加)中可以看出,这些命令之间有5到1个截面,因此预计计数器将在209 ms 后滚动,并将其配置为最大值。

    我将执行建议的测试并返回。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,明白了。 此外,如果您能够对车载 XRSn 引脚进行示波,请同时分享该引脚的波形。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我进行了建议的测试,最终我使用了 GPIOs 来避免与 log_debug 的串行打印混在一起

    我运行了以下代码:

        while( 1 )
        {
            if( 0xFF == SysCtl_getWatchdogCounterValue())
            {
                GPIO_writePin( RELAY_2_PIN, 1 );
    //            Log_debug("W\r\n");
            }
            else
            {
                GPIO_writePin( RELAY_2_PIN, 0 );
            }
            if( 0x00 == SysCtl_getWatchdogCounterValue())
            {
                GPIO_writePin( RELAY_1_PIN, 1 );
    //            Log_debug("0\r\n");
            }
            else
            {
                GPIO_writePin( RELAY_1_PIN, 0 );
    //            Log_debug("0\r\n");
            }
        }

    我从中提取了这些范围转储

    CH1:(橙色)是来自上述代码的 RELAY _2_PIN

    CH2 (蓝色)。是来自上述代码的 RELAY _1_PIN

    Period of 0xFF and 0x00

    watchdog period measurement

    我的结论是,这台柜台的运行情况与预期的一样。

    我将返回 XRSn 测量值。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是 XRSn 引脚,图片来自 WD 设法重置 CPU 的其中一个,当它停止执行此操作时,XRSn 也会完全静音。

    XRSn pin on WD reset

    我读出的下拉时间为40 µs,这比您在 sysconfig 中的读数少得多

    与 XRSn 的连接

    请注意,IC700未安装,如果我们后来发现需要进行永久复位,则会将其放在原理图中以对 PCB 上的空间进行对焦。

    因此,XRSn 仅连接到 R701和 C700,我们不使用它来重置任何其他设备。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    马丁

    [引用 userid="172948" url="~ë/support/icros/c2000-icro-group/c2f/c2000-icro-forum-forum/1067391/tms320f280023c-watchders-stops 触发/3951126#3951126"]

    我读出的下拉时间为40 µs,这比您在 sysconfig 中的读数少得多

    [/引用]

    此处的 WDCLK 是10MHz 的 INTOSC1 (不是您所显示的),因此低脉冲应为51.2uS 或高。  

    我假设您正在您的定制板上尝试此操作。 如果您有 TI 主板,您可以在上面尝试一下,看看您是否仍有此问题? 如果您看到相同的问题,我将采集您的示例代码,并尝试在我的设置中重新生成它。

    此致,

    维耶克·辛格

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    µs,40 μ m 的距离仅仅是看不那么嘈杂的图形,所以51个声音在读数中是无噪声的。

    但是,除了我不担心这段时间,我们也不会将这一信号用于任何目的,它只是让我感到震惊,它与 sysconfig 计算的结果相去甚远,看起来就像 sysconfig 中的一个错误。

    关于到 TI 主板的端口,是的,这是在我们自己的主板上测量的,与我发布的示意图一样。

    昨天我在一个 TI 电路板上做了快速测试,但这并没有显示错误,因此需要进一步调查。 我现在的日程安排非常紧,所以我不知道我是否能够这样做。

    关于 TI 主板,我们使用的是 f280023,启动板使用的是 f280025c (不要认为我可以用 f280023获得启动板)。 这两块芯片上的硅有多相似?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢马丁。

    [引用 userid="172948" url="~/support/icles/c2000-iclers-group/c2f/c2000-iclms -forume/1067391/tms320f280023c-watch-stops -trigging/395187#395187184]关于 TI 主板,我们使用 f280023,启动板使用的是280023,启动板使用的是2800c (我不能想到的)。 这两个芯片上的硅有多相似?

    两者都是相同的,因此在使用这两种方法中的任何一种都没有问题。

    此致,

    维耶克·辛格

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    我今天花了大部分时间来将其最小化,但现在我有一组文件将在 LUNCHXL-F280025C 上显示错误。

    我可以在这里引用源的主要部分,但如果这不足以让您复制,请建议我如何将所有文件发送给您。

    我做了一个小的主电源,首先打开红色 LED 指示灯一小段时间,然后它开始闪烁绿色 LED 指示灯。

    这意味着红色 LED 闪烁表示刚刚发生重置,闪烁的绿色 LED 指示主回路正在运行。

    运行此程序时,我观察到红色 LED 指示灯闪烁,表示看门狗工作正常,但经过一段时间(2-30秒),红色 LED 指示灯停止工作,只有绿色闪烁,表示看门狗停止工作,主循环正在运行。

    Watchds_init()之前的延迟对该故障具有重大影响。我尝试了绕过延迟和/或更改延迟。

     与 我们用作偏移量的 C200Ware 示例项目相比,device_init()几乎没有变化,您可以使用 LED_ex1_Bibky。

    主片段:

    #include "device.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/gpio.h"
    #include "driverlib/interrupt.h"
    
    /// @privatesection
    // ---------------- Local constants (#define) ---------------------------------
    
    // LEDs
    #define DEVICE_GPIO_PIN_RED_LED        31U             // GPIO number for LED4
    #define DEVICE_GPIO_PIN_GREEN_LED      34U             // GPIO number for LED5
    
    /// @privatesection
    // ---------------- Local type declarations (typedef) -------------------------
    
    /// @privatesection
    // ---------------- Local data definitions (static) ---------------------------
    
    /// @privatesection
    // ---------------- Local function declarations (static) ----------------------
    static void WATCHDOG_init();
    
    /// @publicsection
    // ---------------- Public function definitions (implementation) --------------
    
    
    
    /**
     * @brief   Entry point of the powermicro software.
     */
    void main( void )
    {
        // Initialize device clock and peripherals
        Device_init();
    
        // Initialize GPIO and configure GPIO pins for CANTX/CANRX
        GPIO_setPadConfig(DEVICE_GPIO_PIN_RED_LED, GPIO_PIN_TYPE_STD);
        GPIO_setDirectionMode(DEVICE_GPIO_PIN_RED_LED, GPIO_DIR_MODE_OUT);
        GPIO_setPadConfig(DEVICE_GPIO_PIN_GREEN_LED, GPIO_PIN_TYPE_STD);
        GPIO_setDirectionMode(DEVICE_GPIO_PIN_GREEN_LED, GPIO_DIR_MODE_OUT);
    
    
    
        // Board initialization
        // This is not needed but it makes the fault happen way more frequent, without it you may need to wait for an hour or more ??
        // This delay was originally part of the ADC_init also generated by sysconfig, (adc setup need to wait for a voltage regulator to stabelize)
        DEVICE_DELAY_US(5000);
        EALLOW;
        WATCHDOG_init();
        EDIS;
    
        GPIO_writePin(DEVICE_GPIO_PIN_RED_LED, 0);
        DEVICE_DELAY_US(50 * 1000L);
        GPIO_writePin(DEVICE_GPIO_PIN_RED_LED, 1);
        for(;;)
        {
    
            // Turn on LED
            GPIO_writePin(DEVICE_GPIO_PIN_GREEN_LED, 0);
    
            // Delay for a bit.
            DEVICE_DELAY_US(50 * 1000L);
    
            // Turn off LED
            GPIO_writePin(DEVICE_GPIO_PIN_GREEN_LED, 1);
    
            // Delay for a bit.
            DEVICE_DELAY_US(50 * 1000L);
        }
    }
    
    /// @privatesection
    // ---------------- Local function definitions (static implementation) ---------------
    
    /**
     * Copied from sysconfig generated code
     */
    static void WATCHDOG_init(){
        //WATCHDOG initialization
    //    EALLOW;
        SysCtl_disableWatchdog();
        SysCtl_setWatchdogMode(SYSCTL_WD_MODE_RESET);
        SysCtl_setWatchdogPredivider(SYSCTL_WD_PREDIV_128);
        SysCtl_setWatchdogPrescaler(SYSCTL_WD_PRESCALE_64);
        SysCtl_setWatchdogWindowValue(0);
        SysCtl_enableWatchdog();
    //    EDIS;
    }
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,马丁,

    我在 LAUNCXL-F280025C 上尝试了您的项目,但无法重现该问题(即始终看到红色闪烁)。 您可以共享“设备初始化();'函数吗? 我认为这是唯一一个可能有所不同的事情。

    最佳

    凯文

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不要认为这是设备初始化,它与闪烁示例相同。 但也许是链接器文件。

    我可以通过什么方式将整个项目发送给您?

    MEMORY
    {
    // Mx Ram, Dedicated CPU ram.
       BEGIN             : origin = 0x080000,   length = 0x00000002
       BOOT_RSVD         : origin = 0x00000002, length = 0x00000126
       RAMMx             : origin = 0x00000128, length = 0x000006D0
    // RAMMx_RSVD        : origin = 0x000007F8, length = 0x00000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
    
       /* Local Shared RAM, shared to CPU, HIC and BGCRC */
       RAMLS             : origin = 0x0000A000, length = 0x00002000
       /* Global Shared RAM, shared to CPU, HIC and DMA */
       RAMGS            : origin = 0x0000C000, length = 0x000007F8
    // RAMGS_RSVD       : origin = 0x0000C7F8, length = 0x00000008 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
    
    // PIE_VECTOR_TABLE  : origin = 0x0000D000, length = 0x00000200
    
    // TI_OTP            : origin = 0x00070000, length = 0x00000400
    // DCSM_OTP          : origin = 0x00078000, length = 0x00000400
    
       /* on-chip Flash */
       FLASH_BANK0       : origin = 0x00080002, length = 0x00007FEE
    // FLASH_BANK0_RSVD  : origin = 0x0008FFF0, length = 0x00000010 /* Reserve and do not use for code as per the errata advisory "Memory: Prefetching Beyond Valid Memory" */
    
       BOOT_ROM          : origin = 0x003F0000, length = 0x00008000
       BOOT_ROM_EXT      : origin = 0x003F8000, length = 0x00007FC0
       RESET             : origin = 0x003FFFC0, length = 0x00000002
    }
    
    
    SECTIONS
    {
       codestart        : > BEGIN,           ALIGN(8)
       .text            : > FLASH_BANK0,     ALIGN(8)
       .cinit           : > FLASH_BANK0,     ALIGN(8)
       .switch          : > FLASH_BANK0,     ALIGN(8)
       .reset           : > RESET,           TYPE = DSECT /* not used, */
    
       .stack           : > RAMMx
    
       .init_array      : > FLASH_BANK0,     ALIGN(8)
       .bss             : >> RAMLS | RAMGS
       .bss:output      : >> RAMLS | RAMGS
       .bss:cio         : >> RAMLS | RAMGS
       .const           : > FLASH_BANK0,     ALIGN(8)
       .data            : >> RAMLS | RAMGS
       .sysmem          : > RAMLS | RAMGS
    
    //    ramgs0 : > RAMGS0
    
        /*  Allocate IQ math areas: */
    //   IQmath           : > RAMLS
    //   IQmathTables     : > RAMLS
    
    
      .TI.ramfunc      : LOAD = FLASH_BANK0,
                      RUN = RAMGS,
                      LOAD_START(RamfuncsLoadStart),
                      LOAD_SIZE(RamfuncsLoadSize),
                      LOAD_END(RamfuncsLoadEnd),
                      RUN_START(RamfuncsRunStart),
                      RUN_SIZE(RamfuncsRunSize),
                      RUN_END(RamfuncsRunEnd),
                      ALIGN(8)
    
    }
    /*
    //===========================================================================
    // End of file.
    //===========================================================================
    */
    

    //#############################################################################
    // $TI Release: F28002x Support Library v3.04.00.00 $
    // $Release Date: Fri Feb 12 18:58:34 IST 2021 $
    // $Copyright:
    // Copyright (C) 2021 Texas Instruments Incorporated - http://www.ti.com/
    //
    // Redistribution and use in source and binary forms, with or without 
    // modification, are permitted provided that the following conditions 
    // are met:
    // 
    //   Redistributions of source code must retain the above copyright 
    //   notice, this list of conditions and the following disclaimer.
    // 
    //   Redistributions in binary form must reproduce the above copyright
    //   notice, this list of conditions and the following disclaimer in the 
    //   documentation and/or other materials provided with the   
    //   distribution.
    // 
    //   Neither the name of Texas Instruments Incorporated nor the names of
    //   its contributors may be used to endorse or promote products derived
    //   from this software without specific prior written permission.
    // 
    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    // $
    //#############################################################################
    
    /**
     * @copyright Confidential property of Danfoss Drives A/S 2021-2022. All Rights Reserved.
     * @copyright (C) 2021 Texas Instruments Incorporated - http://www.ti.com/
     *
     * @defgroup DEVICE TMS32F28002x device module.
     * @{
     * @brief Collection of device specific functions for TMS32F28002x micro controllers.
     * @inlayer HA_LAYER
     *
     * @file
     */
    
    // ---------------- Dependencies (#include) needed by the implementation ------
    #include "device.h" // Always my own interface first
    #include "driverlib/sysctl.h"
    #include "driverlib/asysctl.h"
    #include "driverlib/flash.h"
    #include "driverlib/gpio.h"
    
    #ifdef __cplusplus
    using std::memcpy;
    #endif
    
    /// @privatesection
    // ---------------- Local constants (#define) ---------------------------------
    
    /// @privatesection
    // ---------------- Local type declarations (typedef) -------------------------
    
    /// @privatesection
    // ---------------- Local data definitions (static) ---------------------------
    
    /// @privatesection
    // ---------------- Local function declarations (static) ----------------------
    
    /// @publicsection
    // ---------------- Public function definitions (implementation) --------------
    
    /** @brief Initialize the device.
     *  Primarily initializes system control to a known state by disabling the watchdog,
     *  setting up the SYSCLKOUT frequency, and enabling the clocks to the peripherals.
     */
    void Device_init( void )
    {
        // Disable the watchdog
        SysCtl_disableWatchdog();
    
    #ifdef _FLASH
        // Copy time critical code and flash setup code to RAM. This includes the
        // following functions: InitFlash();
        //
        // The RamfuncsLoadStart, RamfuncsLoadSize, and RamfuncsRunStart symbols
        // are created by the linker. Refer to the device .cmd file.
        memcpy( &RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize );
    
        // Call Flash Initialization to setup flash waitstates. This function must
        // reside in RAM.
        Flash_initModule( FLASH0CTRL_BASE, FLASH0ECC_BASE, DEVICE_FLASH_WAITSTATES );
    #endif
    
        // Set up PLL control and clock dividers
        SysCtl_setClock( DEVICE_SETCLOCK_CFG );
    
        // Make sure the LSPCLK divider is set to the default (divide by 4)
        SysCtl_setLowSpeedClock( SYSCTL_LSPCLK_PRESCALE_4 );
    
        // These asserts will check that the #defines for the clock rates in
        // device.h match the actual rates that have been configured. If they do
        // not match, check that the calculations of DEVICE_SYSCLK_FREQ and
        // DEVICE_LSPCLK_FREQ are accurate. Some examples will not perform as
        // expected if these are not correct.
        ASSERT( SysCtl_getClock(DEVICE_OSCSRC_FREQ) == DEVICE_SYSCLK_FREQ );
        ASSERT( SysCtl_getLowSpeedClock(DEVICE_OSCSRC_FREQ) == DEVICE_LSPCLK_FREQ );
    
    #ifndef _FLASH
        //
        // Call Device_cal function when run using debugger
        // This function is called as part of the Boot code. The function is called
        // in the Device_init function since during debug time resets, the boot code
        // will not be executed and the gel script will reinitialize all the
        // registers and the calibrated values will be lost.
        // Sysctl_deviceCal is a wrapper function for Device_Cal
        //
        SysCtl_deviceCal();
    #endif
    
        // Turn on all peripherals
        Device_enableAllPeripherals();
    
        // Lock VREGCTL Register
        // The register VREGCTL is not supported in this device. It is locked to
        // prevent any writes to this register
        ASysCtl_lockVREG();
    }
    
    /**
     * @brief Turn on all peripherals.
     *  enabling the clock to the peripherals' registers.
     *
     *  @note That to reduce power, unused peripherals could be disabled.<br>
     *        But this is not a battery powered device so we let them all be on.
     */
    void Device_enableAllPeripherals( void )
    {
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_DMA );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_TIMER0 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_TIMER1 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_TIMER2 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_CPUBGCRC );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_HRCAL );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_TBCLKSYNC );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_ERAD );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_EPWM1 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_EPWM2 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_EPWM3 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_EPWM4 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_EPWM5 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_EPWM6 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_EPWM7 );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_ECAP1 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_ECAP2 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_ECAP3 );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_EQEP1 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_EQEP2 );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_SCIA );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_SPIA );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_SPIB );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_I2CA );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_I2CB );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_CANA );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_ADCA );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_ADCC );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_CMPSS1 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_CMPSS2 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_CMPSS3 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_CMPSS4 );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_FSITXA );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_FSIRXA );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_LINA );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_LINB );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_PMBUSA );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_DCC0 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_DCC1 );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_CLB1 );
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_CLB2 );
    
        SysCtl_enablePeripheral( SYSCTL_PERIPH_CLK_HICA );
    }
    
    /**
     *  @brief Disable pin locks on GPIOs.
     */
    void Device_initGPIO( void )
    {
        // Disable pin locks.
        GPIO_unlockPortConfig( GPIO_PORT_A, 0xFFFFFFFF );
        GPIO_unlockPortConfig( GPIO_PORT_B, 0xFFFFFFFF );
        GPIO_unlockPortConfig( GPIO_PORT_H, 0xFFFFFFFF );
    }
    
    /** @brief Error handling function to be called when an ASSERT is violated
     *
     * @param filename File name in which the error has occurred
     * @param line Line number within the file
     */
    void __error__( char *filename, uint32_t line )
    {
        (void)filename;
        (void)line;
        // An ASSERT condition was evaluated as false. You can use the filename and
        // line parameters to determine what went wrong.
        ESTOP0;
    }
    
    /// @privatesection
    // ---------------- Local function definitions (implementation) ---------------
    
    /** @} group*/
    

    尝试同时添加页眉,但得到了此信息

    访问被拒绝

    您无权访问此服务器上的“”>e2e.ti.com/.../configure。

    参考编号:18.7c85655f.1642019252.aad9419

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尝试在新帖子中使用标题

    不会再去了

    访问被拒绝

    您无权访问此服务器上的“”>e2e.ti.com/.../configure。

    参考#18.7c85655f.1642019332.aaee0b9.

    如果我可以将项目上载到其他地方,会节省我们的时间。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    马丁  

    您应该能够导出项目文件并发送 zip 文件。  

    此致,

    维耶克·辛格

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,马丁,

    我尝试了您提供的链接器 CMD 和 device.c 文件,但仍无法重现该问题。

    如 Vivek 所述,您可以通过右键单击项目名称-->选择导出-->浏览对话框,直接在 CCS 中导出 zip 文件。

    最佳

    凯文

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的问题不是创建文件,而是在何处/如何发送文件。 也许森林阻止了我对树的看法,但我在这里找不到任何地方可以附加文件到本案例中,我尝试单击您的姓名之一,看看我是否可以这样发送文件,但没有找到方法。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    如果这是一件批量生产的事情,我在这里附上一张午餐板芯片的图片。

    F280025c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    由于您在董事会和启动板上观察到这一问题,我认为这一问题不是特定于批量处理的。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    马丁

    是否可以尝试插入-->图像/视频/文件-->选择您的压缩文件?

    最佳

    凯文

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是一个黑客;-) 我会尝试

    e2e.ti.com/.../WD_5F00_fail_5F005F00_mao_5F00_at_5F00_danfoss_5F00_com.zip

    缝合效果

    您将在以下位置找到该项目:

    \watchder_fault\product\powermmicro\lowPower\

    我知道有些奇怪的路,但这是一个被猜测的项目的遗迹  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,马丁,

    感谢上传。

    我按目前的方式尝试了您的项目,但它没有从 Flash 独立运行。 在将“_flash”添加到预定义符号后,它似乎工作正常。

    您能否检查项目中是否定义了此符号? 它在 Device_init()中被引用,用于将代码从闪存复制到 RAM。

    最佳

    凯文

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请使用默认配置(尽管命名)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我还对整个文件夹结构进行了压缩,因此在默认文件夹中,您可以找到编译器中产生的二进制文件以供参考。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,马丁,

    我尝试了“默认”配置,我可以重现您的问题。 现在了解原因。

    您是否知道您在工作的“默认启动板”配置和非工作的“默认”配置之间有何具体区别? 我将进一步了解一下“默认”配置。

    最佳

    凯文

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="315587" url="~/support/icros/c2000-icroms-group/c2f/c2000-微控制器-forume/1067391/tms320f280023c-watchduts-stops -trigging/3955320#3955320"]我可以重现您的问题

    射线:-)

    我很久没有使用“默认启动板”配置,我以为我已经删除了它,这是在我们获得自己的硬件之前,项目启动很早的一种恢复。 因此,请忽略这一点。

    正如我在消息来源中提到的,在我初始化看门狗之前的延迟似乎对故障有很大影响。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,马丁,

    我认为这与 CCS 项目的优化设置有关。 我尝试了以下设置,它似乎正常工作,请也尝试。

    我通过比较“默认启动板”和“默认”配置的编译器设置找到了这一点。

    最佳

    凯文

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我可以确认优化设置对问题有影响。

    我以 OPT 级别1运行,在10-100重置后看到问题。

    如果我尝试您的选择级别关闭建议,我到目前为止已看到问题。

    但有趣的是,如果我将选项级别设置为0,问题很快就会出现,即白令0-2重置,我实际上已经手动重置了几次,直到看到看门狗重置发生。

    我尝试在单个文件上设置优化级别,结果发现,如果将项目设置为 opt = offf,并且将 powermmicro.c 设置为 opt = 1,则错误会再次出现。

    所有这些都不能解释为什么重置之间的行为不同。 但希望它能为您带来一些东西。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,马丁,

    我们审查了优化的代码,发现在 watcher_init 函数中,所有要注册的写入都有 EALLOW 和 EDIS 代码,优化将删除并替换为一个 EALLOW,然后是所有寄存器写入,然后是 EDIS。 这会创建对 WDCR 寄存器的背对背写,该寄存器有一些限制,因此会产生问题。 我在 WD 启用码之前插入了几个 NOPS,这解决了问题。

    请参阅以下代码快照-

    此致,

    维耶克·辛格

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    看起来很棒,我认为这是一个可行的结论,可以解释为什么它在重置之间有所不同。

    现在,TI 希望您与一些芯片设计人员联系

    1. 确认这是问题所在
    2. 有关如何设置这些寄存器的更详细说明,
      1. 8 NOP 在所有情况下都足够了,还是仅仅幸运地在这里?
      2. 是否有任何状态寄存器可以检测到此故障状态?
    3. 请在手册或勘误表中获取上述信息。

    当设置这些寄存器的正确算法被 knwon 时,请更改 syslib 以遵守此规则。

    供参考。 根据您的解决方案,我对我的代码进行了类似的更改,代码已经运行了几个小时,没有任何故障。

    static void WATCHDOG_init(){
        //WATCHDOG initialization
        EALLOW;
        SysCtl_disableWatchdog();
        SysCtl_setWatchdogMode(SYSCTL_WD_MODE_RESET);
        SysCtl_setWatchdogPredivider(SYSCTL_WD_PREDIV_128);
        SysCtl_setWatchdogPrescaler(SYSCTL_WD_PRESCALE_64);
        SysCtl_setWatchdogWindowValue(0);
        SysCtl_delay(10);
        SysCtl_enableWatchdog();
        EDIS;
    }
    

    主要区别是我使用 sysctl_delay 函数。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,马丁,

    [引用 userid="172948" url="~/support/icros/c2000-icro-group/c2f/c2000-微控制器-forume/1067391/tms320f280023c-watchdits-stops -trigger/3956476#3956476"]确认此问题为问题

    是的,这是一个问题,我们对此有待定操作,以更新我们的文档和软件。  

    [引用 userid="172948" url="~ë/support/icles/c2000微控制器-组/CC2000 /f/c2000微控制器-论坛/1067391/tms320f280023c-watcher-stops 触发/3956476#3956476"] 8 NOP 在所有情况下都足够,或者只是幸运吗?

    我们将获得此信息并进行更新。

    [引用 userid="172948" url="~/support/icros/c2000微控制器-group/c2000 /f/c2000微控制器-forume/1067391/tms320f280023c-watchdits-stops -trigger/3956476#3956476"],我是否有任何状态寄存器可以检测到该故障状态?

    不,没有可供了解的状态寄存器。 这是我们需要防止并确保不会发生的错误之一。

    [引用 userid="172948" url="~ë/support/intrans/c2000微控制器-组/CC2000 /f/c2000微控制器-论坛/1067391/tms320f280023c-watcher-stops -触发/3956476#3956476"]我使用 sysctl_delay 函数的主要区别。

    这是可以的(相当于50个以上周期),但一旦我们确认了最小周期数,您就可以更新它。

    此致,

    维耶克·辛格

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,马丁,

    这大约是背对背写之间所需的最小循环次数-

    这是39个周期,如果延迟,您有50个以上周期,因此这应该是正常的。

    此致,

    维耶克·辛格

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    听起来不错。

    您能提供更多的技术细节来解释原因,我需要一些东西来支持这项声明,以便在内部销售此解决方案。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,马丁,

    请查看以下信息是否有帮助-

    此信息将添加到设备文档中。  

    此致,

    维耶克·辛格

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这确实解决了我的问题,谢谢你。

    但是,我有人建议您使用新文本,您已经在手册中引用了很多驱动程序库函数,因此我建议您在此处包含 sysctl_delay 的用法。 此外,由于插入 NOP 之类的汇编程序命令会影响优化程序,从而影响 C200编译器手册。

    我还看到编译器反映了这一点:

    如果我使用`asm (“ NOP”);`我从编译器中得到这条评论

    由于使用了内嵌汇编   监视程序.c,此文件的链接时间优化被禁用

    如果我使用 sysctl_delay(),我将不会收到任何注释。

    尽管我的问题已经解决,但这只是一个友好的建议。 :-)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢马丁的投入。 我将把它传递给我们的软件团队。  

    [引用 userid="172948" url="~/support/icros/c2000-icro-group/c2f/c2000-iclot-forume/1067391/tms320f280023c-watchders-stops -trigger/3963294#3963294"]

    如果我使用`asm (“ NOP”);`我从编译器中得到这条评论

    由于使用了内嵌汇编   监视程序.c,此文件的链接时间优化被禁用

    [/引用]

    但我没有看到这条警告。 您是作为警告还是在编译器日志中获得此信息?

    此致,

    维耶克·辛格

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这不是一个警告,而是一个评论。

    只有在启用 optlevel 4链路时间优化时,才会出现这种情况。

    因此,这不是一个大问题,但可能会造成一些性能损失。

    我只是在对序列队列处理进行一些优化,在某种程度上,我尝试使用 DINT 而不是 Sci_disableInterrupt (),突然我在那里的表现大幅下降,这种说法的解释是资金问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    人们可以考虑这句话是否正确

    我想说这是一个优化建议,但这是另一天的讨论;-)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,谢谢。

    此致,

    维耶克·辛格