TI中文支持网
TI专业的中文技术问题搜集分享网站

串口增加定时器后死机问题

工程师们,你们好,我已将这份代码放到simple_peripheral中,并能正常运行,

GPTimerCC26XX_Handle hTimer;

static GPTimerCC26XX_Value ReloadValue = 0; //这个值用来重装

void timerCallback(GPTimerCC26XX_Handle handle, GPTimerCC26XX_IntMask interruptMask) 
//触发中断事件,向串口打印完成并关闭定时器
{
UART_Handle MyUart = GetUartHandle();
UART_write(MyUart, "Finish", 6);
GPTimerCC26XX_stop(hTimer);
}

void UartTimeOutTimer_Start(void) //开启定时器
{
GPTimerCC26XX_start(hTimer);
}

void UartTimeOutTimer_Init(void) //定时器初始化
{
GPTimerCC26XX_Params params;
GPTimerCC26XX_Params_init(&params);
params.width = GPT_CONFIG_32BIT; //16bit width timer
params.mode = GPT_MODE_PERIODIC; //Period timer
params.direction = GPTimerCC26XX_DIRECTION_DOWN; //Timer's direction up
params.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF; //No debug stall mode
while(1)
{
hTimer = GPTimerCC26XX_open(CC2640R2_LAUNCHXL_GPTIMER0, &params); //Open timer
if(hTimer == NULL) {
continue; //If open failed, retry again
}
else
break;
}
Types_FreqHz freq;
BIOS_getCpuFreq(&freq);
ReloadValue = freq.lo - 1; //47999999,这里为其赋上期望值

GPTimerCC26XX_setLoadValue(hTimer, ReloadValue);
GPTimerCC26XX_registerInterrupt(hTimer, timerCallback, GPT_INT_TIMEOUT);
}

void UartTimeOutTimer_ReloadValue(void) //定时时间重置
{
GPTimerCC26XX_setLoadValue(hTimer, ReloadValue);
}

连接移植前simple_central后正常收发,但是我将这份代码移植到simple_central的时候(移植过程中在main中增加了定时器初始化,与simple_peripheral相同),出现了如下问题:

simple_central串口在接收数据后,能够通过事件到达APP(simple_central和simple_peripheral已经连接完成,simple_peripheral向simple_central发送数据正常),但是simple_central此时却无法将数据成功下发到simple_peripheral。

调试时发现如下代码中返回的status并不是SUCCESS,并且在之后串口无法工作,协议栈其他部分正常(simple_peripheral发送数据到simple_central时返回值是SUCCESS)
//Send message
status = GATT_WriteCharValue(dstConnHandle, &req, selfEntity);
if ( status != SUCCESS )
{
GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ);
}

请问这个问题的原因是什么?能帮忙分析一下大概问题的方向吗?

Viki Shi:

请参考下这边的类似问题:e2e.ti.com/…/619203

GuppyCat:

前几天在逛TI的帖子时有个类似问题,这个问题的原因是修改了任务栈的大小导致的,那篇帖子中提到了任务栈的大小不要进行修改,我将任务栈大小修改后,串口正常,蓝牙协议栈正常。

赞(0)
未经允许不得转载:TI中文支持网 » 串口增加定时器后死机问题
分享到: 更多 (0)