请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430FR6989 工具/软件:TI C/C++编译器
嘿,
我正在与MSP430 FR6989一起阅读Launchpad的输入/输出引脚。
如果我使用以下代码,则一切正常。 如果按下按钮,我可以打开和关闭LED:
#include <driverlib.h>
int main(void)
{
WDTCTL = WDTPW | WDTHOLD;/* STOP监视程序计时器*/
PM5CTL0 &=~LOCKLPM2;
//将WFP 1.0 设置为输出方向
P1DIR |= BIT0;/* WFP 1.0 (LED1:P1DIR.0 =1)-> OUTPUT */
P1OUT &=~BIT0;/* Clear WFP 1.0 (LED1 OFF)*/
GPIO_setAsInputPinWithPullUp阻 器(GPIO_PORT_P1, GPIO_PIN1);
同时(1)
{
如果(!(P1IN & BIT1))/* TEST 1.1 (按下?) */
{
P1OUT || BIT0;/* Set*/
}
否则
{
P1OUT &=~BIT0;/* Clear*/
}
}
}
但是,如果我只是更改线路GPIO_setAsInputPinWithPullUpResister(GPIO_PORT_P1, GPIO_PIN1),并将寄存器设置为作为输入端口(P1REN.1=1和P1DIR.1=0)工作,它将不再工作。 或者更准确地说,在我编译并首次刷新它之后,它就可以工作了。 但如果我从PC断开主板的连接(没有USB连接,没有电源)并再次开机,它将无法识别特定端口上的任何输入。 我甚至可以刷新代码,我不会帮助,如果我按按钮,输入寄存器不会更改
以下是已修改的代码:
#include <msp430fr6989.h>
int main(void)
{
WDTCTL = WDTPW | WDTHOLD;/* STOP监视程序计时器*/
PM5CTL0 &=~LOCKLPM2;
//将WFP 1.0 设置为输出方向
P1DIR |= BIT0;/* WFP 1.0 (LED1: P1DIR.0 =1)-> OUTPUT */
P1OUT &=~BIT0;/* Clear WFP 1.0 (LED1 OFF)*/
P1DIR &=~BIT1;/* WFP 1.1 (S2:P1DIR.1 = 0)-> input*/
P1REN || BIT1;/*启用WFP 1.1 P1REN.1=1*/
同时(1)
{
如果(!(P1IN & BIT1))/* TEST 1.1 (按下?) */
{
P1OUT || BIT0;/* Set*/
}
否则
{
P1OUT &=~BIT0;/* Clear*/
}
}
}
我修改的代码有什么问题吗?
Stefan