主题中讨论的其他器件:HALCOGEN
工具与软件:
您好!
我们不熟悉 TMS570 RTI 编程。 我们已经通过 HalCoGen (并相应地生成代码)将 RTI 配置为:
在我们运行在 LaunchPad TMS570LC43x 上的软件中、 调用后 " rtiInit ()'和' _ENABLE_IRQ ()'函数,我们的代码如下:
void delayus (uint16 us)
{
如果(us =0)
返回;
设计
{
//更改中断比较值(中断周期)
//设置比较1值。
rtiREG1->CMP[1U].COMPx = 10*us;//10个时钟周期/微秒、因此乘以10
//设置更新比较1值。
rtiREG1->CMP[1U].UDCPx = 10*us;
//启用我们设置的期间的通知
rtiEnableNotification (rtiREG1、rtiNOTIFICATION_COMPARE1);
//启动计数器
rtiStartCounter (rtiREG1、rtiCOUNTER_BLOCK0);
//在循环中等待、直到中断发生(在我们设置的周期之后发生)
//发生中断时、RTI_NOTIFICATION 会在该中断中设置为1
//转至 notification.c -> rtiNotification ()以查看 RTI_TIMEOUT 设置为1的位置
while (RTI_TIMEOUT=0);
//将变量重置为0、以便下次我们进行延迟
RTI_TIMEOUT = 0;
//禁用中断通知
rtiDisableNotification (rtiREG1、rtiNOTIFICATION_COMPARE1);
//停止计数器
rtiStopCounter (rtiREG1、rtiCOUNTER_BLOCK0);
//重置计数器以在下一次我们进行延迟
rtiResetCounter (rtiREG1、rtiCOUNTER_BLOCK0);
}
}
不过、在运行时、我们观察到软件卡在"while (RTI_TIMEOUT=0);"、换句话说、" rti 通知 '永远不会被执行" 请参考 "作为其输入参数之一。
请提供建议。 谢谢你。
John