主题中讨论的其他器件:HALCOGEN
我遇到的问题是,我想访问 MCU 的控制寄存器来启动我正在写入的 PWM 函数的时基时钟。
在 Halcogen 已经生成了一个文件来执行该操作。 但我需要特殊访问。 我已经尝试写入以访问 以下特权模式
在 CCS 中、它抛出错误、指出指定的是非法助记符。
有人能弄清楚吗?
香港特别行政区
政府 // Swi 处理程序函数 __attribute__((interrupt ("swi"))) void SWI_Handler (void) { //调用 Fsys_RaisePrivilege 函数 FSYS_RaisePrivilege(); } int32_t Fsys_RaisePrivilege (void) { int32_t asm_result; //汇编代码提升权限 _asm ( "Mrs R12、spsr\n"//将 SPSR 复制到本地寄存器 R12中 "ands r0、R12、#0x0F\n"//对 R12和0x0F 执行按位与运算 "MOV R1、r0\n"//将结果移动到 R1寄存器 "orreq R12、R12、#0x1F\n"//对 R12和0x1F 执行逻辑或 "msreq spsr_c、r12\n"//将结果有条件地加载到控制字段掩码字节中 "MOV %0、R1\n"//将结果移动到全局变量 ASM_RESULT :"=r"(ASM_RESULT )//输出操作数定义 ://无输入操作数 :"R0","R1","R12"//木体寄存器 ); //返回 asm 中存储的结果 返回 ASM_RESULT; } * 这是下面的另一个尝试 * #包含 //声明一个全局变量来存储结果 //#pragma SWI_ALIAS (FSYS_RaisePrivilege、1); extern long Fsys_RaisePrivilege (void); // Swi 处理程序函数 __attribute__((interrupt ("swi"))) void SWI_Handler (void) { //调用 Fsys_RaisePrivilege 函数 FSYS_RaisePrivilege(); } #pragma FUNC_ALWAYS_INLINE (FSYS_SwitchToUserMode) 静态内联空 Fsys_SwitchToUserMode (void){ __ asm (" cps #0x10"); } extern long Fsys_RaisePrivileed() { _asm (" Mrs R12、spsr"); _asm ("ands r0、R12、#0x0F"); _asm ("orreq R12、R12、#0x1F"); _asm ("msreq spsr_c、r12"); __ asm ("bx r14"); } 香港特区政府 为什么编译器不能识别汇编代码? 请注意、我没有使用 FreeRTOS。