大家好
当引脚电压从阈值变为高电平时、我将使用 ADC 窗口监控器传感器控制器示例代码生成 ADC 引脚中断。
现在、我可以成功地将传感器控制器驱动程序与 simpleBLEPeripheral 示例代码集成在一起、并且工作正常。
当 GPIO 电压变为高电平时 调用 scTaskAlertCallback()回调。
当我从 scTaskAlertCallback()调用 i2c 相关函数时,传感器控制器任务会卡住。
以下是我的代码:
void scTaskAlertCallback (void){
//唤醒操作系统任务
Semaphore_post (semaphore_handle (&semScTaskAlert));
//调用 i2c 函数,如 i2c_transfer (..) -->传感器控制器任务卡住
}// scTaskAlertCallback
void taskFxn (UArg a0、UArg A1){
PIN_Handle hLedPins;
//启用 LED 引脚
hLedPins = PIN_OPEN (&ledPinState、pLedPinTable);
//初始化传感器控制器
scifOsalInit();
scifOsalRegisterCtrlReadyCallback (scCtrlReadyCallback);
scifOsalRegisterTaskAlertCallback (scTaskAlertCallback);
scifInit (&scifDriverSetup);
scifStartRtcTicksNow (0x00010000 / 8);
//配置并启动传感器控制器的 ADC 窗口监控任务(不要与操作系统任务混淆)
scifTaskData.adcWindowMonitor.cfg.adcWindowHigh = 800;
scifStartTasksNbl (BV (SCIF_ADC_WINDOW_MONITOR_TASK_ID));
//主循环
while (1){
//等待警报回调
Semaphore_pend (Semaphore_handle (&semScTaskAlert)、BIOS_wait_forever);
//清除警报中断源
scifClearAlertIntSource();
//确认警报事件
scifAckAlertEvents ();
}
}// taskFxn
您是否知道调用 i2c 相关 API 后传感器控制器任务为何卡住。
谢谢。
Mahesh