主题中讨论的其他器件: 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); }}