如何从 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 或您的硬件一无所知,但是:
- 这看起来像地址而不是寄存器名称(可能寄存器映射到那里)
- 变量名不能以数字开头,因此
0xE000E014
不能是名称,因此出现错误
要获得该寄存器的值,您可能应该做的是:
volatile uint32_t *subticks_per_tick = (volatile uint32_t *) 0xE000E014;
然后通过取消引用此指针来读取值。
我想获取 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 或您的硬件一无所知,但是:
- 这看起来像地址而不是寄存器名称(可能寄存器映射到那里)
- 变量名不能以数字开头,因此
0xE000E014
不能是名称,因此出现错误
要获得该寄存器的值,您可能应该做的是:
volatile uint32_t *subticks_per_tick = (volatile uint32_t *) 0xE000E014;
然后通过取消引用此指针来读取值。