请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2650 您好!
我设计了一个传感器控制器任务、在主系统 CPU 应用给出的启动和停止之间每毫秒测量一个 GPIO 上的电压。 此任务提供 START 和 STOP 之间的最小电压。
问题是应用程序在调试模式下工作正常、但在不处于调试模式时冻结。 它似乎在一开始就冻结了。
请参阅下面的 sernsorcontroller 任务和应用程序代码
初始化代码:
//选择 ADC 输入 adcSelectGpioInput (AUXIO_A_VBATT); //将 v电池 输入初始化为最大值 OUTPUT.v电池 Min = VBATT_MAX; input.stopRequired = 0; //启用 ADC (固定基准、2.7us 采样时间、手动触发) adcEnableSync (ADC_ScheduleMin = VBATT_MAX;input_US_time_trigger; //启用 ADC (固定参考、2.7_task_time_task_1);trigger task_1) trigger;task_eTimer1;task_eTime_1;trigger task
执行代码:
//对传感器 U16 adcValue 进行采样; adcGenManualTrigger (); adcReadFifo (adcValue); // Determainine 最小值 if (adcValue < output.vbamin){ output.v电池 输入= adcValue; } //安排下一次执行 ifnot (input.stopRequired = 1){ fwScheduleTask (1); }
终止代码:
//禁用 ADC adcDisable();
在应用程序方面:
驱动程序的初始化方式为:
//初始化 SCIF 操作系统抽象层 scifOsalInit(); scifOsalRegisterCtrlReadyCallback (scCtrlReadyCallback); scifOsalRegisterTaskAlertCallback (scTaskAlertCallback); //初始化 SCIF 驱动程序 scifInit(&scifAexVbattDriverSetup); //启用 RTC 节拍,节拍间隔为1000Hz scifAexVbattStartRtcTicksNow (0x00000041);
测量顺序由以下步骤开始:
//初始化 SCIF 操作系统抽象层 scifOsalInit(); scifOsalRegisterCtrlReadyCallback (scCtrlReadyCallback); scifOsalRegisterTaskAlertCallback (scTaskAlertCallback); //初始化 SCIF 驱动程序 scifInit(&scifAexVbattDriverSetup); //启用 RTC 节拍,节拍间隔为1000Hz scifAexVbattStartRtcTicksNow (0x00000041);
测量值由读取
int32_t adcOffset = AUXADCGetAdjustmentOffset (AUXADC_REF_FIXED); int32_t adcGainError = AUXADCGetAdjustmentGain (AUXADC_REF_FIXED); int32_t adcValue、adcCorrectedValue、adcValueMicroVolt; //读取 ADC 值 adcValue = scifAexVbattTaskData.vbattalMonitor.output.vbattalMin; //更正 ADC 原始值 adcCorrectedValue = AUXADCAdjuststValueForGainAndOffset ((Int32_t) adcValue、adcGainError、adcOffset); //将 ADC 值转换为微伏。 adcValueMicroVolt = AUXADCValueToMicrovolt (AUXADC_FIXED_REF_VOLTGE_NORMAL、adcCorrectedValue);
测量序列通过以下方式停止:
uint8_t 结果; //停止"V电池 监控器"传感器控制器任务 scifAexVbattTaskData.vbattMonitor.input.stopRequired = 1; 结果= scifStopTasksNbl (1 << SCIF_AEX_VBATT_VBATT_MONIT_TASK_ID);