如何从 cpu 上的寄存器中获取值

How to get a value out of a register on the cpu

我想获取 CPU 上的寄存器值,我查看了规范 sheet 并找到了地址 (0xE000E018),我想命名存储该值的变量在 "subticks_per_tick"

这是在 TWR-K65F180M 运行 FreeRTOS 上。

register uint64_t 0xE000E018 asm ("subticks_per_tick");
register uint64_t subticks_per_tick asm ("0xE000E018");

第一行获取:错误:预期标识符或数字常量前的“(”

第二行获取:'subticks_per_tick'

的无效寄存器名称

我对 FreeRTOS 或您的硬件一无所知,但是:

  1. 这看起来像地址而不是寄存器名称(可能寄存器映射到那里)
  2. 变量名不能以数字开头,因此0xE000E014不能是名称,因此出现错误

要获得该寄存器的值,您可能应该做的是:

volatile uint32_t *subticks_per_tick = (volatile uint32_t *) 0xE000E014;

然后通过取消引用此指针来读取值。