您好,请问CC2640R2F想自定义消息触发以及事件触发,要参考哪个例程?
Viki Shi:
GPIO中断触发吗?
梦与远方:
回复 Viki Shi:
是这样的,我使用GPTimer进行周期性的数据采集,在数据采集完成后通过消息关闭GPTimer资源并且通过事件将数据发送出去,然后500ms后再次开启GPTimer。
Viki Shi:
回复 梦与远方:
程序中是有多任务吗?可以考虑用信号量。参考:
dev.ti.com/…/tasks.html
YiKai Chen:
回复 梦与远方:
試試用semaphore
梦与远方:
回复 Viki Shi:
任务的话就两个吧,一个是周期性检测ADC,一个是周期性开关GPTimer进行数据读取。可能我之前的表述不准确,如果我想通过SimplePeriperal_processStackMsg函数来关闭GPTimer以及使用Event_post函数配合clock来发送数据和启动GPTimer要怎么做呢?您说的信号量我有看,但是没有弄明白要怎么使用
梦与远方:
回复 YiKai Chen:
semaphore这个我看过了,没看明白要怎么用?您那边有参考例程吗?
YiKai Chen:
回复 梦与远方:
dev.ti.com/…/node 有参考例程
梦与远方:
回复 YiKai Chen:
我在GPTimerCallback函数中添加队列消息,但是仿真过程中,程序无法进入GPTimer_enqueueMsg()函数,请问是因为不能在Callback函数中添加队列消息吗?
#define GPTimer_MSG_GET_DATA_EVENT 0x0020
typedef struct{
appEvtHdr_t hdr;
uint8_t *pData;
}Msg_t;
static void GPTimerCallback(GPTimerCC26XX_Handle handle,GPTimerCC26XX_IntMask interruptMask)
{
GPTimer_enqueueMsg();
}
static void GPTimer_enqueueMsg(void)
{
Queue_Handle appMsgQueue;
Event_Handle syncEvent;
Msg_t *pMsg = ICall_malloc(sizeof(Msg_t));
if (pMsg){
pMsg->hdr.event = GPTimer_MSG_GET_DATA_EVENT;
pMsg->hdr.state = NULL;
pMsg->pData = NULL;
Util_enqueueMsg(appMsgQueue,syncEvent,(uint8_t *)pMsg);
}
YiKai Chen:
回复 梦与远方:
我不確定在Callback函数中添加队列消息是否會有問題,但是建議你用semaphore試試
梦与远方:
回复 YiKai Chen:
semaphore和Event_pend不会冲突吗