Embedded 禁用高阻抗模式后是否可以配置GPIO引脚?

Embedded 禁用高阻抗模式后是否可以配置GPIO引脚?,embedded,hardware,msp430,texas-instruments,Embedded,Hardware,Msp430,Texas Instruments,我有以下MSP430的示例程序,我希望重新排列它,使行PM5CTL0&=~LOCKLPM5位于P2SEL1 |=位0 |位1之前。如果我这样做会有问题吗?即。如果在禁用高阻抗模式后配置GPIO引脚,是否会出现问题 我的应用程序/电路方面没有任何问题。我只是好奇有没有可能产生意外的瞬变电流或其他不稳定性?或者在配置GPIO后禁用高阻抗模式只是一种惯例/惯例 #include "msp430.h" int main(void) { WDTCTL = WDTPW | WDTHOLD;

我有以下MSP430的示例程序,我希望重新排列它,使行
PM5CTL0&=~LOCKLPM5位于
P2SEL1 |=位0 |位1之前。如果我这样做会有问题吗?即。如果在禁用高阻抗模式后配置GPIO引脚,是否会出现问题

我的应用程序/电路方面没有任何问题。我只是好奇有没有可能产生意外的瞬变电流或其他不稳定性?或者在配置GPIO后禁用高阻抗模式只是一种惯例/惯例

#include "msp430.h"

int main(void)
{
  WDTCTL = WDTPW | WDTHOLD;                 // Stop Watchdog

  // Configure GPIO
  P2SEL1 |= BIT0 | BIT1;                    // USCI_A0 UART operation
  P2SEL0 &= ~(BIT0 | BIT1);

  // Disable the GPIO power-on default high-impedance mode to activate
  // previously configured port settings
  PM5CTL0 &= ~LOCKLPM5;

  // rest of program
}

我发现这个代码缺少两件事

  • RX引脚未配置为输入(TX为输出)
  • RX引脚的上拉功能尚未启用(假设您没有外部上拉功能)
  • MSP430s遵循的一条“拇指”规则是:)也许你在别的地方处理过

    关于LOCKLPM5,请看一下用户指南中的内容

    进入LPMx.5后,将自动设置驻留在PMM模块的PM5CTL0中的锁LPM5。输入/输出引脚状态根据LPMx.5输入之前的设置保持和锁定请注意,仅保留引脚条件。所有其他端口配置寄存器设置,如PxDIR、PxREN、PxOUT、PxDS、PxIE和PxIE内容丢失

    “仪式”中有一些逻辑

    假设您正在处理唤醒事件:从LPMx.5状态唤醒后,您的外围设备处于默认状态。如果在未配置外围设备的情况下清除LOCKLPM5位,则您的引脚将处于默认状态,即无上拉,所有配置均为输入等,从而导致门因意外故障而打开。因为人们喜欢避免这种不确定性,所以首先配置外围设备,然后清除锁LPM5

    瞬态“默认”状态的影响还取决于您如何回答以下问题->

    • 当TX引脚为输入时,电路是否处理该情况?(很可能是的,否则你将在问题上与权力抗争)
    • RX引脚没有内部上拉,因此RX线路是否会降至“0”,即启动条件?这会导致电路中其他地方的中断吗
    在我看来,在完成引脚重新配置后禁用高阻抗比以前要好一点。这是因为在高阻抗中,触点就像从外部电路断开一样,这保证了不会出现任何可能的噪声、失真或短峰值弯曲反弹

    你的外部电路很可能不会反应,但理论上可能有一个电路会用这样的“信号”改变它的行为,换句话说,电线的另一端可能有某种敏感的东西会受到这种反弹的影响