尊敬的先生:
我们将 STA 样本与调用 STL 函数集成以进行上电测试。
调用 STA 测试后、timer2和某些 GPIO 出现故障(例如:STA_SCI_TEST 或 STA_SCI_MON...)
调用 STA 测试后、是否可以复位所有 CPU 设置?
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.
尊敬的先生:
我们将 STA 样本与调用 STL 函数集成以进行上电测试。
调用 STA 测试后、timer2和某些 GPIO 出现故障(例如:STA_SCI_TEST 或 STA_SCI_MON...)
调用 STA 测试后、是否可以复位所有 CPU 设置?
请注意、STA 是一个有关如何使用不同库模块的参考示例、并不一定是按原样使用。 您应该自定义代码、以便为应用使用适用的外设实例和 GPIO。 也就是说、如果您在测试后仍需要重置外设、则某些模块在 DEV_CFG_REGS 中具有 SOFTPRESx 寄存器、可以用于重置外设。
类似地、STL_SCI_MON 和 STL_INT_MON 测试旨在演示如何对通信和中断进行时隙监控。 您应该将它们用作将监控集成到您自己的现有代码中的模型。
惠特尼
哪个特定测试导致了此问题? 通过 CPU 自检、您是指 HWBIST? HWBIST 代码保存和恢复所有 CPU 寄存器、因此我认为不会导致问题。
请注意、一些测试使用 CPU 计时器2 -如 STL_OSC_CT -因为它可以配置为在独立的时钟源而不是 SYSCLK 下运行。 如果您在运行使用 CPU 计时器2的测试之一之前配置计时器、它将覆盖您的计时器2设置、因此您稍后需要恢复这些设置或等到测试运行后再配置计时器。
惠特尼
我确实会根据需要重新配置 timer2。 但是、time2仍然以 STA 频率运行。
以下是我们的程序。
=== 代码片段===
STA_MAIN ();//执行 STA 测试
DELAY_US(500);
GPIO_Setup1 ();// PIN Mux 设置
Dint;
IER = 0x0000;
IFR = 0x0000;
InitPieCtrl();
InitPieVectTable();
EALLOW;
PieVectTable.TIMER0_INT =&CPU_timer0_ISR;
PieVectTable_Timer1_INT =&CPU_Timer1_ISR;
PieVectTable.TIMER2_INT =&CPU_timer2_ISR;
// PieVectTable.SPIA_RX_INT =&spiaRxFifoIsr;
// PieVectTable.SPIA_TX_INT =&spiaTxFifoIsr;
// PieVectTable.SPIB_RX_INT =&spibRxFifoIsr;
PieVectTable.SCIA_RX_INT =&sciaRxFifoIsr;
PieVectTable.SCIB_RX_INT =&scibRxFifoIsr;
PieVectTable.ADCA1_INT =&adca1_isr;//function for ADCA interrupt 1
EDIS;
...
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;//启用 PIE 块
PieCtrlRegs.PIEIER9.bit.INTx1 = 1;// PIE 组9、INT1
PieCtrlRegs.PIEIER9.bit.intx2 = 1;// PIE 组9、INT2
PieCtrlRegs.PIEIER9.bit.INTx3 = 1;// PIE 组9、int3
PieCtrlRegs.PIEIER9.bit.intx4 = 1;// PIE 组9、int4
PieCtrlRegs.PIEIER6.bit.INTx1 = 1;//启用 PIE 组6、INT 1 Rx SPIA_RX
PieCtrlRegs.PIEIER6.bit.intx2 = 1;//启用 PIE 组6、INT 2 TX SPIA_TX
PieCtrlRegs.PIEIER6.bit.INTx3 = 1;//启用 PIE 组6、INT 3 Rx SPIB_RX
PieCtrlRegs.PIEIER1.bit.INTx7 = 1;// PIE 组1、INT7时间0
PieCtrlRegs.PIEIER1.bit.INTx1 = 1;
...
IER = M_INT6;//启用 SPIA、SPIB
IER |= M_INT1;//启用计时器0
IER |= M_INT13;//启用计时器1
IER |= M_INT14;//启用计时器2
IER |= M_INT9;//启用 SCI1、SCIB
EINT;//启用全局中断
ERTM;//启用全局实时__中断 DBGM
========= 结束===========
有什么问题吗?
Eddie