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.

[参考译文] CCS/MSP-EXP430FR2355:有关 MSP430FR2355 Launchpad 和软件的新问题

Guru**** 2522770 points
Other Parts Discussed in Thread: MSP430FR2433, MSP430FR2355

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/762412/ccs-msp-exp430fr2355-newbie-questions-on-msp430fr2355-launchpad-and-software

器件型号:MSP-EXP430FR2355
主题中讨论的其他器件:MSP430FR2433MSP430FR2355

工具/软件:Code Composer Studio

非常抱歉,我自己无法解决这些问题,我需要一些帮助。

我无法在 Launchpad 上获取中断。 我按照一些代码示例来配置中断、但没有结果。 我首先怀疑的是 CCS 配置。 我通过首先导入闪烁 LED 示例来构建项目。 在这里、我注意到提供的示例代码是针对 MSP430FR2433的、并且为此设置了目标。 假设 MSP430FR2355可以使用与 FR2433相同的 driverlib、我将目标重定向到 MSP430FR2355并重新编译。 没有影响。 MSP430FR2355的示例代码直接来自 TI 网站、也许我错误地假设所提供的配置是兼容的。 下面是工程属性的图像:

下面是我的密码(直接被盗、E.Chen 先生不会感到太羞耻)。 请注意以下可疑情况:

我包括 driverLib.h 而不是 MSP430.h

我已经对 PMM 进行了两种不同的配置、以确保它不会阻止引脚配置的设置。  

代码非常简单。 让 Launchpad 电路板(P1.0)上的 LED 闪烁、并使用 P2.3按钮(带电阻器上拉)进行复位、以使闪烁的指示灯长时间处于不好的状态。 中断处理程序不应以这种方式使用、但对于测试试用、我认为它可能是可以的。  

代码似乎加载正确、我可以更改闪烁速率计时。 但是、当我按下 P2.3按钮时、我无法使中断正常工作。 我检查了 PCB 的原理图、以确保按钮确实连接到 P2.3。 那么、在这一点上、我将会丢失。 我怀疑问题是某个地方的中断配置。 《具有 CCS 和 Grace 的 MSP430 LaunchPad》手册中包含的代码未配置其输入按钮的方向(这让我想知道它们是否能够使用默认值而没有电阻器上拉电阻器) (原理图显示开关为常开、按下时将 SW2拉至 GND。 OutOfBox_MSP430FR2433中的代码使用具有两个未评分的内在函数调用,而不是一个,因此__ENABLE_INTERRUPTS ()。 我尝试过这种方法,但它无法编译(只有单个下划线函数_enable_interrupts();已成功编译。 它不起作用、因此我决定尝试模板版本、假设它会调用正确的内在函数。 它可以编译但不起作用。 有人能告诉我内在函数的位置、以便我可以检查代码的合规性吗?  

我们非常感谢您的任何帮助。 提前感谢您

Jim

/*-版权所有-、BSD
*版权所有(c) 2017、德州仪器(TI)公司
*保留所有权利。
*
*
只要
符合以下条件*、允许以源代码和二进制形式重新分发和使用:
*
*源代码的重新分发必须保留上述版权
声明*、此条件列表和以下免责声明。
*
***二进制形式的再发行必须在

*随发行提供的文档和/或其他材料中复制上述版权声明、本条件列表和以下免责声明。
*
***未经

事先书面许可、不得使用德州仪器公司的名称或*其贡献者的名称认可或推广从本软件衍生的产品*。
*
*本软件由版权所有者和贡献者"按原样"提供
*、

不承担任何明示或暗示的保证、包括但不限于*适销性和特定用途适用性的暗示保证*。 在任何情况下、版权所有者或
*贡献者都不对任何直接、间接、偶然、特殊、
*模范、 或相应的损害(包括但不限于
*采购替代产品或服务;丧失使用、数据或利润;
*或业务中断)、但出于任何责任理论
、*无论是在合同中、严格责任还是由于
使用本软件而以任何方式产生的侵权行为(包括疏忽或*其他)
、*即使已获悉可能会发生此类损坏。
*--/版权--*//*********

//闪烁 LED 演示-软件切换 P1.0
//
说明;使用 DriverLib 在软件循环内切换 P1.0。
// ACLK = n/a、MCLK = SMCLK =默认 DCO
//
MSP4302433
// --------
// /|\| XIN|-
// || |
// -|RST XOUT|-
// | |
// | P1.0|->LED
//
E.Chen
// Texas Instruments、Inc
// 2017年10月
//使用 Code Composer Studio v7构建
//

#include 




int main (void){

volatile uint32_t i;

//停止看门狗计时器
WDT_A_HOLD (WDT_A_base);

//将 P1.0设置为输出方向
GPIO_setAsOutputPin (
GPIO_PORT_P1、
GPIO_PIN0
);
//将 P2.3设置为中断输入(按钮)
//P2DIR |= BIT3;//将 P2.3设置为输入
//P2REN |= BIT3;//打开 P2.3上拉电阻器
//P2IE |= BIT3;//启用 P2.3的中断
GPIO_setAsInputPinWithPullUpResistor (GPIO_PORT_P2、
GPIO_PIN3);
//P2IES &=~BIT3;//低电平到高电平的转换
P2IFG = 0x00;//清除所有中断标志
//_enable_interrupts ();//启用所有中断
GPIO_enableInterrupt (GPIO_PORT_P2、
GPIO_PIN3);

//禁用 GPIO 上电默认高阻抗模式
//激活先前配置的端口设置
PMM_unlockLPM5 ();
PM5CTL0 &=~LOCKLPM5;
P2IFG = 0x00;


while (1)
{
//切换 P1.0输出
GPIO_toggleOutputOnPin (
GPIO_PORT_P1、
GPIO_PIN0
);

//延迟
for (i=40000;i>0;i--);
}
}
volatile uint32_t i;
#pragma vector=port2_vector
//定义中断矢量
__interrupt void port2_ISR (void){
P1OUT &=~BIT0;
P2IFG = 0x00;//清除

中断标志 for (i=30000;i>0;i--);
for (i=30000;i>0; i--);
for (i=30000;i>0; i--);
for (i=30000; i>0; i--);
for (i=30000;i>0; i--);
}


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的一位英特尔朋友打电话告诉我、我忘记设置 GEI 位。 我使用了_bis_SR_register (GIE)执行了此操作;中断现在起作用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 James:

    听起来不错、您的问题已得到解决。 当您有进一步的问题时、请随时返回 E2E。