Thread 中讨论的其他器件:SYSBIOS
工具与软件:
亲爱的大家好
我们在使用 TMS320F28075S、并且检测到了一些时序问题。 不过、我们只是通过切换一些 GPIO 来研究 ISR 持续时间、并使用逻辑分析仪测量这些时间。
我们发现了几个问题,这将需要太长的时间来描述所有,我只列出最重要的一个:-)
我们将使用 SYS/BIOS (6.83.0.18)、并动态创建计时器中断(而不是在.cfg 文件中)、并在硬件 ISR 中布置 Swi、因此主工作负载在 SWI 上下文中完成、而不是在 HWI 上下文中完成。
然而、我们正面临这样的问题、即计时器 HWI 不会被 调用、如下所执行的操作。 只有在调用 ECAN0INTB_ISR HWI 时、才会发生这种情况。
Timer_create 函数基于 C2000 MCU 系列中的外设、并在硬件中断上下文中被调用。 它基于哪个外设? 一个 CPU 计时器还是一个 PWM? Timer_create 的第一个参数是逻辑 id。 它的用途是什么?
那么、它会具有 PIE 表中的哪一个优先级?
令我们感到惊讶的是、因为 CAN SWI 与计时器 ISR 完全不同。
您是否建议在 HWI 中发布 SWI 是一个好的做法。 根据我对 SYS/BIOS 手册的理解、我建议使用这样的方法。 但是、这会产生更多上下文切换、因此会降低效率。
如果我们在.cfg 文件中创建某些计时器或时钟、如何知道优先级?
TI RTOS 有一些中断。 我们如何知道他们的称呼、时间和时长?
白色:XINT HWI ISR (优先级120)
红色:XINT SWI ISR (由白色发布)
黄色:计时器 SWI (发布者:绿色)
绿色定时器 HWI ISR (优先级:不知道/请参见上面的问题)
蓝色:CAN HWI (优先级:102)
紫色:CAN SWI ISR (由蓝色发布)
Timer_Params timerParams;
Error_Block 错误块;
error_init (&errBlock);
Timer_Params_(&timerParams);
timerParams.period = 200u;
timerParams.periodType = Timer_Period microsec;
timerParams.arg = 1;
Timer_Handle Timer1 = Timer_create (1、TIMER1INT_ISR、&timerParams、&errBlock);
Timer_start (Timer1);//可能是伪代码…… :-)
感谢您发送编修
Robert