代码暂存 按键第一次按下显示当前状态,第二次再改变电机状态
This commit is contained in:
parent
a68193b154
commit
4a3e00f133
|
@ -715,11 +715,9 @@ static void peripheralStateNotificationCB(gapRole_States_t newState, gapRoleEven
|
||||||
*/
|
*/
|
||||||
static void performPeriodicTask(void)
|
static void performPeriodicTask(void)
|
||||||
{
|
{
|
||||||
// ??????
|
|
||||||
gValveData.bat = BSP_ReadVbat();
|
gValveData.bat = BSP_ReadVbat();
|
||||||
if (gValveData.bat <= LOW_VABAT_CLOSE_VALUE)
|
if (gValveData.bat <= LOW_VABAT_CLOSE_VALUE)
|
||||||
{
|
{
|
||||||
gValveData.switch_status = kClosed;
|
|
||||||
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
|
tmos_set_event(vavle_task_id, VAVLE_CLOSE_START_EVT);
|
||||||
}
|
}
|
||||||
else if (gValveData.bat <= LOW_VABAT_ALARM_VALUE)
|
else if (gValveData.bat <= LOW_VABAT_ALARM_VALUE)
|
||||||
|
|
|
@ -103,7 +103,6 @@ int main(void)
|
||||||
MultiTimerInstall((PlatformTicksFunction_t)BSP_Get_Tick);
|
MultiTimerInstall((PlatformTicksFunction_t)BSP_Get_Tick);
|
||||||
BSP_KEY_Init(app_task_handler);
|
BSP_KEY_Init(app_task_handler);
|
||||||
|
|
||||||
// BSP_MOTOR_Init();
|
|
||||||
BSP_VAVLE_Init();
|
BSP_VAVLE_Init();
|
||||||
|
|
||||||
BSP_LED_Init();
|
BSP_LED_Init();
|
||||||
|
@ -111,8 +110,8 @@ int main(void)
|
||||||
BSP_VBAT_Init();
|
BSP_VBAT_Init();
|
||||||
logDebug("VBAT init ok\n");
|
logDebug("VBAT init ok\n");
|
||||||
|
|
||||||
BSP_Ml307r_Init();
|
// BSP_Ml307r_Init();
|
||||||
logDebug("BSP_M1307r ok\n");
|
// logDebug("BSP_M1307r ok\n");
|
||||||
|
|
||||||
ShowRestartReason();
|
ShowRestartReason();
|
||||||
IWDG_Init(5000);
|
IWDG_Init(5000);
|
||||||
|
|
12
README.md
12
README.md
|
@ -1,3 +1,9 @@
|
||||||
1.电机停止需判断COIL_ADC优化
|
1.按键第一次按下显示当前状态,第二次再改变电机状态
|
||||||
2.低电压判断及后续处理
|
2.蓝牙连接成功及断开显示
|
||||||
3.暂时屏蔽4G
|
3.json格式优化
|
||||||
|
4.服务器对接测试
|
||||||
|
|
||||||
|
5.气压传感器数值测试
|
||||||
|
6.低功耗优化
|
||||||
|
7.电机停止需判断COIL_ADC优化
|
||||||
|
8.低电压判断及后续处理
|
||||||
|
|
|
@ -9,11 +9,12 @@
|
||||||
#define KEY_TIMOUT_MS 1000
|
#define KEY_TIMOUT_MS 1000
|
||||||
#define KEY_LONG_PRESS_MS 5000
|
#define KEY_LONG_PRESS_MS 5000
|
||||||
#define KEY_SACN_MS 40
|
#define KEY_SACN_MS 40
|
||||||
|
#define KEY_IDLE_TIMEOUT_MS 10000
|
||||||
|
|
||||||
#define KEY_SCAN_EVT (0x0001 << 0)
|
#define KEY_SCAN_EVT (0x0001 << 0)
|
||||||
#define KEY_WAKEUP_EVT (0x0001 << 1)
|
#define KEY_WAKEUP_EVT (0x0001 << 1)
|
||||||
#define KEY_RELEASE_EVT (0x0001 << 2)
|
#define KEY_RELEASE_EVT (0x0001 << 2)
|
||||||
#define KEY_IDLE_TIMEOUT_EVT (0x0001 << 2)
|
#define KEY_IDLE_TIMEOUT_EVT (0x0001 << 3)
|
||||||
|
|
||||||
// KEY_B_PIN at PB7,low->active
|
// KEY_B_PIN at PB7,low->active
|
||||||
#define KEY_A_PIN GPIO_Pin_7
|
#define KEY_A_PIN GPIO_Pin_7
|
||||||
|
|
|
@ -765,7 +765,6 @@ uint16_t Check_ProcessEvent(uint8_t task_id, uint16_t events)
|
||||||
if(motor_flag == 1)
|
if(motor_flag == 1)
|
||||||
{
|
{
|
||||||
motor_flag = 0;
|
motor_flag = 0;
|
||||||
gValveData.switch_status = kOpened;
|
|
||||||
LED_VALVE_OPEN;
|
LED_VALVE_OPEN;
|
||||||
VALVE_OPEN();
|
VALVE_OPEN();
|
||||||
// DelayMs(1000);
|
// DelayMs(1000);
|
||||||
|
@ -784,6 +783,18 @@ uint16_t Check_ProcessEvent(uint8_t task_id, uint16_t events)
|
||||||
logDebug("motor/LED close!!!");
|
logDebug("motor/LED close!!!");
|
||||||
tmos_start_task(check_task_id, MOTOR_STOP_EVT, MS1_TO_SYSTEM_TIME(CHARGE_TIME_MS));
|
tmos_start_task(check_task_id, MOTOR_STOP_EVT, MS1_TO_SYSTEM_TIME(CHARGE_TIME_MS));
|
||||||
}
|
}
|
||||||
|
else if(motor_flag == 3)
|
||||||
|
{
|
||||||
|
motor_flag = 0;
|
||||||
|
if(gValveData.switch_status == kOpened)
|
||||||
|
{
|
||||||
|
LED_VALVE_OPEN;
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
LED_VALVE_CLOSE;
|
||||||
|
}
|
||||||
|
// DelayMs(500);
|
||||||
|
}
|
||||||
tmos_start_task(check_task_id, CHECK_EVT_START, MS1_TO_SYSTEM_TIME(200)); //100
|
tmos_start_task(check_task_id, CHECK_EVT_START, MS1_TO_SYSTEM_TIME(200)); //100
|
||||||
return (events ^ CHECK_EVT_START);
|
return (events ^ CHECK_EVT_START);
|
||||||
}
|
}
|
||||||
|
@ -791,12 +802,12 @@ uint16_t Check_ProcessEvent(uint8_t task_id, uint16_t events)
|
||||||
{
|
{
|
||||||
VALVE_STOP();
|
VALVE_STOP();
|
||||||
logDebug("motor STOP");
|
logDebug("motor STOP");
|
||||||
DelayMs(1500);
|
// DelayMs(1500);
|
||||||
if(fault_state == 4)
|
// if(fault_state == 4)
|
||||||
{
|
// {
|
||||||
IotFlag_t.Valve_Close_flag = 1;
|
// IotFlag_t.Valve_Close_flag = 1;
|
||||||
Iot_Send_Data();
|
// Iot_Send_Data();
|
||||||
}
|
// }
|
||||||
return (events ^ MOTOR_STOP_EVT);
|
return (events ^ MOTOR_STOP_EVT);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "bsp_ml307r.h"
|
#include "bsp_ml307r.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "SLEEP.h"
|
#include "SLEEP.h"
|
||||||
|
#include "bsp_valve.h"
|
||||||
|
|
||||||
// https://www.cnblogs.com/iot-fan/p/14304943.html
|
// https://www.cnblogs.com/iot-fan/p/14304943.html
|
||||||
|
|
||||||
|
@ -19,6 +20,7 @@ tmosTaskID key_task_id = INVALID_TASK_ID;
|
||||||
|
|
||||||
volatile uint8_t key_wakeup_flag = 0;
|
volatile uint8_t key_wakeup_flag = 0;
|
||||||
volatile uint8_t key_timeout_flag = 0;
|
volatile uint8_t key_timeout_flag = 0;
|
||||||
|
volatile uint8_t press_count = 0;
|
||||||
|
|
||||||
static app_task_evt_handler_t p_handler = NULL;
|
static app_task_evt_handler_t p_handler = NULL;
|
||||||
|
|
||||||
|
@ -142,7 +144,11 @@ static uint16_t KEY_Task_ProcessEvent(uint8_t task_id, uint16_t events)
|
||||||
}
|
}
|
||||||
return (events ^ KEY_SCAN_EVT);
|
return (events ^ KEY_SCAN_EVT);
|
||||||
}
|
}
|
||||||
|
if (events & KEY_IDLE_TIMEOUT_EVT)
|
||||||
|
{
|
||||||
|
press_count = 0;
|
||||||
|
return (events ^ KEY_IDLE_TIMEOUT_EVT);
|
||||||
|
}
|
||||||
// Discard unknown events
|
// Discard unknown events
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -319,42 +325,47 @@ __HIGH_CODE
|
||||||
__attribute__((noinline))
|
__attribute__((noinline))
|
||||||
void KEY_ProcessLoop(void)
|
void KEY_ProcessLoop(void)
|
||||||
{
|
{
|
||||||
static uint8_t key_flag = 0;
|
// static uint8_t key_flag = 0;
|
||||||
// {
|
|
||||||
// if (R16_PB_INT_IF & KEY_B_PIN)
|
|
||||||
// {
|
|
||||||
// R16_PB_INT_IF = KEY_B_PIN;
|
|
||||||
// tmos_set_event(key_task_id, KEY_SCAN_EVT);
|
|
||||||
// logDebug("KEY_ProcessLoop");
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (key_wakeup_flag)
|
if (key_wakeup_flag)
|
||||||
{
|
{
|
||||||
key_wakeup_flag = 0;
|
key_wakeup_flag = 0;
|
||||||
key_flag = !key_flag;
|
press_count++;
|
||||||
if(key_flag)
|
|
||||||
|
if (press_count == 1)
|
||||||
{
|
{
|
||||||
motor_flag = 1;
|
motor_flag = 3;
|
||||||
logDebug("motor open");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
motor_flag = 2;
|
|
||||||
logDebug("motor close");
|
|
||||||
logDebug("motor_flag_start = %d",motor_flag);
|
logDebug("motor_flag_start = %d",motor_flag);
|
||||||
|
tmos_start_task(key_task_id, KEY_IDLE_TIMEOUT_EVT, MS1_TO_SYSTEM_TIME(KEY_IDLE_TIMEOUT_MS));
|
||||||
}
|
}
|
||||||
|
else if (press_count >= 2)
|
||||||
|
{
|
||||||
|
tmos_start_task(key_task_id, KEY_IDLE_TIMEOUT_EVT, MS1_TO_SYSTEM_TIME(KEY_IDLE_TIMEOUT_MS));
|
||||||
|
if(gValveData.switch_status == kClosed)
|
||||||
|
{
|
||||||
|
motor_flag = 1;
|
||||||
|
logDebug("motor open");
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
motor_flag = 2;
|
||||||
|
logDebug("motor close");
|
||||||
|
}
|
||||||
|
// key_flag = !key_flag;
|
||||||
|
// if(key_flag)
|
||||||
|
// {
|
||||||
|
// motor_flag = 1;
|
||||||
|
// logDebug("motor open");
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// motor_flag = 2;
|
||||||
|
// logDebug("motor close");
|
||||||
|
// }
|
||||||
|
// press_count = 0;
|
||||||
|
}
|
||||||
|
|
||||||
tmos_set_event(key_task_id, KEY_SCAN_EVT);
|
tmos_set_event(key_task_id, KEY_SCAN_EVT);
|
||||||
logDebug("KEY_ProcessLoop");
|
logDebug("KEY_ProcessLoop");
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (key_wakeup_flag)
|
|
||||||
// {
|
|
||||||
// key_wakeup_flag = 0;
|
|
||||||
// tmos_set_event(key_task_id, KEY_SCAN_EVT);
|
|
||||||
// // tmos_start_task(key_task_id, KEY_SCAN_EVT, MS1_TO_SYSTEM_TIME(20));
|
|
||||||
// // tmos_start_task(key_task_id, KEY_IDLE_TIMEOUT_EVT, MS1_TO_SYSTEM_TIME(1000 * 10));
|
|
||||||
// logDebug("key_wakeup_flag");
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -153,10 +153,12 @@ void StopTask_CallBack(MultiTimer* timer, void* userData)
|
||||||
{
|
{
|
||||||
IotFlag_t.PowerOn_error_flag = 0;
|
IotFlag_t.PowerOn_error_flag = 0;
|
||||||
tmos_stop_task(ml307_task_id, ML307_PERIODIC_EVT);
|
tmos_stop_task(ml307_task_id, ML307_PERIODIC_EVT);
|
||||||
|
PFIC_DisableIRQ(UART1_IRQn);
|
||||||
BSP_RequestSleep();
|
BSP_RequestSleep();
|
||||||
}else{
|
}else{
|
||||||
// BSP_Ml307_Power_Off(); //¹Ø»ú
|
// BSP_Ml307_Power_Off(); //¹Ø»ú
|
||||||
tmos_stop_task(ml307_task_id, ML307_PERIODIC_EVT);
|
tmos_stop_task(ml307_task_id, ML307_PERIODIC_EVT);
|
||||||
|
PFIC_DisableIRQ(UART1_IRQn);
|
||||||
BSP_RequestSleep();
|
BSP_RequestSleep();
|
||||||
}
|
}
|
||||||
IotFlag_t.Date_Sending_flag = 0;
|
IotFlag_t.Date_Sending_flag = 0;
|
||||||
|
@ -519,7 +521,7 @@ static int BSP_Module_Connect_CtWing_Handle(at_env_t *e)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
logDebug("create device...\r\n");
|
logDebug("create device...\r\n");
|
||||||
e->println(e, "AT+MIPOPEN=0,\"TCP\",\"112.125.89.8\",45663,,1"); // 8.135.10.183,32994
|
e->println(e, "AT+MIPOPEN=0,\"TCP\",\"112.125.89.8\",42286,,1"); // 8.135.10.183,32994
|
||||||
e->reset_timer(e);
|
e->reset_timer(e);
|
||||||
e->state++;
|
e->state++;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -5,13 +5,14 @@
|
||||||
* Author: 123
|
* Author: 123
|
||||||
*/
|
*/
|
||||||
#include "bsp_motor.h"
|
#include "bsp_motor.h"
|
||||||
|
#include "bsp_valve.h"
|
||||||
|
|
||||||
//uint8_t motor_state = 0;
|
//uint8_t motor_state = 0;
|
||||||
valve_state valve_status = {0};
|
valve_state valve_status = {0};
|
||||||
void BSP_MOTOR_Init(void)
|
void BSP_MOTOR_Init(void)
|
||||||
{
|
{
|
||||||
GPIOA_ResetBits(COIL_ADC);
|
// GPIOA_ResetBits(COIL_ADC);
|
||||||
GPIOA_ModeCfg(COIL_ADC, GPIO_ModeOut_PP_5mA);
|
// GPIOA_ModeCfg(COIL_ADC, GPIO_ModeOut_PP_5mA);
|
||||||
|
|
||||||
GPIOB_ResetBits(COIL_A);
|
GPIOB_ResetBits(COIL_A);
|
||||||
GPIOB_ModeCfg(COIL_A, GPIO_ModeOut_PP_5mA);
|
GPIOB_ModeCfg(COIL_A, GPIO_ModeOut_PP_5mA);
|
||||||
|
@ -23,25 +24,27 @@ void BSP_MOTOR_Init(void)
|
||||||
}
|
}
|
||||||
void VALVE_OPEN(void)
|
void VALVE_OPEN(void)
|
||||||
{
|
{
|
||||||
GPIOA_SetBits(COIL_ADC);
|
// GPIOA_SetBits(COIL_ADC);
|
||||||
//IN1 + ; IN2 -
|
//IN1 + ; IN2 -
|
||||||
GPIOB_SetBits(COIL_A);
|
GPIOB_SetBits(COIL_A);
|
||||||
GPIOB_ResetBits(COIL_B);
|
GPIOB_ResetBits(COIL_B);
|
||||||
valve_status.motor_state = 1;
|
valve_status.motor_state = 1;
|
||||||
|
gValveData.switch_status = kOpened;
|
||||||
}
|
}
|
||||||
|
|
||||||
void VALVE_CLOSE(void)
|
void VALVE_CLOSE(void)
|
||||||
{
|
{
|
||||||
GPIOA_SetBits(COIL_ADC);
|
// GPIOA_SetBits(COIL_ADC);
|
||||||
//IN1 - ; IN2 +
|
//IN1 - ; IN2 +
|
||||||
GPIOB_ResetBits(COIL_A);
|
GPIOB_ResetBits(COIL_A);
|
||||||
GPIOB_SetBits(COIL_B);
|
GPIOB_SetBits(COIL_B);
|
||||||
valve_status.motor_state = 0;
|
valve_status.motor_state = 0;
|
||||||
|
gValveData.switch_status = kClosed;
|
||||||
}
|
}
|
||||||
|
|
||||||
void VALVE_STOP(void)
|
void VALVE_STOP(void)
|
||||||
{
|
{
|
||||||
GPIOA_ResetBits(COIL_ADC);
|
// GPIOA_ResetBits(COIL_ADC);
|
||||||
//IN1 + ; IN2 +
|
//IN1 + ; IN2 +
|
||||||
GPIOB_SetBits(COIL_A);
|
GPIOB_SetBits(COIL_A);
|
||||||
GPIOB_SetBits(COIL_B);
|
GPIOB_SetBits(COIL_B);
|
||||||
|
|
|
@ -282,11 +282,8 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events) // 阀
|
||||||
if (events & VAVLE_CLOSE_END_EVT) // 阀门关闭结束事件
|
if (events & VAVLE_CLOSE_END_EVT) // 阀门关闭结束事件
|
||||||
{
|
{
|
||||||
VALVE_STOP();
|
VALVE_STOP();
|
||||||
|
|
||||||
LED_ALL_CLOSE;
|
LED_ALL_CLOSE;
|
||||||
|
|
||||||
gValveData.switch_status = kClosed;
|
|
||||||
|
|
||||||
tmos_memset(&RelyData, 0, sizeof(RelyData));
|
tmos_memset(&RelyData, 0, sizeof(RelyData));
|
||||||
BSP_VALVE_Generate_ValveResponse(&RelyData, kCmdCloseVavle, 1);
|
BSP_VALVE_Generate_ValveResponse(&RelyData, kCmdCloseVavle, 1);
|
||||||
|
|
||||||
|
@ -331,11 +328,8 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events) // 阀
|
||||||
if (events & VAVLE_OPEN_END_EVT) // 阀门打开结束事件
|
if (events & VAVLE_OPEN_END_EVT) // 阀门打开结束事件
|
||||||
{
|
{
|
||||||
VALVE_STOP();
|
VALVE_STOP();
|
||||||
|
|
||||||
LED_ALL_CLOSE;
|
LED_ALL_CLOSE;
|
||||||
|
|
||||||
gValveData.switch_status = kOpened;
|
|
||||||
|
|
||||||
tmos_memset(&RelyData, 0, sizeof(RelyData));
|
tmos_memset(&RelyData, 0, sizeof(RelyData));
|
||||||
BSP_VALVE_Generate_ValveResponse(&RelyData, kCmdOpenVavle, 1);
|
BSP_VALVE_Generate_ValveResponse(&RelyData, kCmdOpenVavle, 1);
|
||||||
|
|
||||||
|
@ -415,10 +409,8 @@ static uint16_t VAVLE_Task_ProcessEvent(uint8_t task_id, uint16_t events) // 阀
|
||||||
void BSP_VAVLE_Init(void) // 阀门初始化函数
|
void BSP_VAVLE_Init(void) // 阀门初始化函数
|
||||||
{
|
{
|
||||||
vavle_task_id = TMOS_ProcessEventRegister(VAVLE_Task_ProcessEvent);
|
vavle_task_id = TMOS_ProcessEventRegister(VAVLE_Task_ProcessEvent);
|
||||||
|
|
||||||
tmos_memset(&gValveData, 0, sizeof(gValveData));
|
tmos_memset(&gValveData, 0, sizeof(gValveData));
|
||||||
|
|
||||||
gValveData.switch_status = kClosed; // 设置阀门状态为关闭
|
|
||||||
gValveData.temp = -100;
|
gValveData.temp = -100;
|
||||||
gValveData.in_pressure = 0;
|
gValveData.in_pressure = 0;
|
||||||
gValveData.out_pressure = 0;
|
gValveData.out_pressure = 0;
|
||||||
|
|
Loading…
Reference in New Issue