我有以下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
}
答案 0 :(得分:1)
我发现此代码中缺少两件事
其中一个“拇指”规则遵循MSP430s :)也许你已经在其他地方处理了它。
关于LOCKLPM5,请查看用户指南的内容
进入LPMx.5后,自动设置驻留在PMM模块PM5CTL0中的LOCKLPM5。根据LPMx.5输入之前的设置保持和锁定I / O引脚状态。 请注意,仅保留引脚条件。所有其他端口配置寄存器设置(如PxDIR,PxREN,PxOUT,PxDS,PxIES和PxIE内容)都将丢失。
有一些逻辑可以说是“仪式”!
假设您正在处理唤醒事件:从LPMx.5状态唤醒后,您的外围设备处于默认状态。如果你要在不配置外设的情况下清除LOCKLPM5位,那么你的引脚将处于默认状态,即没有上拉,全部配置为输入等。让门打开以发现意外故障。由于人们喜欢避免这种不确定性,因此首先配置外设,然后清除LOCKLPM5。
过渡性“默认”状态的影响,也取决于您如何回答以下问题 - >
答案 1 :(得分:1)
在我看来,在完成引脚重配置后禁用高阻抗比以前做得好一点。这是因为处于高阻抗时,触点就像与外部电路断开一样,这保证了没有任何可能的噪声,失真或短峰值曲折将反弹。
你的外部电路很可能不会做出反应,但理论上可能会有一个电路用这样一个"信号来改变它的行为,换句话说,在另一端会有一些敏感的东西。可能会受到这种反弹影响的电线。