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.

[参考译文] RTOS/MSP432P401R:我无法使 ADC 正常工作!!!

Guru**** 2589280 points
Other Parts Discussed in Thread: CC3120

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/797307/rtos-msp432p401r-i-cannot-make-my-adc-work

器件型号:MSP432P401R
主题中讨论的其他器件: CC3120

工具/软件:TI-RTOS

您好!

我将 MSP432P401R Launchpad 与 CC3120 Boost 配合使用、用于 WiFi 连接。  

我计划从 ADC 读取一些值、对其进行处理、然后后者使用 MQTT 客户端发送这些值。

但是、我无法在中打开 DE ADC 处理程序、只获得 NULL 值。

我的怀疑是、程序的其余部分正在 ADC 中交互(因为我也在使用升压器 CC3120)

这是主线程的总代码

----------------------------------------------------------------------

//================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ /////================================================================
相关库=========================================================================== ////====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//

#include //标准包括
#include 
//#include 
#include 
#include 
#include 

#include //TI-Driver 包括
#include 
#include 
#include 



#include //Simplelink 包括

#include //SlNetSock 包含

#include "network_if.h" //通用接口包括
#include "UART_TERM.h"

#include "Board.h" //应用程序包括

#include "mqTT_PAH/mqTTPacket.h" //MQTT-PAHO 库
#include "arm_math.h"
//#include "arm_const_structs.h" //请记住对符号进行必要的调整


// 本地定义
//*************
#define MQTT_INIT_STATE (0x04)
#define application_name "mqTT client"
#define SLNET_IF_WIFI_PRIO (5)

/*生成任务优先级以及任务和线程栈大小 */
#define TASKSTACKSIZE 2048
#define sawn_task_priority 9


/*用于切换 LED 的计时器的到期值。 */
#define TIMER_EXPILOAD_VALUE 100 * 1000000

//*********
// 本地函数原型
//*********

void TimerPeriodicIntHandler (sigval);
void LedTimerConfigNStart ();
void LedTimerDeinitStop ();
static void DisplayBanner (char * AppName);
void MQTT_START ();
Int32_t MQTT_IF_Connect ();

//*********
// 全局变量
//*********

/*连接状态:(0)-已连接,(负)-已断开连接 //
int32_t ApConnectionState =-1;
uint32_t InitState = 0;
bool ResetApp = false;
unsigned short g_usTimerInts;

// AP 安全参数 //
SlWlanSecParams_t SecurityParams ={0};

//客户端 ID //
//*如果未设置 ClientID,设备的 MAC 地址将被复制到*/
/* ClientID 参数中。 */
char ClientID[13]={'\0'};
timer_t g_timer;


//***************
//! 周期定时器中断处理程序
//! \param 无
//! 返回无
//*************
void TimerPeriodicIntHandler (sigval)
{
/*递增中断计数器。 *
G_usTimerInts++;

if (!(g_usTimerInts & 0x1))
{
/*关闭 LED 指示灯 *
GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_OFF);
}
其他
{
/*打开指示灯 *
GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_ON);
}
}

//*********
//! 用于配置和启动计时器以在器件为
//时使 LED 闪烁的函数! 尝试连接到 AP
//! \param none
//! 返回无
//*****************
空 LedTimerConfigNStart()
{
struct itimerspec 值;
sigevent sev;

/*创建计时器 *
sev.sigev_notify = SIGEV_SIGNAL;
SEV.sigev_notify_function =&TimerPeriodicIntHandler;
Timer_create (2、sev、&g_timer);

/*启动计时器 *
value.it_interval.tv_sec = 0;
value.it_interval.tv_nsec = TIMER_EXPIRE_VALUE;
value.it_value.tv_sec = 0;
value.it_value.tv_nsec = TIMER_EXPIRE_VALUE;

Timer_settime (g_timer、0、&value、NULL);
}

//*********
//! 器件连接到 AP
时禁用 LED 闪烁计时器//! \param none
//! 返回无
//*****************
void LedTimerDeinitStop()
{
/*在设备连接到 AP 时禁用 LED 闪烁计时器。 *
Timer_delete (g_timer);
}

//*********
//! UART 上的应用启动显示
//! \param none
//! \返回无
//*************
静态空 DisplayBanner (char * AppName)
{
UART_PRINT ("\n\n\r\n"\});
UART_PRINT ("\t\t\t 图标 \n\n");
UART_PRINT ("\t\t\t CC32xx %s 应用程序 \n\n"、AppName);
UART_PRINT ("\t\t\t 图标 \n\n");
UART_PRINT ("\n\n\r");
}


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //////
该函数提供到 SimpleLink 器件的 Internet 连接,网络参数可在
network_if.h 中找到//in,该函数在失败时返回0,而在失败
时返回-1。 //

int32_t Internet_Connect (){
int32_t lRetVal;
char SSID_Remote_Name[32];
INT8_t Str_Length;
memset (SSID_Remote_Name、'\0'、sizeof (SSID_Remote_Name));
STR_Length = strlen (SSID_NAME);

if (Str_Length){ //将默认 SSID 复制到 Network_if.h 中包含的局部变量
strncpy (SSID_Remote_Name、SSID_NAME、Str_Length);
}
DisplayBanner (application_name); //显示应用程序横幅

GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_OFF);
GPIO_WRITE (Board_GPIO_LED1、Board_GPIO_LED_OFF);
GPIO_WRITE (Board_GPIO_LED2、Board_GPIO_LED_OFF);

network_if_ResetMCUStateMachine(); //重置机器的状态
lRetVal = Network_IF_InitDriver (Role_STA); //启动驱动程序
if (lRetVal < 0){
UART_PRINT ("启动 SimpleLink 器件失败\n\r"、lRetVal);
return(-1);
}

GPIO_WRITE (Board_GPIO_LED2、Board_GPIO_LED_ON); //在 Board_GPIO_LED2上切换以指示 Simplelink 已正确启动。
LedTimerConfigNStart(); //启动计时器使 Board_GPIO_LED0闪烁,直至接入点连接


SecurityParams.Key =(signed char *) security_key; //初始化 AP 安全参数(同时检查 network_if.h)
SecurityParams.KeyLen = strlen (security_key);
SecurityParams.Type = SECURITY_TYPE;
lRetVal = Network_IF_ConnectAP (SSID_Remote_Name、SecurityParams);//连接到接入点
if (lRetVal < 0){
UART_PRINT ("连接到 AP 失败\n\r\n);
return(-1);
}

LedTimerDeinitStop(); //在器件连接到 AP 时禁用 LED 闪烁计时器。
GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_ON); //打开 Board_GPIO_LED0以指示器件获取了 IP
睡眠(1);
GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_OFF);
GPIO_WRITE (Board_GPIO_LED1、Board_GPIO_LED_OFF);
GPIO_WRITE (Board_GPIO_LED2、Board_GPIO_LED_OFF);

返回(0); //成功后,该函数返回0
}//------------------
/////================================================================
Internet_Connect 结束()================================================================ //
/+/+/++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //


/+/+/++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //
//== S=Get_Sample。 返回一个已从 ADC 处理的完整1024点,其中包含要
发送到网络
的相关//------------------ //


void get_sample (){
//=========================== 配置 UART,从 LPDS 中删除 UART 接收========================================================== //////=================================
获取样片所需的一切========================================================================================================================================================================================1. //


//GPIO_setConfig (Board_ADC1、GPIO_CFG_INPUT | GPIO_CFG_IN_NOPULL);
//GPIO_setConfig (Board_GPIO_LED0、GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
//int i=0;
//int status = 8;
//for (i=0;i<30;+i){


//if (GPIO_Read (Board_ADC1)=0){ //小 if 语句获取信号的正边沿
// while (GPIO_Read (Board_ADC1)=0){;}
//}
//else{
// while (GPIO_Read (Board_ADC1)=1){;}
// while (GPIO_Read (Board_ADC1)=0){;}
//}

//status = ADCBuf_convert (adcBuf、&ADC_Conversion、1);



//}

}//------------------

/////================================================================
get_Sample()=========================================================================的结束 //
/+/+/++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ////


*****************
//! MQTT 开始-初始化并创建运行 MQTT 所需的所有项目
//! 协议
//! \param none
//! 返回无
//*************
void MQTT_START()
{

while (1){
MQTTPacket_connectData 数据= MQTTPacket_connectData_initializer;
//int RC = 0;
unsigned char buf[200];
MQTTString topicString = MQTTString_initializer;
CHAR* PAYLOAD="La ***!!!!";
int payloadlen = strlen (payload);
int buflen = sizeof (buf);

data.clientID.Cstring ="me";
data.keepaliveInterval = 20;
data.清洁= 1;
int len = MQTTSerialize_connect (buf、buflen、&data);/* 1 */

topicString.Cstring ="MScCM";
len += MQTTSerialize_publish (buf + len、buflen - len、0、0、0、0、 0、topicString、有效载荷、payloadlen);/* 2 */

len += MQTTSerialize_disconnect (buf + len、buflen - len);/* 3 */

int mysock = sl_Socket (sl_AF_iNet、sl_sock_stream、0);
SlSockAddrIn_t addr;
Addr.Sin_Family = SL_AF_iNet;
Addr.sin 端口= sl_Htons (1883);
Addr.sin addr.s_addr = sl_Htonl (0x25BB6A10);// iot.eclipse.org 0xC6291EF1
//0x12B868B4
// 0x25BB6A10 test.mosquitto.org


sl_Connect (mysock、(SlSockAddr_t *)&addr、sizeof (addr));
sl_Send (mysock、buf、len、NULL);
sl_close (mysock);

//rc =新套接字("127.0.1"、1883、&mysock);
//rc =写入(mysock、buf、len);
//rc =关闭(mysock);

GPIO_WRITE (Board_GPIO_LED3、Board_GPIO_LED_ON);
睡眠(1);
GPIO_WRITE (Board_GPIO_LED3、Board_GPIO_LED_OFF);
睡眠(1);

}


//InitState &=~MQTT_INIT_STATE;
}

//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ /////=================================
在 main_tirtos 中调用的流的 main 线程从此处开始========================================================================== ////========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//
#define ADCBUFFERSIZE (10)
#define UARTBUFFERSIZE ((20 * ADCBUFFERSIZE)+ 24)

uint16_t sampleBufferOne[ADCBUFFERSIZE];
uint16_t sampleComplerTwo[ADCBUFFERSIZE];
uint32_t Uint32_t translation_revoltvolt.t
计数器= ADUFFERSIZE
* 0;uint32_t UARTFFERSIZE = ADPT.t 计数器


ADCBuf_handle;
ADCBuf_Params adcBufParams;
ADCBuf_Conversion 连续转换;

/*调用驱动程序初始化函数*/
ADCBuf_init ();

/*在 ADCBuf_RECURE_MODE_连续 中设置 ADCBuf 外设*/
ADCBuf_Params_init (&adcBufParams);
adcBufParams.callbackFxn =空;
adcBufParams.RecurrencedMode = ADCBuf_Recurrence_mode_One_Shot;
adcBufParams.returnMode = ADCBuf_return_mode_blocking;
adcBufParams.samplingFrequency = 200;
AdcHand = ADCBuf_open (Board_ADCBUF0、&adcBufParams);

/*配置转换结构*/
continuousConversion.arg =空;
continuousConversion.adcChannel = Board_ADCBUF0CHANNEL0;
continuousConversion.sampleBuffer = sampleBufferOne;
continuousConversion.samplesRequestedCount = ADCBUFFERSIZE;

if (adcHand == NULL){
/* ADCBuf 无法打开。 *
while (1);
}



spi_init();
GPIO_init ();
//=================== 配置 UART,从 LPDS 中删除 UART 接收========================================================== //
UART_Handle UART_H;
UART_H = InitTerm ();
UART_CONTROL (UART_H、UART_CMD_RXDISABLE、NULL);

//=========================== 要打开 Internet 连接,需要执行以下步骤:================================================= //
uint32_t count = 0;
pthread_t spawn_thread =(pthread_t) NULL;
pthread_attr_t pAttrs_spawn;
struct sched_param primParam;
int32_t retc = 0;
//使用 CC31xx/CC32xx 接口初始化 SlNetSock 层--- //
SlNetIf 初始化(0);
SlNetIf (SLNETIF_ID_1、"CC32xx"、(const SlNetIf Config_t *)和 SlNetIfConfigWifi、SLNET_IF_WIFI_PRIO);
SlNetSock_init (0);
SlNetUtil_init (0);

//创建 sl_Task ------------------------------------------------------- //
pthread_attr_init (&pAttrs_spawn);
priParam.sched_priority = sawn_task_priority;
retc = pthread_attr_setschedparam (&pAttrs_spawn、&priParam);
retc |= pthread_attr_setstacksize (&pAttrs_sprawn、TASKSTACKSIZE);
retc |= pthread_attr_setdetachstate (&pAttrs_sprawn、pthread_create_detachstate);
retc = pthread_create (&spawn_thread、&pAttrs_spawn、sl_Task、NULL);
//开始,SimpleLink 任务的停止,如果发生错误,则无限循环--- //
if (retc!= 0){uart_print ("无法创建 simplelink 任务\n\r\n); while (1){;}}
retc = sl_Start (0、0、0);
if (retc < 0){uart_print ("\n sl_Start failed\n"); while (1){;}}
retc = sl_Stop (sl_stop_timeout);
if (retc < 0){uart_print ("\n sl_Stop failed\n"); while (1){;}}
if (retc < 0){UART_PRINT ("MQTT_CLIENT -无法检索设备信息\n");while (1){;}

//==================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== /////=================================
这是应用程序的主流程的请求。=================================================== ////========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//
ResetApp = false; //需要复位时可变
InitState = 0;
ApConnectionState = Internet_Connect(); //Connect the MQTT client to a valid Access Point (AP)(将 MQTT 客户端连接到有效接入点(AP))
InitState |= MQTT_init_State;


while (1)
{
get_Sample();
/*运行 MQTT 主线程(它将打开客户端和服务器) *
//MQTT_START();

/*等待初始化完成!!! *
while (InitState!= 0)
{
UART_PRINT (".");
睡眠(1);
}
UART_PRINT ("../r\n");

while (ResetApp == false)
{
;
}

UART_PRINT ("要完成-关闭所有线程和资源\r\n);
UART_PRINT ("重新打开 MQTT #%d \r\n、++COUNT);
}
}

----------------------------------------

如果我运行另一个程序、如启动器提供的示例、则 ADC 正在工作。 但不适用于该程序

谢谢、

Esteban V

//================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ ////======================================================================== 相关库=========================================================================== //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ //
#include                //标准包括#include //#include #include #include #include
#include           //TI 驱动程序包括#include #include #include


#include    //Simplelink 包括
#include   //SlNetSock 包括
#include "network_if.h"              //通用接口包括#include "UART_TERM.h"
#include "Board.h"                //应用程序包括
#include "mqTT_PAH/mqTTPacket.h"         //MQTT-PAHO 库#include "arm_math.h"/#include "arm_const_structs.h"          //记住对符号进行必要的调整
// //              本地定义//************* #define MQTT_INIT_STATE      (0x04)#定义应用程序名称      "MQTT 客户端"#define SLNET_IF_WIFI_PRIO    (5)
/*生成任务优先级以及任务和线程堆栈大小             */#define TASKSTACKSIZE       2048# define sawn_task_priority   9.

/*用于切换 LED 的计时器的到期值。    /#define TIMER_EXPILOCK_VALUE  100 * 1000000
// //            本地函数原型//*********
void TimerPeriodicIntHandler (sigval);void LedTimerConfigNStart ();void LedTimerDeinitStop ();static void DisplayBanner (char * AppName);void MQTT_START ();Int32_t MQTT_IF_Connect ();
// //          全球变量//*********
/*连接状态:(0)-已连接,(负)-已断开连接        /int32_t ApConnectionState =-1;uint32_t InitState = 0;bool ResetApp = false;unsigned short g_usTimerInts;
/* AP 安全参数                           */SlWlanSecParams_t SecurityParams ={0};
/*客户 ID                                  *//*如果未设置 ClientID,设备的 MAC 地址将复制到 *//* ClientID 参数中。                           */char ClientID[13]={'\0'};timer_t g_timer;

// //! 周期定时器中断处理程序//! \param 无//! 返回无//************* void TimerPeriodicIntHandler (sigval){  //使中断计数器递增。                    */  g_usTimerInts++;
  if (!(g_usTimerInts & 0x1))  {     /*关闭 LED 指示灯                            *     GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_OFF);  }  否则  {     /*打开指示灯                             *     GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_ON);  }}
// //! 用于配置和启动计时器以在器件为//时使 LED 闪烁的函数! 尝试连接到 AP//! \param none//! 返回无/ void LedTimerConfigNStart(){  struct itimerspec 值;  sigevent sev;
  /*创建计时器                              */  sev.sigev_notify = SIGEV_signal;  sev.sigev_notify_function =&TimerPeriodicIntHandler;  timer_create (2、sev、&g_timer);
  /*启动计时器                               */  value.it_interval.tv_sec = 0;  value.it_interval.tv_nsec = TIMER_EXPILOAD_VALUE;  value.it_value.tv_sec = 0;  value.it_value.tv_nsec = TIMER_EXPILOAD_VALUE;
  Timer_settime (g_timer、0、&value、NULL);}
// //! 器件连接到 AP//!时禁用 LED 闪烁计时器 \param none//! 返回无/ void LedTimerDeinitStop(){/*  在设备连接到 AP 时禁用 LED 闪烁计时器。      */  timer_delete (g_timer);}
// //! UART//!上的应用启动显示 \param none//! 返回无/ 静态空 DisplayBanner (char * AppName){  UART_PRINT ("\n\n\r\n\r\n"r);  UART_PRINT ("\t\t\t \n\n");  UART_PRINT ("\t\t\t  CC32xx %s 应用    程序\n", AppName");  UART_PRINT ("\t\t\t \n\n");  UART_PRINT ("\n\n\r\n");}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /////the 函数提供到 SimpleLink 器件的因特网连接,网络参数可在 network_if.h 中找到//in,该函数在失败时返回0,而在失败时返回-1。 //
int32_t Internet_Connect (){  int32_t lRetVal;  char SSID_Remote_Name[32];  INT8_t Str_Length;  memset (SSID_Remote_Name、'\0'、 sizeof (SSID_Remote_Name));  Str_Length = strlen (SSID_NAME);
  if (Str_Length){                          //将默认 SSID 复制到 Network_if.h 中包含的局部变量     strncpy (SSID_Remote_Name、SSID_NAME、Str_Length);  }  DisplayBanner (application_name);                 //显示应用程序横幅
  GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_OFF);  GPIO_WRITE (Board_GPIO_LED1、Board_GPIO_LED_OFF);  GPIO_WRITE (Board_GPIO_LED2、 Board_GPIO_LED_OFF);
  network_if_ResetMCUStateMachine();                //重置机器  的状态 lRetVal = Network_IF_InitDriver (Role_STA);            //启动驱动程序  if (lRetVal < 0){     UART_PRINT ("启动 SimpleLink 器件失败\n\r"、lRetVal);     return(-1);  }
  GPIO_WRITE (Board_GPIO_LED2、Board_GPIO_LED_ON);          //在 Board_GPIO_LED2上切换以指示 Simplelink 已正确启动。   LedTimerConfigNStart();                      //启动计时器使 Board_GPIO_LED0闪烁,直至接入点连接

  SecurityParams.Key =(signed char *) security_key;        //初始化 AP 安全参数(也检查 network_if.h)  SecurityParams.KeyLen = strlen (security_key);  SecurityParams.Type = security_type;  lRetVal = Network_if_ConnectAP (SSID_Remote_Name、SecurityParams);//连接到接入点  if (lVal < 0){     UART_PRINT ("连接到 AP 失败\n\r\n);     return(-1);  }
  LedTimerDeinitStop();                       //在器件连接到 AP 时禁用 LED 闪烁计时器。   GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_ON);          //打开 Board_GPIO_LED0以指示器件获得 IP  睡眠(1);  GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_OFF);  GPIO_WRITE (Board_GPIO_LED1、Board_GPIO_LED_OFF);   GPIO_WRITE (Board_GPIO_LED2、Board_GPIO_LED_OFF);
  返回(0);                            //成功后,函数返回0 }//----------------- ////======================================================================== Internet_Connect 结束()================================================================ ///+/++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ /////== S=Get_Sample。 返回一个完整的1024点,这些点已经从 ADC 中处理,包含要发送到网络的相关//------------------- //

void get_Sample(){/================================= 配置 UART,从 LPDS 中删除 UART 接收========================================================== ////================================= 获取样片所需的一切========================================================================================================================================================================================1. //

  //GPIO_setConfig (Board_ADC1、GPIO_CFG_INPUT | GPIO_CFG_IN_NOPULL);  //GPIO_setConfig (Board_GPIO_LED0、GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);  //int i=0;   //int status = 8;  //for (i=0;i<30;++I){

    //if (GPIO_Read (Board_ADC1)=0){                //小 if 语句获取信号的正边沿     //  while (GPIO_Read (Board_ADC1)=0){;}     //    }     //else{     //  while (GPIO_Read (Board_ADC1)=1){;}     //  while (GPIO_Read (Board_ADC1)=0){;}     //}
    //status = ADCBuf_convert (adcBuf、&ADC_Conversion、1);


  //}

///------------------------------------------------------------ ////======================================================================== get_Sample()=========================================================================的结束 ///+/++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //

// //! MQTT 开始-初始化并创建运行 MQTT//! 协议//! \param none//! 返回无//************* void MQTT_START(){
  while (1){     MQTTPacket_connectData 数据= MQTTPacket_connectData_initializer;     //int RC = 0;     unsigned char buf[200];     MQTTString topicString = MQTTString_initializer;     CHAR* PAYLOAD="La ***!!!!";     int payloadlen = strlen (payload);     int buflen = sizeof (buf);
    data.clientID.Cstring ="me";     data.keepaliveInterval = 20;     data.清洁= 1;     int len = MQTTSerialize_connect (buf、buflen、&data);/* 1 */
    topicString.Cstring ="MScCM";     len += MQTTSerialize_publish (buf + len、buflen - len、0、0、0、0、 0、topicString、有效载荷、payloadlen);/* 2 */
    len += MQTTSerialize_disconnect (buf + len、buflen - len);/* 3 */
    int mysock = sl_Socket (sl_AF_iNet、sl_sock_stream、0);     SlSockAddrIn_t addr;     Addr.Sin_Family = SL_AF_iNet;     Addr.sin 端口= sl_Htons (1883);     Addr.sin addr.s_addr = sl_Htonl (0x25BB6A10);// iot.eclipse.org 0xC6291EF1                             //0x12B868B4                             // 0x25BB6A10 test.mosquitto.org

    sl_Connect (mysock、(SlSockAddr_t *)&addr、sizeof (addr));     sl_Send (mysock、buf、len、NULL);     sl_close (mysock);
    //rc =新套接字("127.0.1"、1883、&mysock);     //rc =写入(mysock、buf、len);     //rc =关闭(mysock);
    GPIO_WRITE (Board_GPIO_LED3、Board_GPIO_LED_ON);     睡眠(1);     GPIO_WRITE (Board_GPIO_LED3、Board_GPIO_LED_OFF);     睡眠(1);
  }

  //InitState &=~MQTT_INIT_STATE;}
//================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ ////================================= 在 main_tirtos 中调用的流的 main 线程从此处开始========================================================================== //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ //#define ADCBUFFERSIZE  (10)#define UARTBUFFERSIZE  ((20 * ADCBUFFERSIZE)+ 24)
uint16_t sampleBufferOne[ADCBUFFERSIZE];uint16_t sampleBufferTwo[ADCBUFFERSIZE];uint32_t microVoltBuffer[ADCBUFFERSIZE];uint32_t buffersCompletedCounter = 0;void mainThread (void * args){
  ADCBuf_handle;  ADCBuf_Params adcBufParams;  ADCBuf_Conversion 连续转换;
  /*调用驱动程序初始化函数*/ADCBuf_init()  ;
  /*在 ADCBuf_Recurrence_mode_Continuous 中设置 ADCBuf 外设*/  ADCBuf_Params_init (&adcBufParams);  adcBufParams.callbackFxn = NULL;  adcBufParams.RecurrencedMode = ADCBuf_Recurrence_mode_One_shot;  adcBufParams.return Mode = ADCf_Params_Blocking 200_Mode_AdcBuf_Params.Params_Blocking     AdcHand = ADCBuf_open (Board_ADCBUF0、&adcBufParams);
  /*配置转换结构*/  continuousConversion.arg = NULL;  continuousConversion.adcChannel = Board_ADCBUF0CHANNEL0;  continuousConversion.sampleBuffer = sampleBufferOne;  continuousConversion.samplesRequestedCount = ADCBUFFERSIZE;
  if (adcHand == NULL){     /* ADCBuf 无法打开。 *     while (1);  }


  spi_init ();  gpio_init ();//=========================== 配置 UART,从 LPDS 中删除 UART 接收========================================================== //  UART_Handle UART_H;  UART_H = InitTerm ();  UART_CONTROL (UART_H、UART_CMD_RXDISABLE、NULL);
//======================================== 要打开 Internet 连接,需要执行以下步骤:================================================= //  uint32_t count = 0;  pthread_t spawn_thread =(pthread_t) NULL;  pthread_attr_t pAttrs_spawn;  struct sched_param priParam;  int32_t retc = 0;               //使用 CC31xx/CC32xx 接口初始化 SlNetSock 层--- //  SlNetIf 初始化(0);  SlNetIf 附加(SLNETIF_ID_1、"CC32xx"、(const SlNetIf Config_t *)&SlNetIfConfigWifi、SLNET_IF_WIFI_PRIO);  SlNetSock_init (0);   SlNetUtil_init (0);
              //创建 sl_Task ------------------------------------------------------- //  pthread_attr_init (&pAttrs_spawn);  priParam.sched_priority = spawn_task_priority;  retc = pthread_attr_setschedparam (&pAttrs_spawn、&pr参数);  retc |= pthread_attr_setstacksize (&pAttrs_spawn、&pparam) TASKSTACKSIZE);  retc |= pthread_attr_setdetachstate (&pAttrs_spawn、pthread_create_detached);  retc = pthread_create (&spawn_thread、&pAttrs_spawn、 SL_Task、NULL);               //开始,SimpleLink 任务的停止,如果发生错误,则无限循环--- //  if (retc!= 0){uart_print ("无法创建 simplelink 任务\n\r\n);           while (1){;}}  retc = sl_Start (0、0、0);  if (retc < 0){UART_PRINT ("\n sl_Start Failed\n");                   while (1){;}}  retc = sl_Stop (sl_stop_timeout);  if (retc < 0){uart_print ("\n sl_Stop failed\n");                    while (1){;}}  if (retc < 0){UART_PRINT ("MQTT_CLIENT - Unable to retrieve device information \n"); while (1){;}
//================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ ////================================= 这是应用程序的主流程的请求。=================================================== //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================ //  ResetApp = false;                           //需要复位时的变量  InitState = 0;  ApConnectionState = Internet_Connect ();                //Connect the MQTT client to a valid Access Point (AP)  InitState |= MQTT_init_State;

  while (1)  {     get_Sample();     /*运行 MQTT 主线程(它将打开客户端和服务器)      *     //MQTT_START();
    /*等待初始化完成!!!                   *     while (InitState!= 0)     {       UART_PRINT (".");       睡眠(1);    }     UART_PRINT ("../r\n");
    while (ResetApp == false)     {       ;    }
    UART_PRINT ("要完成-关闭所有线程和资源\r\n);     UART_PRINT ("重新打开 MQTT #%d \r\n、++COUNT);  }}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    这真的很难阅读。 是否可以附加源而不是粘贴? 现在猜一下、但 DMA 分配是否存在冲突?

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

    e2e.ti.com/.../MScCM_5F00_client_5F00_app.c

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

    我只是连接了线程的位置。

    最初、我想放置 ADCBUFF 以在名为"Get_Sample()"的函数中获取单路信号

    然后我创建了另一个线程来测试.... 但是、无论我将 ADC 的例程放在何处、它都不起作用。

    我在这里还有其他东西、例如连接到互联网和发送 MQTT 消息的例程、但这是我工作的一部分。

    这里是 main.c 的代码

    e2e.ti.com/.../8880.main_5F00_tirtos.c

    我对 MSP432 Launchpad 的编程非常陌生、因此任何提示帮助都将非常有用。

    谢谢、

    Esteban Valverde

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

    e2e.ti.com/.../4747.MScCM_5F00_client_5F00_app.cSorry关于混乱的信息。。。

    请使用此选项:

    我的问题是 ADC,处理程序无法正常工作…

    谢谢、

    Esteban Valverde