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.

[参考译文] MSP430FR2633:MSP430FR2633

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

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

部件号:MSP430FR2633
主题中讨论的其他部件: Captivate-BCWPTIDM-Captivate-64按钮

您好,支持

我正在7.11 Windows 10上的IAR(IAR.2)上使用MSP430FR2633。我已经执行了代码大小优化的1按钮演示,示例中 包含第一个按钮的响应, 如果我必须使用BCWP的所有8个按钮,  在程序中应该做什么更改,如何定义程序中的其他按钮   

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

    使用随MSP-Capt-FR2633设计文件提供的Captivate-BCWP项目。 或扩展OneButton项目的ButtonGroup以包括其他7个按钮(自电容式RX00至RX07 0.0 ,RX07 1.0 ,2.0 ,3.0 ,RX01。 1.1 ,2.1 和3.1)

    此致,
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Ryan
    我正在使用此程序来控制BSWP的第1个按钮到开/关LED2。我应该在这方面做什么更改,以使用BSWP的第2个按钮来控制LED1。请尽快帮助我解决此问题

    #include <MSP4S.h>
    #include "captate.h"

    //*************************************************************************************************
    //定义
    //*************************************************************************************************

    //! \brief端口P1上LED1的位掩码。
    //!
    #define LED1 0x80

    //! \brief端口P1上LED2的位掩码。
    //!
    #define LED2 0x40

    //! \简要说明DCOCLK和FLLREF之间的比率。
    //!
    #define FLL_Ratio 0x01E7

    //*************************************************************************************************
    //函数原型
    //*************************************************************************************************

    //! 键盘传感器的\brief事件处理程序。
    //! 此处理程序根据更新LED1和LED2
    //! 键盘传感器的状态。
    //! \param指向键盘传感器的指针
    静态空ButtonHandler(TSENSOR* pSensor);

    //*************************************************************************************************
    //函数实现
    //*************************************************************************************************

    Void主(void)

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

    //
    //设置端口多工:
    //- WFP 1.1 :IRQ (漏极开路)
    //- WFP 1.2 :UCB0 I2C SDA.
    //- WFP 1.3 :UCB0 I2C SCL
    //- WFP 1.4 :UCA0 UART TXD
    //- WFP 1.5 :UCA0 UART RXD
    //- WFP 1.6 :LED2
    //- WFP 1.7 :LED1
    //- WFP 2.0 :XOUT
    //- WFP 2.1 :Xin
    //
    PAOUT = 0x0000;
    PADIR = 0xFCC1;
    PASEL0 = 0x033C;
    P3OUT = 0x00;
    P3DIR = 0x07;
    P3SEL0 = 0x00;
    PM5CTL0 &=~LOCKLPM2;

    //
    //将FRAM等待状态设置为允许16 MHz MCLK。
    //请注意,Captivate ROM函数在没有的情况下执行
    // 16 MHz时的任何等待状态。
    //
    FRCTL0 = FRCTLPW | NWITS_1;

    //
    //设置系统时钟。
    // MCLK = DCO = 16 MHz
    // ACLK = XT1 = 32 kHz
    // SMCLK =关闭
    //


    CSCTL7 &=~(XT1OFFG | DCOFFG);
    SFRIFG1 &=~OFIFG;
    }同时(SFRIFG1 & OFIFG);
    CSCTL3 = SELREF_XT1CLK;
    __bis_sr_register (SCG0);
    CSCTL0 = 0;
    CSCTL1 &=~(DCORSEL_7);
    CSCTL1 |= DCORSEL_5;
    CSCTL2 = FLLD_0 + FLL_RATIO;
    __DELAY周期(3);
    __BIC_SR_REGISTER (SCG0);
    While (CSCTL7和(FLLUNLOCK0 | FLLUNLOCK1));
    CSCTL4 = SELMS__DCOCLKDIV |拉美经济体系__XT1CLK;
    CSCTL5 = SMCLKOFF | VLOAUTOOFF;

    //
    //设置Captivate外围设备
    //和计时器。 计时器将定期运行
    //设置g_bConvTimerFlag。
    //
    CAPT_INITUI (&G);
    CAPT_CalibrateUI (&G);
    MAP_Capt_registerCallback(&BUT,&ButtonHandler);
    MAP_Capt_selectTimerSource (Capt_timer_SRC_ACLK);
    MAP_Capt_writeTimerCompRegister (Capt_MS_to_Cycles (g_uiApp.ui16ActiveModeScanPeriod));
    MAP_Capt_startTimer();
    MAP_Capt_enableISR(Capt_timer_interrupt);
    __bis_sr_register (GIE);

    //
    //启动应用程序
    //
    同时(1)

    IF (g_bConvTimerFlag == true)

    //
    //如果需要更新按钮,
    //在这里用通用库调用更新它。
    //
    g_bConvTimerFlag =假;
    CAPT_updateUI(&G_uiApp);
    }

    //
    //完成后进入睡眠状态。
    // Captivate计时器将从睡眠模式唤醒应用程序。
    //
    __bis_sr_register (g_uiApp.ui8AppLPM | GIE);
    }
    }//结束main()

    void ButtonHandler(TSENSOR* pSensor)

    //
    //如果当前正在触摸该按钮,
    //点亮LED1。
    //
    如果(pSensor->bSensorTouch=true)



    //
    //如果检测到全新触点,
    //切换LED2的状态。
    //
    如果(pSensor->bSensorPrevTouch=false)

    P1OUT ^= LED2;
    }
    }
    否则


    }
    }

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

    Shivam,您好!

    首先,我使用了CodeSizeOptimize_OneButton-Demo CCS项目,但复制/粘贴了Captivate-BSWP-Demo项目的CAPTATE_CONFIG文件夹,以便定义所有7个按钮元素。  以下是如何执行所需功能的快速演示:

    #include <MSP430-h>
    #include "captate.h"
    
    //*********************************************************************************************************
    //定义
    //*************************************************************************************************
    
    //! \brief端口P1上LED1的位掩码。
    //!
    #define LED1 0x80
    
    //! \brief端口P1上LED2的位掩码。
    //!
    #define LED2 0x40
    
    //! \简要说明DCOCLK和FLLREF之间的比率。
    //!
    #define FLL_Ratio 0x01E7
    
    //*********************************************************************************************************
    //函数原型
    //*****************************************************************************************
    
    //! 键盘传感器的\brief事件处理程序。
    //! 此处理程序根据
    //!更新LED1和LED2 键盘传感器的状态。
    //! Param指针指向键盘传感器
    静态空ButtonHandler (TSENSOR* pSensor);
    
    //*********************************************************************************
    //功能实施
    //*****************************************************************************************
    
    void main (void)
    {////
    	
    	停止看门狗计时器
    	//
    	WDTCTL = WDTPW | WDTHOLD;//
    
    	
    	设置端口mutxing:
    	//- WFP 1.1 :IRQ (漏极开路)
    	//- WFP 1.2 :UCB0 I2C SDA
    	//- WFP 1.3 :UCB0
    	
    	WFP SCL//- 1.4 :UCA0 UARTXD / I2C UART: 1.5 UCA0 UART RXD
    	// WFP - 1.6 :LED2//
    	- WFP 1.7 :LED1//
    	- 2.0 :XOUT
    	//- WFP 2.1 :XIN
    	//
    	PAOUT = 0x0000;
    	PADIR = 0xFCC1;
    	PASEL0 = 0x033C;
    	P3OUT = 0x00;
    	P3DIR = 0x07;
    	P3SEL0 = 0x00;
    	PM5CTL0 &=~LOCKLPPM5;
    
    	////
    	设置FRAM等待状态以允许16 MHz MCLK。
    	//请注意,Captivate ROM函数在
    	16 MHz时执行时不会出现//任何等待状态。
    	//
    	FRCTL0 = FRCTLPW | NWITS_1;////
    
    	
    	设置系统时钟。
    	// MCLK = DCO = 16 MHz
    	// ACLK = XT1 = 32 kHz
    	// SMCLK =关闭
    	//
    	DO
    	{
    		CSCTL7 &=~(XT1OFFG | DCOFFG);
    		SFRIFG1 &=~OFIFG;
    	} While (SFRIFG1 & OFIFG);
    	CSCTL3 = SE1LRF_XCLK_;
    __bis_sr_register (SCG0);
    CSCTL0 = 0;
    CSCTL1 &=~(DCORSEL_7);
    CSCTL1 |= DCORSEL_5;
    CSCTL2 = FLLD_0 + FLL_RATIO;
    __DELAY周期(3);
    __BIC_SR_REGISTER (SCG0);
    While (CSCTL7和(FLLUNLOCK0 | FLLUNLOCK1));
    	CSCTL4 = SELMS__DCOCLKDIV | LAST__XT1CLK;
    	CSCTL5 = SMCLKFF | VLOAUTOOFF;
    
    	////
    	设置Captivate外设
    	//和计时器。 计时器将定期
    	//设置g_bConvTimerFlag。
    	//
    	Capt_initUI (&g_uiApp);
    	Capt_calibrateUI (&g_uiApp);
    	MAP_Capt_registerCallback (&keypadSensor,&ButtonHandler);
    	MAP_Capt_selectTimerSource (Capt_timer_SRC_ACLK);
    	MAP_Capt_writeTimerCompRegister (Capt_MS_to_Cycles (g_uiApp.ui16ActiveModeScanPeriod));MAP_Capt_Timer()
    	;
    	MAP_Capt_enableISR(Capt_timer_interrupt);
    	__bis_sr_convert_register(GIE);
    
    	////
    	启动应用程序/startTimer();
    	
    	
    	如果
    		
    		
    			
    			
    			使用常规按钮/1=更新时,则使用常规程序/timerg
    			//
    			g_bConvTimerFlag = false;
    			Capt_updateUI (&g_uiApp);
    		}////
    
    		
    		完成后进入休眠状态。
    		// Captivate计时器将从睡眠模式唤醒应用程序。
    		//
    		__bis_sr_register(g_uiApp.ui8AppLPM | GIE);
    	}
    // end main()
    
    void ButtonHandler(TSENSOR* pSensor)
    {
    
    extern tElement keypadSensor_E00;
    extern tElement keypadSensor_E01;
    	////
    	如果当前触摸该按钮,
    	//将点亮LED1。
    	//
    	if (keypadSensor_E00.bTouch=true)
    	{
    		P1OUT |= LED1;
    	}
    	else
    	{
    		P1OUT &=~LED1;
    	}
    
    IF (keypadSensor_E01.bTouch=true)
    {
    P1OUT |= LED2;
    }
    否则
    {
    P1OUT &=~LED2;
    }
    } 

    请阅读Captivate Technology Guide (Captivate技术指南)的Software Library (软件库)-> How-to (操作方法)部分,了解回调函数和元素状态数据访问。

    此致,Ryan

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

    你好Ryan

    谢谢你,非常有帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,
    我是Vivek Kumar,我是MSP430FR2633和Captivate触摸按钮的新成员。
    我从TI Sites TIDM-Captivate 64按钮软件获得了源代码,并且我正在使用基本演示代码。
    我在这里没有使用任何设计中心软件。我刷新了TIDM-Captivate 64按钮BasicDemo代码,因此加载后,它的工作方式就像我从64按钮中轻触任意一个键时,如果我多次轻触一个板,LED 1和LED 2都会闪烁 闪烁,现在我希望在UART中使用触摸感应数据。 现在我得到了UART的值,但它与触摸感应无关,即使在触摸时它也发送了UART中的内容,它可能是一个垃圾值,所以我需要UART中的触摸输出(使用BuadRate),请尽快为这个问题提供解决方案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Vivek,

    请将有关此问题的对话保持在您发起的主题 上:e2e.ti.com/.../67.0343万

    谢谢!
    Ryan