【发布时间】:2017-04-10 16:09:54
【问题描述】:
我一直在尝试让 SysTick 中断在 TM4C123GH6PM7 上工作。这是一个基于皮质 m4 的微控制器。使用 Keil 调试器时,我可以看到 Systick 中断正在等待 int NVIC,但它不会执行处理程序。没有启用其他异常,我已经清除了 PRIMASK 寄存器。下面的代码是我如何初始化中断:
systck_init LDR R0,=NVIC_ST_CTRL_R
LDR R1,=NVIC_ST_RELOAD_R
LDR R2,=NVIC_ST_CURRENT_R
MOV R3,#0
STR R3,[R0]
STR R3,[R2]
MOV R3,#0x000020
STR R3,[R1]
MOV R3,#7
STR R3,[R0]
LDR R3,=NVIC_EN0_R
LDR R4,[R3]
ORR R4,#0x00008000
STR R4,[R3]
CPSIE I
MOV R3,#0x3
MSR CONTROL,R3
经过大量搜索,我发现它可能是调试器屏蔽了所有中断。控制这一点的位在称为调试停止状态和控制寄存器的寄存器中。虽然我似乎无法在调试器中查看它,也无法使用调试命令读取/写入它。
我使用了 Keil 提供的 Startup.s,据我所知,向量/标签是正确的。
是的,我知道。为什么要费心在汇编中做这一切。
任何想法将不胜感激。第一次发帖:)
【问题讨论】:
标签: debugging arm interrupt keil cortex-m