背景: 在Cortex-M33中,用户模式(非特权模式)无法直接操作多数SCB寄存器。非特权访问尝试将触发故障(如MemManage故障或HardFault)。只有特权代码(如操作系统内核或异常处理程序)才能安全地配置这些寄存器。
**分析:**SCB->VTOR赋值属于内核操作,故需要使用特权模式。且YTMEVB_Demo_RevC 这个demo是启用了非特权模式的
方法一: 修改YCT工程配置并重新生成工程
①YCT工具配置删除以下宏
9adbec80-997d-472c-a1c5-d87f56fa09c4-0c96960d-76ed-4a57-8329-6b9d20ef7e26.png
②确认所有外设均取消勾选EnableUserModeSupport
948970a8-c564-4f9f-b233-ec430b994889-57bda4e2-4527-4f5b-9ba2-2f09d9b0a9ba.png
方法二: 在代码中直接增加进入特权模式,无需修改YCT配置
69cbb451-1ca9-4af1-9298-ba595f90785b-2e2cf0070fad973803cb915adb976ba9.png