static void performPeriodicTask(void) {
// Read Adc Value
HalAdcSetReference(HAL_ADC_REF_AVDD);
lux = HalAdcRead(HAL_ADC_CHN_AIN7, HAL_ADC_RESOLUTION_12) & 0x07ff;
timevr = HalAdcRead(HAL_ADC_CHN_AIN4, HAL_ADC_RESOLUTION_12) & 0x07ff;
luxvr = HalAdcRead(HAL_ADC_CHN_AIN5, HAL_ADC_RESOLUTION_12) & 0x07ff;
tmrcnt++;
/***************************************************************
*tmrcnt=1s
*if (tmrcnt == 10) {
*ON_OFF = 1;
*} else if (tmrcnt == 20) {
*ON_OFF = 0;
*}
*/
if (load_state == ON) {
RelayONOff(1);
} else if (load_state == OFF) {
RelayONOff(0);
}
if(worhing_state==OFF)
{
//LED_ON;
if(tmrcnt==5)
{
load_state_OFF;
worhing_state_ON;
//LED_OFF;
check_pir_ON;
}
}
if(worhing_state==NC)
{
if(tmrcnt==1) worhing_state_ON;
}
if(worhing_state==ON)
{
if(load_state==OFF)
{
if(P0_0==ON)
{
if(lux>=luxvr){
settime=Read_ADC_temp_level(timevr);
//LED_ON; load_state_ON;
check_pir_OFF;
tmrcnt=0;
}
}
else tmrcnt=0;
}
else
{
if(check_pir==OFF)
{
if(tmrcnt==2)
{ //LED_OFF;
}
else if(tmrcnt==4)
{
check_pir_ON; }
}
else
{
if(P0_0==ON)
{
//LED_ON;
check_pir_OFF;
tmrcnt=0;
}
}
if((tmrcnt==settime)&&(tmrcnt!=0))
{
load_state_OFF;
check_pir_OFF;
worhing_state_NC;
tmrcnt=0;
}
}
}
}
user5995095:
求各位大佬们指点
YiKai Chen:
回复 user5995095:
你如何啟動周期性事件performPeriodicTask?
user5995095:
回复 YiKai Chen:
在SimpleBLEPeripheral_ProcessEvent方法中启动的啊由于我这个项目上电要一直运行所以用的自动重装那个方法启动的定时器
YiKai Chen:
回复 user5995095:
SimpleBLEPeripheral例程預設是5秒觸發一次SBP_PERIODIC_EVT/performPeriodicTask,你看到的結果是?
user5995095:
回复 YiKai Chen:
我把预设值改成1000了一秒一次按照我的代码在烧录之后运行基本稳定但是我用到的led灯会有几下不正常的无规律的闪烁
YiKai Chen:
回复 user5995095:
led灯会有几下不正常的无规律的闪烁應該是你應用程序其他地方去觸動led造成的吧
Viki Shi:
回复 user5995095:
单独跑这部分代码不添加其他功能,是否还存在LED灯无规律闪烁的现象?
user5995095:
回复 Viki Shi:
单独跑这段代码没问题啊 因为这个项目之前是pir感应灯 后来才加入了蓝牙模块
user5995095:
回复 YiKai Chen:
我这项目用的cc2541的一个小板子控制我的pir感应灯
user5995095:
回复 YiKai Chen:
开灯关灯的处理只有周期性函数里才有其他地方没有