cc2640r2f硬件定时器实现最小定时20us。关掉宏定义power saving, 20-100us发送一次翻转电平。一组数据翻转10次,10毫秒发送一次数据。同时关掉蓝牙广播,发送一段时间之后,会出现349.57毫秒的无数据发送现象,然后又恢复正常,又出现349.57毫秒的无数据发送现象。
发送io口初始化为
static PIN_Config send_out_config[] ={
gfx_50s_send_out_io | PIN_GPIO_OUTPUT_EN | PIN_INPUT_DIS | PIN_DRVSTR_MAX | PIN_PUSHPULL,
PIN_TERMINATE
};
硬件定时器初始化为
GPTimerCC26XX_Params timerParams;
GPTimerCC26XX_Params_init(&timerParams);
timerParams.width = GPT_CONFIG_16BIT;
timerParams.mode = GPT_MODE_PERIODIC_UP;
timerParams.debugStallMode = GPTimerCC26XX_DEBUG_STALL_OFF;
GPTimerCC26XX_Handle hTimer = GPTimerCC26XX_open(1, &timerParams);
object->hTimer = hTimer;
gfx_50s_b2c_st.data_point = 0;
gfx_50s_c2b_st.data_point = 0;
//gfx_50s_send_out_zero(gfx_50s_send_out_hPins, gfx_50s_send_out_io); GPTimerCC26XX_setLoadValue(object->hTimer, 1000);
GPTimerCC26XX_registerInterrupt(hTimer, gfx_50s_send_out_data, GPT_INT_TIMEOUT);
GPTimerCC26XX_start(object->hTimer);
同时,请问如何实现打开power saving,同时可以使用硬件定时器。 这边打开power saving之后,使用不了硬件定时器
Viki Shi:
低功耗模式下,定时器关闭,见下图:
zhiwu hu:
回复 Viki Shi:
那请问有没有办法不打开宏定义开关power saving,使用某个函数控制cc2640r2f进入或者退出低功耗模式
zhiwu hu:
回复 Viki Shi:
因为必须使用到cc2640r2f的硬件定时器。谢谢了
Viki Shi:
回复 zhiwu hu:
可以用以下两个函数:
Power_setConstraint();//不进入低功耗Power_releaseConstraint();//释放
更具体的使用方法请参考power management手册:www.ti.com/…/sprui20.pdf
zhiwu hu:
回复 Viki Shi:
谢谢,上面两个函数解决了在打开power saving的模式下,使用硬件定时器的问题。但是在发送数据一段时间(大概30秒)之后,总会有300多毫秒的死机现象,硬件定时器的定时失效了,之后便是规律性的发送两组数据有300毫秒的死机。请问你们知道是什么原因吗?
zhiwu hu:
回复 Viki Shi:
请问能不能降低蓝牙的优先级
Viki Shi:
回复 zhiwu hu:
据我所知,不能