这次增加了简单的手动报警,在公司蜂鸣器太容易引起注意。增加按键功能,继续选用以前的震动电机模拟报警。按键定时10S后,驱动震动电机报警。如图1所示:
实现代码如下: - /*
- *********************************************************************************************************
- * 函数名称: Key_TimConfig
- * 功能说明: 按键启动定时器计数
- * 形参:
- * 返回值:
- *********************************************************************************************************
- */
- void Key_TimConfig(void)//定时器1用于计数
- {
- ctimer_config_t config;
- static ctimer_match_config_t matchConfig0;
- SYSCON->ASYNCAPBCTRL = 1;
- CLOCK_AttachClk(kFRO12M_to_ASYNC_APB);
- CTIMER_GetDefaultConfig(&config);
- CTIMER_Init(CTIMER1,&config);
-
- //match channel 0 configuration
- matchConfig0.enableCounterReset = true;
- matchConfig0.enableCounterStop = false;
- matchConfig0.matchValue = CLOCK_GetFreq(kCLOCK_BusClk);//1S
- matchConfig0.outControl = kCTIMER_Output_Toggle;
- matchConfig0.outPinInitState = false;
- matchConfig0.enableInterrupt = true;
-
- CTIMER_RegisterCallBack(CTIMER1,&ctimer_callback_table[0],kCTIMER_MultipleCallback);
- CTIMER_SetupMatch(CTIMER1,kCTIMER_Match_0,&matchConfig0);
- // CTIMER_StartTimer(CTIMER1);
- CTIMER_StopTimer(CTIMER1);
- }
复制代码- /*
- *********************************************************************************************************
- * 函数名称: Key_process
- * 功能说明:对按键功能进行处理
- * 形参:
- * 返回值:
- *********************************************************************************************************
- */
- void Key_process(void)
- {
- uint8_t i;
- if(keyflag==1)
- {
- CTIMER_StartTimer(CTIMER1);
- keyflag=0;
- }
- if(Tfinishflag ==1)
- {
- CTIMER_StopTimer(CTIMER1);
- GPIO_SetPinsOutput(GPIO,1,1u<<1);//振动电机
- for(i=0;i<5;i++)
- Delay_nms(0xAFFFF);
- GPIO_ClearPinsOutput(GPIO,1,1u<<1);
- Tfinishflag=0;
- }
- }
复制代码- //按键中断
- void pint_intr_callback(pint_pin_int_t pintr, uint32_t pmatch_status)
- {
- // PRINTF("\f\r\nPINT Pin Interrupt %d event detected.", pintr);
- if (!GPIO_ReadPinInput(GPIO, 1, 8))
- {
- // GPIO_TogglePinsOutput(GPIO, 0, 1u << 30);
- keyflag =1;
- }
- }
复制代码
将前两部分功能也组合到当前的工作中,整体如图2所示:
整体效果如图3所示: 还有很多需要增加和改进的,比如使用湿度传感器提醒下雨收被子,增加摄像头观测宿舍外是否是推销广告的等等。把当前项目的main.c文件放到附件中,一些初始化和功能实现的部分,可供需要的小伙伴参考。
|