我想获取CPU上寄存器的值,我看了规格表,找到了地址(0xE000E018),我想命名变量,并将其值存储在“ subticks_per_tick”中
这是在运行FreeRTOS的TWR-K65F180M上。
register uint64_t 0xE000E018 asm ("subticks_per_tick");
register uint64_t subticks_per_tick asm ("0xE000E018");
第一行得到:错误:预期标识符或数字常量前的'('
第二行得到:'subticks_per_tick'的无效寄存器名称
答案 0 :(得分:1)
我对FreeRTOS或您的硬件一无所知,但:
0xE000E014
不能是名称,因此错误要获取此寄存器的值,您可能应该做的是:
volatile uint32_t *subticks_per_tick = (volatile uint32_t *) 0xE000E014;
,然后通过取消引用此指针来读取值。
答案 1 :(得分:-2)
register
是1980年代的C关键字,用于提示编译器您声明的整数变量可以很好地放入寄存器中。自从30多年以来,它不过是一个暗示而已,被认为已经过时(没有任何意义)。
如果要控制CPU上的寄存器,则需要插入汇编代码。