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.

[参考译文] 编译器/MSP432P401R:基于 TI-RSLK 培训、为 msp432的 GPIO I/O 提供软件驱动程序

Guru**** 2535150 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/928297/compiler-msp432p401r-undertanding-software-driver-for-gpio-i-o-of-msp432-based-on-ti-rslk-training

器件型号:MSP432P401R

工具/软件:TI C/C++编译器

大家好、我正在观看 TI-RSLK 培训、但我无法理解输入输出代码、解释并不十分清楚。

1)用于此处的插针初始化

P2 -> DIR |= 0x07;//十进制为7,二进制为111,那么这里 P2 = 1,对吧?  

P2 -> DS|= 0x07;//激活高电流20mA

P2 -> OUT |= 0x07;//此处 P2再次等于1?  

但我不知道如何将引脚设置为输出  

#include "MSP.h"

void Port2_Init (void){
P2 -> DIR |= 0x07;
P2 -> DS |= 0x07;
P2 ->输出&= 0x00;
}
void Port2_out (uint8_t 数据){
P2->OUT=(P2->OUT&0xf08)|数据;
}
void main (void)
{
WDT_A->CTL = WDT_A_CTL_PW | WDT_A_CTL_HOLD;//在
(1)期间停止看门狗计时器{
Port2_OUT (1);//我尝试了0和任何数字,但 LED 未打开
}

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

    0x07是十六进制数、与十进制数7和二进制数0111相同。

    您可以通过将其 DIR 寄存器位设置为1将引脚配置为输出。 P1->DIR 示例将引脚 P1.0、P1.1和 P1.2设置为输出(而不更改其他引脚)。 更常见的说法是:

    >P1->DIR |=(BIT0 | BIT1 | BIT2);// P1.0、P1.1、P1.2作为输出

    我怀疑您的程序没有达到您的期望,因为 main()没有调用 Port2_Init()。

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

    感谢您的回复  

    当然0x07 =7==0111、但我不会展示使 引脚的 DIR 变为1或0的机制、

    1)我一次过二进制{0},1,1,1 }对应于{BIT0,BIT1,BIT2 },但这不起作用,因为0111中还有1个位  

    1) 1)如果我使用了我认为简单的 P1 -> DIR |= BIT0; 这如何将 DIR 设置为0。
    在 c 中 ,DIR =(x || 1);将 DIR 设置为1或 DIR |= 1;

    非常感谢您的观看。

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

    《MSP432P4技术参考手册》(文档编号 SLAU356I)第12.2.3节介绍了 DIR 寄存器的操作。 1位配置输出、0位配置输入。

    例如,用 "P1->DIR &=~BIT4将 P1.4设置为输入位4为0;"