主题中讨论的其他器件:CC1312R7
以下用于提供延迟的代码行均为 在使用连接到电路板的 jlink 调试器进行实时调试和不进行实时调试的情况下、CC1312可以正常工作 。
/* Enable DWT */ HWREG( CPU_DCB_BASE + CPU_DCB_O_DEMCR) |= CPU_DCB_DEMCR_TRCENA; /* Enable CPU cycle counter */ HWREG( CPU_DWT_BASE + CPU_DWT_O_CTRL) |= CPU_DWT_CTRL_CYCCNTENA; /* Reset CPU cycle counter */ HWREG( CPU_DWT_BASE + CPU_DWT_O_CYCCNT) = 0; //Wait for delay while(HWREG( CPU_DWT_BASE + CPU_DWT_O_CYCCNT) < delay);
但是对于 CC1314 ,
- 这些线是 工作正常 在 使用 jlink 调试器进行实时调试 。
- 停留在 while (HWREG (CPU_DWT_BASE + CPU_DWT_O_CYCCNT)< DELAY); when 调试器未连接 。
看起来周期计数不会递增。
` 在进一步分析之后、我从 ARM 文档表 M33中了解到需要配置 DWT 访问寄存器 DWT_LAR。 因此、我实现了以下陈述 访问 DWT 之前 。
#define CPU_DWT_O_LAR 0x00000FB0
HWREG (CPU_DWT_BASE + CPU_DWT_O_LAR)= 0xC5ACCE55;
但即使在实施后、 在未连接调试器的情况下卡在 while 循环 引脚。 虽然使用 jlink 实时调试、但它仍能正常工作。
我还注意到 DWT 访问启用寄存器未在 SDK 头文件中实现 hw_cpu_dwt.h 。 但在 IAR IDE 寄存器视图中可找到、如下所示。
那么、请告诉我如何在 CC1314上实现 DWT 周期计数访问?