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.

[参考译文] MSP-EXP430FR5969:MSP-EXP430FR5969

Guru**** 1456440 points
Other Parts Discussed in Thread: MSP-EXP430FR5969
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1345028/msp-exp430fr5969-msp-exp430fr5969

器件型号:MSP-EXP430FR5969

大家好、

我将使用 MSP-EXP430FR5969 Launchpad 开发板进行一些测试、我最终需要将"RST"引脚连接到设计中的外部按钮、 为了从无限 while 循环的开始重置代码、所以我想通过使用板载开关 P1.1作为输入来对其进行测试-使用此输入、我想控制一个 I/O 引脚、P4.3作为临时的"触发器"、 该引脚通过跳线连接到 LaunchPad 板载的"RST"引脚。

我的目标是使用该开关 P1.1触发 GPIO 4.3、从而向"RST"引脚发送伪逻辑低电平、从而基本上跳回无限 while 环路的开头。

以下是我的代码的相关片段:

#include "io430.h"
#define 开关              P1IN_BIT.P1IN1
#定义 CLK                 P3IN_bit.P3IN0
#define reset_trigger      P4OUT_BIT.P4OUT3
#定义引脚1                 P3OUT_BIT.P3OUT4
#define  PIN2                 P1OUT_BIT.P1OUT3
#define PIN3                 P1OUT_BIT.P1OUT4
#define PIN4                 P1OUT_BIT.P1OUT5

内部 主函数( )
{

WDTCTL = WDTPW + WDTHOLD;      //禁用 WDT。

PMMCTL0 = PMMPW;                //打开 PMM。

PM5CTL0 &=~μ A LOCKLPM5;            //清除 LPM5/锁定 IO 引脚。

...

...

P1DIR_BIT.P1DIR1 |= 0;

P1REN_bit.P1REN1 = 1;

P1OUT_bit.P1OUT1 = 1;    //与上述2行代码一起、配置开关(P1.1)以具有上拉电阻。

P4DIR_BIT.P4DIR3 |= 1;      //将 P4.3配置为输出。

P4OUT_bit.P4OUT3 |= 1;   //将 P4.3从开始配置为逻辑高电平。

...

...

...

同时 (1)
{
如果  (CLK =1 &&状态=0)
{
 如果 (引脚选择=0)
 {
  引脚1 = 1;
  状态= 1;
 }
 否则、如果  (引脚选择=1)
 {
  引脚2 = 1;
  状态= 1;
 }
 否则、如果  (引脚选择== 2)
 {
  引脚3 = 1;
  状态= 1;
 }
 否则、如果(pinSelect =>= 3)
 {
  引脚4 = 1;
  状态= 1;
 }


如果 (CLK =0 &&状态=1)
{
 如果  (引脚选择=0)
 {
  引脚1 = 0;
  状态= 0;
  引脚选择++;
 }

 否则、如果 (引脚选择=1)
 {
  引脚2 = 0;
  状态= 0;
  引脚选择++;
 }

 否则、如果 (引脚选择== 2)
 {
  引脚3 = 0;
  状态= 0;
  引脚选择++;
 }

 否则、如果  (引脚选择== 3)
 {
  引脚4 = 0;
  状态= 0;
  引脚选择= 0;
 }


如果 (开关=0)
{
 P4OUT_bit.P4OUT3 = 0;

}  //end while 循环。

}  //结束主循环。

我的用例是这里有3条主要的 IF 语句、我的目的是 按下按钮来复位 while 环路、因此我想尝试使用其中一个板载开关按钮 来控制 GPIO 引脚以向 RST 引脚发送信号...

这可能是完全错误的-任何和所有的建议都是有帮助的!  

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

    您好、Jacob:  

    我很抱歉,我将在4月14日离开办公室,在我回到办公室后,我会帮助你。 如果您的问题紧急、您可以设置新帖子、我们的美国同事将在24小时内帮助您并回复您。

    此致、

    K·扬茨

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

    我不太确定你的目标。  

    如果您的目标是返回到 while (1)的顶部、您只需使用"继续"(如果需要、甚至可以使用"转至")即可。

    如果您的目标是从一开始就启动 main(),重新初始化所有全局变量,软件可以生成重置,例如使用"WDTCTL=0;"。

    可以将 RST 连接到按钮(Launchpad 有一个)。 使用 GPIO 进行驱动似乎很长一段时间。

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

    我的目标是返回到 while 的顶部-不一定是 BOR/完全复位、BOR 会清除我所有的 GPIO 设置、对吗?

    我从未使用过"Continue"或"goto "-我会研究这些。

    此外、我花了一些时间阅读 MSP430FRxx 用户指南、 特别是关于第1.2节"系统复位和初始化"中的复位子部分-我 还没有完全了解在我的第三个 if 语句中要处理哪些位、但我认为该部分中的某些内容对于控制某种类型的复位会很有用。

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

    您好、Jacob:

    如果您使用 RST 引脚重置设备,它将从一开始启动 main (),并且所有全局变量均已重新初始化,Bruce 是正确的。 Jacob、您的问题现在已经解决了吗?

    此致、

    K·扬茨

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

    是的、这很合理。

    数据表中提到了相同的内容、总结所学内容有助于巩固这种理解。

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

    你碰巧知道一些可以启发我这些好资源吗?

    我有初级 C 级编码背景,所以任何种类好的数据库来学习这些都很棒-书籍,网站等。

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

    您好、Jacob:

    如果想要获得 MSP430的一些资源、可以从 TI.com 下载 SDK、这是 MSP430应用的示例代码。 您还可以从 TI.com 获得有关 MSP430的其他软件或文档资源。

    此致、

    K·扬茨