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/MSP430F5529:MSP430F5529 USB模块

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/583203/ccs-msp430f5529-msp430f5529-usb-module

部件号:MSP430F5529

工具/软件:Code Composer Studio

大家好,

我正在使用 msp430f5529的USB模块,我正在执行的程序是 使用 USB模块的接收数据程序。我成功执行 了代码,但之后如何检查o/p,我不知道吗?  我 在下面附上了代码。请帮我。

我尝试过Teraterm和Hyperterminal等串行窗口 ,但无法获得o/p

/*--版权--,BSD
*版权所有(c) 2016,Texas Instruments Incorporated
*保留所有权利。
*
*以源代码和二进制形式重新分发和使用,无论是否使用
*允许进行修改,前提是满足以下条件
满足*:
*
**重新分发源代码必须保留上述版权
*注意,此条件列表和以下免责声明。
*
**以二进制形式重新分发必须复制上述版权
*注意,此条件列表和中的以下免责声明
*随分发提供的文档和/或其他材料。
*
**既不是德州仪器(TI)公司的名称,也不是的名称
*其贡献者可用于支持或推广衍生产品
*未经事先书面许可。
*
*本软件由版权所有者和贡献者"按原样"提供
*和任何明示或暗示的担保,包括但不限于
*对适销性和特定适用性的暗示担保
*不承担目的。 在任何情况下,版权所有者或
*贡献者对任何直接,间接,附带,特殊,
*惩戒性或后果性损害(包括但不限于
采购替代货物或服务;使用,数据或利润损失;
(*或营业中断),但基于任何责任理论,
*无论是合同,严格责任还是侵权行为(包括疏忽或
*否则)因使用本软件而产生,
*即使已被告知可能发生此类损害。
*--/copyright--*/
/*
*========= main.c =========
*从终端应用程序接收1K字节:
*
*此示例实现了唯一目的是接收1K块的设备
*来自主机的数据。 它首先提示用户按任意键。
*当用户执行此操作时,它会要求提供1K数据。 此后收到的任何数据
*点将计入1K (1024字节)目标。 收到1K时,
*程序感谢用户,过程重复
*
---------------------------------- +
*有关详细信息,请参阅示例指南。
*---------------------------------- */
#include <string.h>

#include "driverlib.h"

#include "USB_config/descriptor.h"
包含"USB_API/USB_Common/device.h"
包括"USB_API/USB_Common/USB.h"
#include "USB_API/USB_CDC_API/UsbCdc.h"
#include "USB_app/usbConstructs.h"

/*
*注:修改hal.h以选择特定评估板并自定义
*您自己的主板。
*/
#包括"hal.h"

//由事件设置的全局标志
volatile uint8_t bCDCDataReceived_event = false;
volatile uint8_t bDataReceiveCompleted_event = false;

//应用全局
uINT8_t数据关闭[1024];
字符输出字符串[40]="";
uINT16_t x;
字符pakOutString[16];
volatile uint16_t usbEvents = USB_VBUSON_EventMask + USB_VBUSOFF _EventMask +
USB_DATARECEIVED_EventMask + USB_USBSUSPEND_EventMask +
USB_USBRESUME_EventMask +
USB_USBRESET_EventMask;

/*
*========= 主====
*/
Void main (void)(无效主菜单

WDT_A_HOLD (WDT_A_BASE);//停止监视程序计时器

// USB API所需的最小Vcore设置是pMM_core_levate_2。
PMM_setVCore (PMM_Core_LEVEL_2);
USBHAL_INITPorts();//为低功耗(低输出)配置GPIO
USBHAL_initClocks(800万);//配置时钟。 MCLK=SMCLK=FLL=8MHz;ACLK=REFO=32kHz
USB_setup (TRUE,TRUE);//初始化USB和事件;如果存在主机,则连接

__enable_interrupt ();//全局启用中断

同时(1)

//相应地检查USB状态和直接主环路
交换机(USB_getConnectionState())

//在上枚举您的设备时,将执行此情况
// USB主机
案例ST_ENUM_ACTIVE:
//输入LPM0,直到发生事件。
__bis_sr_register (LPM0_bits + GIE);

//此标志是由设置的
// handleDataReceived事件;此事件仅为
//等待时启用
//用于'按任意键'

if (bCDCDataReceived_event)
bCDCDataReceived_event = false;

//更改事件标志,为接收1K做准备
//数据。 未收到更多数据。 我们仅将其用于
//按任意键
usbEvents &=~USB_DATARECEIVED_EventMask;

//但启用Receive-completed;我们希望在出现时得到提示
//已收到1K数据
usbEvents || USB_RECEIVECOMPLETED_EventMask;
USB_setEnabledEvents (usbEvents);

//我们不在乎按键是什么字符,所以我们拒绝它
USBCDC_rejectData(CDC0_INTFNUM);

//提示用户输入1K数据。
strcpy (outString,"我已准备好接收1K数据。\r\n");

//通过USB发送。 如果由于某种原因失败;请中止和
//离开主环路
如果(USBCDC_SendDataAndWaitTillDone(((uint8_t*)outString,
strlen(outString),CDC0_INTFNUM,0){
USBCDC_ABORTSend(&x,CDC0_INTFNUM);
中断;
}

//为1K数据设置rcv操作
//如果USBCDC_receiveData因意外删除而失败
//或由主机abtr挂起并离开主环路
IF (USBCDC_receiveData(dataBuff,1024, CDC0_INTFNUM)==
USBCDC_BUS_NOT_available){
USBCDC_ABORTRECEIVE(&x,CDC0_INTFNUM);
中断;
}
}

//此标志已由handleReceiveCompleted设置
//事件;此事件仅在接收1K数据时启用,
//和信号表示已接收所有1K
if (bDataReceiveCompleted_event){
bDataReceiveCompleted_event =假;

//准备外发字符串
strcpy (outString,"感谢数据。\r\n");

//通过USB发送响应。 如果由于某种原因失败
//中止并离开主循环
如果(USBCDC_SendDataInBackground(((uint8_t*)outString,
strlen(outString),CDC0_INTFNUM,0){
USBCDC_ABORTSend(&x,CDC0_INTFNUM);
中断;
}

//更改事件标志,为'按任意键'做准备
//不再接收-已完成。
usbEvents &=~USB_RECEIVECOMPLETED_EventMask;

//这将告诉我们,数据----任何关键----已经到达
usbEvents || USB_DATARECEIVED_EventMask;

USB_setEnabledEvents (usbEvents);
}
中断;

//这些情况是在设备与断开连接时执行的
//主机(意思是,未枚举);枚举但已暂停
//由主机连接,或连接到无USB主机的有源集线器
//存在。
案例ST_PHY_DISCONNECTED:
案例ST_ENUM_Suspended:
案例ST_PHY_CONNGED_NOENUM_SUSP:
__bis_sr_register (LPM3_bits + GIE);
_NOP();
中断;

//为瞬时状态执行默认值
// ST_ENUM_IN_PROGRESS。 通常,这种状态只能持续几次
//秒。 确保不要在此状态下输入LPM3;USB
//此处正在进行通信,因此模式必须
//为LPM0或active-cpu。
案例ST_ENUM_IN_PROGRESS:
默认值:;
}

}// while (1)
}//主()

/*
*========= unMI_isr =========
*/
#if defined (__TI_Compiler_version__)||(__IAR_SYSTEMS _ICC__)
#pragma vector = UNMI_vector
__interrupt void UNMI_ISR (void)
#Elif Defined (__GNUC__)&&(__MSP430-_)
void __attribute__(interrupt (UNMI_vector)) UNMI_ISR (void)
#否则
#ERROR找不到编译器!
#endif

开关(__均匀_in_range(SYSUNIV, SYSUNIV_BUSIFG ))

案例SYSUNIV_NONE:
__no_operation();
中断;
案例SYSUNIV_NMIIFG:
__no_operation();
中断;
案例SYSUNIV_OFIFG:
UCS_clearFaultFlag(UCS_XT2OFFG);
UCS_clearFaultFlag(UCS_DCOFFG);
SFR_clearInterrupt (SFR_--振荡器----故障----中断);
中断;
案例SYSUNIV_ACCVIFG:
__no_operation();
中断;
案例SYSUNIV_BUSIFG:
//如果CPU在USB模块处于时访问USB存储器
//挂起时,可能会出现“总线错误”。 这将生成NMI。 如果
// USB正在自动断开软件连接,设置A
//此处有断点,查看执行是否成功。 请参阅
//程序员指南了解更多信息。
SYSBERRIV =0;//清除总线错误标志
USB_disable();//禁用
}
}

//released_Version_5_10_00_17

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为什么要将所有代码复制到问题中? 您是否对TI的示例进行了任何更改?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不是,先生,我没有修改代码。但是如何检查该代码的输出?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此应用程序创建CDC接口。 这在主机PC上的显示方式取决于您拥有的操作系统(和版本)。 (通常,您必须以类似于仿真器实现的COM端口的方式安装它。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的PC中安装了Windows 7操作系统。我不知道必须安装什么以及如何才能看到输出?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    USB_config目录中有一个文件“msp430_ti_signed.inf"”。 您应该在Windows要求提供驱动程序时选择它。

    此界面如何显示在设备管理器中? (应该是“TI MSP430 USB”或“MSP430-USB示例”。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,先生,它在设备管理器中显示了MSP430-USB示例接口。但是Windows没有询问我驱动程序,它是自动安装的。
    我转储了代码,代码已成功加载。那么接下来该怎么办?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    先生,我已经更新了驱动程序软件。现在,“端口”部分中的“TI MSP430 USB”可用。
    那么,先生,接下来该怎么办?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    SIR I打开TeraTerm窗口并选择“TI MSP430 USB”作为COM端口。当我按下键盘中的任何一个按钮时,会显示字符串“I is ready to receive 1K of data”,因为程序中已提到该字符串。
    但在按下键盘中的任何按钮后,TeraTerm窗口中不显示任何内容。
    先生,问题是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如注释所示,此程序的目的是“从终端接收1K字节”。

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

    谢谢,先生,我获得了结果。