工具/软件:
我们有一个基于演示库运行 MSP430FR6043 的定制电路板。
我们已成功对数百个电路板进行编程、但有几个电路板会挂起在超声波例程中。 我们正在尝试确定硬件的哪个部件无法正常工作。
以下代码中有几个电路板出现故障。 在这种情况下、 UUPSCTL 寄存器的 UPSTATE_3 位永远不会被设置 、从而导致看门狗计时器触发。 实际故障发生在此行:
//等待 USS 模块处于就绪状态
while ((UUPSCTL & upstate_3)!= upstate_3);
TMS430FR6043 的哪些输入可能导致此故障? 在哪里 可以找到 upstate_3 位的定义/描述? 我们还能如何对其硬件端进行故障排除?
这是该段的大型代码片段。
pragma vector= USSLIB_HAL_TIMER_RXEN_CCR1_vector
__interrupt void USSLIB_HAL_TIMER_RXEN_INT (void)
{
switch (_even_in_range (HARDWAREWREG16 (USSSWLIB_HAL_RXEN_TIMER_BASE_ADDRESS
+ OFS_TAxIV)、
TAIV__TAIFG)
{
case TAIV__none: break; //无中断
用例 TAIV__TACCR1: // CCR1、启用 RXEN
//启用 RxEN、RxEN 将在 USS 之后关闭
获取
USSSWLIB_HAL_AFE_RXEN_PORT |=(USSSWLIB_HAL_AFE_RXEN_PIN);
//禁用计时器
HARDWAREWREG16 (USSSWLIB_HAL_RXEN_TIMER_BASE_ADDRESS +
OFS_TAxCTL) 且=~μ H (MC_3 | TAIFG);
休息;
如果 TAIV__TACCR2: // CCR2、启动 ASQ、重新启动计时器
从而触发 RXEN
//等待 USS 模块处于就绪状态
while ((UUPSCTL & upstate_3)!= upstate_3);
//停止计时器
HARDWAREWREG16 (USSSWLIB_HAL_RXEN_TIMER_BASE_ADDRESS +
OFS_TAxCTL) 且=~μ H (MC_3 | TAIFG);
//禁用 CCR2 中断
HARDWAREWREG16 (USSSWLIB_HAL_RXEN_TIMER_BASE_ADDRESS +
OFS_TAxCCTL2)= 0x00;
//启用 CCR1 中断以启用 RxEN
HARDWAREWREG16 (USSSWLIB_HAL_RXEN_TIMER_BASE_ADDRESS +
OFS_TAxCCTL1)= CCIE;
//重新启动计时器
HARDWAREWREG16 (USSSWLIB_HAL_RXEN_TIMER_BASE_ADDRESS +
OFS_TAxCTL)|=(TACLR | MC___continous);
//触发 ASQ
GENERAL_SAPH_ASQTRIG = ASQTRIG;
休息;
CASE TAIV__TACCR3:break; //保留
CASE TAIV__TACCR4:break; //保留
用例 TAIV__TACCR5:break; //保留
用例 TAIV__TACCR6:break; //保留
case TAIV__TAIFG: break; //溢出
默认值:中断;
}
}
 
				 
		 
					 
				