This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430G2452:CCS 赢得#39;t 读取 P2.6或 P2.7。

Guru**** 2505795 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1127981/msp430g2452-ccs-won-t-read-p2-6-or-p2-7

器件型号:MSP430G2452

我在 launchpad 上有一个20引脚的 g2452、我无法读取 P2.6或 P2.7。 我在文档中注意到、它说:

注:

MSP430G22x0:这些器件具有数字 I/O 引脚 P1.2、P1.5、P1.6和 P1.7。 GPIO P1.0、P1.1、P1.3、P1.4、P2.6、和 P2.7在这个器件上被执行、但是在器件引脚上不可用。 为了避免输入悬空、这些 GPIO、应通过运行启动代码来正确初始化这些数字 I/O。 请参阅下面的初始化代码:
MOV.b #0x1B、P1REN;;正确终止不可用的 Port1引脚;在启用下拉的情况下配置为输入

XOR.b #0x20、BCSCTL3;;选择 VLO 作为低频率时钟
初始化代码将 GPIO P1.0、P1.1、P1.3和 P1.4配置为启用下拉电阻的输入(即 P1REN.x = 1)、并通过选择 VLOCLK 作为 ACLK 来终止 GPIO P2.6和 P2.7–有关详细信息、请参阅基本时钟系统一章。 寄存器 P1OUT、P1DIR、P1IFG、P1IE、P1IES 中 P1.0、P1.1、P1.3和 P1.4的寄存器位 P1SEL 和 P1REN 不应在初始化代码执行后改变。 此外、不应更改所有端口2寄存器。

我这样做的原因是 g2452也与晶振引脚共享 p2.6和 p2.7、即使 G22X0看起来不包含 G2452。 但是、读取 P2IN、我每次只得到全0。 我是否缺少其他东西?

以下是我的代码:

#include

#define LED_RED    BIT5
#define LED_GREEN  BIT6
#define LED_BLUE   BIT7
#define button_1   BIT7 //p2.7
#define button_2   BIT6 //p2.6

#define bitRead (value、bit)(value 和 bit)
#define bitSet (value、bit)(value || bit)
#define bitClear (value、bit)(value &=~(bit))
#define bitWrite (value、bit、bitvalue)(bitvalue? bitSet (value、bit):bitClear (value、bit))(bitClear (value、bit))(bitSet (值、位):bit

空 LED (绿色、红色、蓝色){
   P1OUT =绿色? bitClear (P1OUT、LED_GREEN):bitSet (P1OUT、LED_GREEN);


int main (空)

   WDTCTL = WDTPW + WDTHOLD;                  //停止看门狗计时器

   P1DIR |= LED_GREEN|LED_RELED_LED_BLUE;       //输出 LED。
   P2DIR &=~(button_1|button_2);             //进行按钮输入。

   BCSCTL3 |= LFXT1S_2;                        //使用 ACLK 的内部时钟。 这应该让我使用引脚2.6和2.7作为 GPIO

   while (1)
   {
       int btn1 = bitRead (P2IN、button_1);
       int btn2 = bitRead (P2IN、button_2);
       LED (btn1、btn2、0);
   }
   返回0;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我刚才找到了有关端口选择寄存器的部分。 一个位

    P2SEL = 0;工作正常。 P2SEL 允许您选择将 P2用作 I/O、而不是主外设模块。