This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI C/C++编译器
您好、社区
我正在使用 LAUNCHXL-F28069M、需要使用以下代码通过软件触发 CPU 计时器:
CpuTimer2Regs.TCR.bit.TRB=1; EALLOW; enable_global_INT(); IFR |= 0x2000; //_asm ("或IFR、#0x2000");
如您所见、我在 CPU 定时器 启用全局中断时重新加载计数、然后在 IFR 寄存器中重新加载相应的中断标志。
但是、中断不会将其置为有效。
有什么想法吗?
此致、
弗朗西斯科
您好、Francisco、
我不确定您是否已配置 PIE 矢量表并正确设置了中断启用。
C2000ware 中有一个 CPU 计时器示例。 请导入并尝试该示例。
C:\ti\c2000Ware_3_01_00_00\device_support\f28066\examples\c28\cpu_timer
您好、Santosh、
让我让您更广泛地了解我的代码。 CPU 定时器和 PIE 矢量表配置正确、CPU 定时器设置其中断标志、PIC 矢量表定期将 ISR_handler 函 数置为有效、但我想手动置位或触发 CPU 定时器中断标志、我不在乎 CPU 定时器的计数寄存器是否达到0计数。
在我在第一个帖子中共享的代码中、我要尝试使用以下操作来设置 CPU IFR 寄存器中的 INT14标志:(IFR 或0x2000)
该操作会设置标志 、但 CPU 不会将 ISR 函数置为有效。
此致、
弗朗西斯科
弗朗西斯科
确实没有太多的问题。 如果 INTM 和 IER 配置正确、PC 将进入中断矢量。
请在线路上设置断点:
IFR |= 0x2000;
运行、并检查 INTM = 0 (在寄存器窗口中检查 ST1中的该位)和 IER = 1中的该位14。
此致、
Richard
校正:IER 位13 = 1。
您好 Richard、
我同意您的观点、将 INTM 和 IER 设置为启用 INT14 (CPUT-timer2)、然后将 IFR 寄存器中的位13设置为触发中断、就是这样;
但是、它没有触发中断...
因此、我在53岁时读取 SPRU430F (CPU 和指令集)、它说:
在 C28x 上、中断可由软件(INTR、IFR 或 TRAP 指令)触发
我决定去做他的第一个指导文件,”INTR 说,它是可行的。
这里是有效的代码
CpuTimer2Regs.TCR.bit.TRB=1;//重新加载 CPU 定时器2计数 器 EALLOW; __asm (" INTRINT14");//软件触发 //_asm ("或IFR、#0x2000");
此致