| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- #include "user_check.h"
- static user_check_work_s user_check_work = {
- .check_delay_count = 0,
- .check_stat = 2,
- .check_on_count = USER_CHECK_MAX_COUNT,
- .check_off_count = USER_CHECK_MAX_COUNT,
- .upload_func = NULL,
- };
- /*******************************************************************************
- * @函数名称 prvUser_check_out_gpio_init
- * @函数说明 GPIO输出初始化
- * @输入参数 无
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- static void prvUser_check_out_gpio_init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure = {0};
- GPIO_InitStructure.GPIO_Pin = USER_CHECK_SW_PIN;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_30MHz;
- GPIO_Init(USER_CHECK_SW_GPIO, &GPIO_InitStructure);
- USER_CHECK_SW_ON;
- }
- /*******************************************************************************
- * @函数名称 prvUser_check_in_gpio_init
- * @函数说明 GPIO输入初始化
- * @输入参数 无
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- static void prvUser_check_in_gpio_init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure = {0};
-
- GPIO_InitStructure.GPIO_Pin = USER_CHECK_IN_PIN;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_30MHz;
- GPIO_Init(USER_CHECK_IN_GPIO, &GPIO_InitStructure);
- }
- /*******************************************************************************
- * @函数名称 vUser_check_init
- * @函数说明 初始化
- * @输入参数 无
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- void vUser_check_init(void)
- {
- USER_CHECK_GPIO_RCC_ENABLE;
- prvUser_check_out_gpio_init();
- prvUser_check_in_gpio_init();
- }
- /*******************************************************************************
- * @函数名称 vUser_check_tick
- * @函数说明 任务计时器
- * @输入参数 无
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- void vUser_check_tick(void)
- {
- if(user_check_work.check_delay_count > 0)
- {
- user_check_work.check_delay_count--;
- }
- }
- /*******************************************************************************
- * @函数名称 vUser_check_in_pro
- * @函数说明 光敏状态检测
- * @输入参数 无
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- static void vUser_check_in_pro(void)
- {
- if(true == USER_CHECK_IN_IN)
- {
- user_check_work.check_off_count = USER_CHECK_MAX_COUNT;
- if(user_check_work.check_on_count == 0)
- {
- if(user_check_work.check_finish == false)
- {
- user_check_work.check_finish = true;
- if(user_check_work.check_stat != 1)
- {
- user_check_work.check_stat = 1;
- if(user_check_work.upload_func != NULL)
- {
- user_check_work.upload_func(false);
- }
- }
- }
- }
- else{
- user_check_work.check_finish = false;
- user_check_work.check_on_count--;
- }
- }
- else{
- user_check_work.check_on_count = USER_CHECK_MAX_COUNT;
- if(user_check_work.check_off_count == 0)
- {
- if(user_check_work.check_finish == false)
- {
- user_check_work.check_finish = true;
- if(user_check_work.check_stat != 0)
- {
- user_check_work.check_stat = 0;
- if(user_check_work.upload_func != NULL)
- {
- user_check_work.upload_func(true);
- }
- }
- }
- }
- else{
- user_check_work.check_finish = false;
- user_check_work.check_off_count--;
- }
- }
- }
- /*******************************************************************************
- * @函数名称 vUser_check_pro
- * @函数说明 任务
- * @输入参数 无
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- void vUser_check_pro(void)
- {
- if(user_check_work.check_delay_count == 0)
- {
- user_check_work.check_delay_count = USER_CHECK_INTERVAL;
- vUser_check_in_pro();
- }
- }
- /*******************************************************************************
- * @函数名称 vUser_check_set_upload_func
- * @函数说明 设置光敏状态上报回调函数
- * @输入参数 func:回调函数指针
- * @输出参数 无
- * @返回参数 无
- *******************************************************************************/
- void vUser_check_set_upload_func(user_check_upload_func func)
- {
- user_check_work.upload_func = func;
- }
|