禁用高阻模式后,我可以配置GPIO引脚吗?

时间:2014-07-24 10:30:04

标签: embedded hardware msp430 texas-instruments

我有以下MSP430的示例程序,我希望重新排列它,以便行PM5CTL0 &= ~LOCKLPM5;出现在P2SEL1 |= BIT0 | BIT1;之前。如果我这样做会有问题吗? I. e。如果在禁用高阻抗模式后配置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
}

2 个答案:

答案 0 :(得分:1)

我发现此代码中缺少两件事

  1. RX引脚未配置为输入(TX作为输出)
  2. 且RX引脚未启用上拉电阻(假设您没有外部上拉电阻)
  3. 其中一个“拇指”规则遵循MSP430s :)也许你已经在其他地方处理了它。

    关于LOCKLPM5,请查看用户指南的内容

      

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

    有一些逻辑可以说是“仪式”!

    假设您正在处理唤醒事件:从LPMx.5状态唤醒后,您的外围设备处于默认状态。如果你要在不配置外设的情况下清除LOCKLPM5位,那么你的引脚将处于默认状态,即没有上拉,全部配置为输入等。让门打开以发现意外故障。由于人们喜欢避免这种不确定性,因此首先配置外设,然后清除LOCKLPM5。

    过渡性“默认”状态的影响,也取决于您如何回答以下问题 - >

    • 当TX引脚是输入时,您的电路是否处理这种情况? (很可能是的,否则你会对权力问题进行争论)
    • RX引脚没有内部上拉,RX线是否会下降到'0',即开始状态?会在电路中的其他地方引起中断吗?

答案 1 :(得分:1)

在我看来,在完成引脚重配置后禁用高阻抗比以前做得好一点。这是因为处于高阻抗时,触点就像与外部电路断开一样,这保证了没有任何可能的噪声,失真或短峰值曲折将反弹。

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