#ifndef __CONFIGMACROS_H #define __CONFIGMACROS_H #include "oled.h" #include "key.h" #include "interface.h" /** * @breaf 定义测试开关 */ #define Test_old 0 //演示入口 #define keyDebuginfo 1 /** * @breaf 简化函数单体 */ #define open16 11 //开字 #define close16 12 //关字 #define resetDevAddr ((uint32_t)0x8075000) #define TIM_Start(htim) HAL_TIM_Base_Start_IT(htim) #define LED_TOGGLE(pin) HAL_GPIO_TogglePin(GPIOC, (pin)) //运行灯 #define UART_PRINT(huart) HAL_UART_Transmit(huart, (uint8_t *)&ch, 1, 0xFFFF); #define PRINT_MENU_STATUS(key) printf("--->%s pressed\t%d %d %d %d\n", key, menu.current, menu.up, menu.next, menu.enter) #define HELLO(message) printf("%s\r\n", message) #define PRINT_UUID(message) printf("#%s符合设置项\n",message) #define PRINT_NUUID(message) printf("%s不符合\n",message) #define RXNE_UART(huart) __HAL_UART_ENABLE_IT(huart, UART_IT_RXNE) /** * @breaf BT模组测试重启 */ #define RESET_BT_MODULE_demo() \ if(resetBTmodule) { \ resetBTmodule = false; \ MBA32A_Init_demo(); \ } /** * @breaf BT模组重启 */ #define RESET_BT_MODULE() \ if(resetBTmodule) { \ resetBTmodule = false; \ MBA32A_Init(); \ } /** * @breaf 4G模组重启 */ #define RESET_4G_MODULE() \ if(reset4Gmodule) { \ reset4Gmodule = false; \ ML307A_Init(); \ } /** * @breaf 简化函数多体 */ /* OLED显示 */ #define OLED_DISPLAY(color, display) do { \ OLED_Init(); \ OLED_ColorTurn(color); \ OLED_DisplayTurn(display); \ } while(0) /* 设置键值 */ #define SET_MENU_STATUS(current_value, up_value, next_value, enter_value) \ do { \ menu.current = current_value; \ menu.up = up_value; \ menu.next = next_value; \ menu.enter = enter_value; \ refresh = true;\ } while(0) /* WDI */ #define TOGGLE_WDI_PIN(htim_instance) \ do { \ if ((htim_instance)->Instance == TIM2) { \ HAL_GPIO_TogglePin(WDI_GPIO_Port, WDI_Pin); \ } \ } while(0) /* 扫描按键刷新屏幕 */ #define UPDATE_EXECUTE_REFRESH() \ do { \ updatekeystate(); \ execute_interface(menu); \ OLED_Refresh(); \ } while(0) /* U1-U4 DMA */ #define IDLE_DMA_UART(huart) \ do {\ __HAL_UART_ENABLE_IT(huart, UART_IT_IDLE); \ HAL_UART_Receive_DMA(huart, recvBuff, 2048); \ } while(0) /* 蓝牙参数初始化(流水号/dtu1/自动施封时间) */ #define INIT_BT_FRAME() \ do { \ btframe.serialNum = 0x00000001; \ btframe.userId = 0x64747531; \ btframe.Autoseal = 0x01; \ printf("\t###01\tBT_init%d...\r\n", resetcount_bt); \ } while (0) /* 4G参数初始化*/ #define INIT_4G_FRAME() \ do { \ printf("\t###02\t4G_init%d...\r\n",resetcount_4g); \ } while (0) /** * @breaf 结构体定义 */ /* 界面参数结构体 */ typedef struct { uint8_t current; //当前状态索引号 uint8_t up; //向下一个 uint8_t next; //向下一个 uint8_t enter; //确定 unsigned char* sn; //sn uint32_t home; } Menu_table; /* 按键参数结构体 */ struct keys { unsigned char judge_sta; //判断按键按键按下的动作到了第几步 bool key_sta; //如果按键被按下,为0 bool key_flag; //如果确认被按下,为1 }; /* 蓝牙锁信息帧参数结构体 */ typedef struct { uint32_t serialNum; //4字节流水号 uint32_t userId; //4字节userid uint32_t Ntime; //4字节时间 uint8_t Autoseal; //1字节自动施封 } BtFrame; typedef enum { BtStepDefault = 0, UUIDS = 1, UUIDN = 2, UUIDW = 3, } BtStep; typedef enum { Default = 0, InProgress = 1, Abnormal_motor = 2 } TipsFlag; #endif /*__CONFIGMACROS_H*/