update
parent
4fb8b4ddde
commit
bfcc947e66
|
@ -12,8 +12,11 @@
|
|||
|
||||
typedef struct
|
||||
{
|
||||
bool pwr_button_status;
|
||||
bool system_runing; //系统是否开机
|
||||
bool pwr_button_pushed; //开关是否被按下
|
||||
}NaviKit_t;
|
||||
extern NaviKit_t NaviKit;
|
||||
|
||||
void NaviKit_var_init();
|
||||
|
||||
#endif /* INC_NAVIKIT_H_ */
|
||||
|
|
|
@ -154,6 +154,7 @@ void StartDefaultTask(void *argument)
|
|||
MX_USB_DEVICE_Init();
|
||||
/* USER CODE BEGIN StartDefaultTask */
|
||||
|
||||
NaviKit_var_init();
|
||||
HAL_GPIO_WritePin(ENUM_CTL_GPIO_Port,ENUM_CTL_Pin, GPIO_PIN_SET);
|
||||
Beep(50);
|
||||
/* Infinite loop */
|
||||
|
@ -215,41 +216,65 @@ void StartIWDGRefreshTask(void *argument)
|
|||
void StartButtonDetect(void *argument)
|
||||
{
|
||||
/* USER CODE BEGIN StartButtonDetect */
|
||||
static bool last_pwr_button_status = false;
|
||||
|
||||
HAL_GPIO_TogglePin(USB2_VBUS_CTL_1_GPIO_Port,USB2_VBUS_CTL_1_Pin);
|
||||
HAL_GPIO_TogglePin(USB2_VBUS_CTL_2_GPIO_Port,USB2_VBUS_CTL_2_Pin);
|
||||
HAL_GPIO_TogglePin(USB2_VBUS_CTL_3_GPIO_Port,USB2_VBUS_CTL_3_Pin);
|
||||
HAL_GPIO_TogglePin(USB2_VBUS_CTL_4_GPIO_Port,USB2_VBUS_CTL_4_Pin);
|
||||
HAL_GPIO_TogglePin(USB2_VBUS_CTL_5_GPIO_Port,USB2_VBUS_CTL_5_Pin);
|
||||
HAL_GPIO_TogglePin(USB2_VBUS_CTL_6_GPIO_Port,USB2_VBUS_CTL_6_Pin);
|
||||
HAL_GPIO_TogglePin(USB3_VBUS_CTL_1_GPIO_Port,USB3_VBUS_CTL_1_Pin);
|
||||
HAL_GPIO_TogglePin(USB3_VBUS_CTL_2_GPIO_Port,USB3_VBUS_CTL_2_Pin);
|
||||
HAL_GPIO_TogglePin(USB3_VBUS_CTL_3_GPIO_Port,USB3_VBUS_CTL_3_Pin);
|
||||
HAL_GPIO_TogglePin(USB3_VBUS_CTL_4_GPIO_Port,USB3_VBUS_CTL_4_Pin);
|
||||
/* Infinite loop */
|
||||
for(;;)
|
||||
{
|
||||
if(NaviKit.pwr_button_status != last_pwr_button_status)
|
||||
{
|
||||
last_pwr_button_status = NaviKit.pwr_button_status;
|
||||
Beep(40);
|
||||
HAL_GPIO_TogglePin(USB2_VBUS_CTL_1_GPIO_Port,USB2_VBUS_CTL_1_Pin);
|
||||
HAL_GPIO_TogglePin(USB2_VBUS_CTL_2_GPIO_Port,USB2_VBUS_CTL_2_Pin);
|
||||
HAL_GPIO_TogglePin(USB2_VBUS_CTL_3_GPIO_Port,USB2_VBUS_CTL_3_Pin);
|
||||
HAL_GPIO_TogglePin(USB2_VBUS_CTL_4_GPIO_Port,USB2_VBUS_CTL_4_Pin);
|
||||
HAL_GPIO_TogglePin(USB2_VBUS_CTL_5_GPIO_Port,USB2_VBUS_CTL_5_Pin);
|
||||
HAL_GPIO_TogglePin(USB2_VBUS_CTL_6_GPIO_Port,USB2_VBUS_CTL_6_Pin);
|
||||
HAL_GPIO_TogglePin(USB3_VBUS_CTL_1_GPIO_Port,USB3_VBUS_CTL_1_Pin);
|
||||
HAL_GPIO_TogglePin(USB3_VBUS_CTL_2_GPIO_Port,USB3_VBUS_CTL_2_Pin);
|
||||
HAL_GPIO_TogglePin(USB3_VBUS_CTL_3_GPIO_Port,USB3_VBUS_CTL_3_Pin);
|
||||
HAL_GPIO_TogglePin(USB3_VBUS_CTL_4_GPIO_Port,USB3_VBUS_CTL_4_Pin);
|
||||
//长按检测
|
||||
if(NaviKit.pwr_button_pushed == true)
|
||||
{//按键被按下
|
||||
osDelay(2000);
|
||||
if(NaviKit.pwr_button_pushed == true)
|
||||
{//仍被按下
|
||||
if(NaviKit.system_runing == true)
|
||||
{//当前处于开机状态,进行关机操作
|
||||
NaviKit.system_runing = false;
|
||||
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_1_GPIO_Port,USB2_VBUS_CTL_1_Pin, GPIO_PIN_RESET);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_2_GPIO_Port,USB2_VBUS_CTL_2_Pin, GPIO_PIN_RESET);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_3_GPIO_Port,USB2_VBUS_CTL_3_Pin, GPIO_PIN_RESET);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_4_GPIO_Port,USB2_VBUS_CTL_4_Pin, GPIO_PIN_RESET);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_5_GPIO_Port,USB2_VBUS_CTL_5_Pin, GPIO_PIN_RESET);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_6_GPIO_Port,USB2_VBUS_CTL_6_Pin, GPIO_PIN_RESET);
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_1_GPIO_Port,USB3_VBUS_CTL_1_Pin, GPIO_PIN_RESET);
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_2_GPIO_Port,USB3_VBUS_CTL_2_Pin, GPIO_PIN_RESET);
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_3_GPIO_Port,USB3_VBUS_CTL_3_Pin, GPIO_PIN_RESET);
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_4_GPIO_Port,USB3_VBUS_CTL_4_Pin, GPIO_PIN_RESET);
|
||||
Beep(40);
|
||||
osDelay(500);
|
||||
HAL_GPIO_WritePin(BAT_RELAY_CTL_GPIO_Port ,BAT_RELAY_CTL_Pin, GPIO_PIN_RESET);
|
||||
|
||||
}
|
||||
else
|
||||
{//当前处于关机状态,进行开机操作
|
||||
NaviKit.system_runing = true;
|
||||
Beep(40);
|
||||
HAL_GPIO_WritePin(BAT_RELAY_CTL_GPIO_Port ,BAT_RELAY_CTL_Pin, GPIO_PIN_SET);
|
||||
osDelay(500);
|
||||
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_6_GPIO_Port,USB2_VBUS_CTL_6_Pin, GPIO_PIN_SET);
|
||||
osDelay(500);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_5_GPIO_Port,USB2_VBUS_CTL_5_Pin, GPIO_PIN_SET);
|
||||
osDelay(500);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_4_GPIO_Port,USB2_VBUS_CTL_4_Pin, GPIO_PIN_SET);
|
||||
osDelay(500);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_3_GPIO_Port,USB2_VBUS_CTL_3_Pin, GPIO_PIN_SET);
|
||||
osDelay(500);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_2_GPIO_Port,USB2_VBUS_CTL_2_Pin, GPIO_PIN_SET);
|
||||
osDelay(500);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_1_GPIO_Port,USB2_VBUS_CTL_1_Pin, GPIO_PIN_SET);
|
||||
osDelay(500);
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_4_GPIO_Port,USB3_VBUS_CTL_4_Pin, GPIO_PIN_SET);
|
||||
osDelay(500);
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_1_GPIO_Port,USB3_VBUS_CTL_1_Pin, GPIO_PIN_SET);
|
||||
osDelay(500);
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_2_GPIO_Port,USB3_VBUS_CTL_2_Pin, GPIO_PIN_SET);
|
||||
osDelay(500);
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_3_GPIO_Port,USB3_VBUS_CTL_3_Pin, GPIO_PIN_SET);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
last_pwr_button_status = NaviKit.pwr_button_status;
|
||||
}
|
||||
// printf("3\n");
|
||||
|
||||
osDelay(10);
|
||||
}
|
||||
/* USER CODE END StartButtonDetect */
|
||||
|
|
|
@ -134,11 +134,11 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
|||
{
|
||||
if(HAL_GPIO_ReadPin(PWR_BUTTON_GPIO_Port, PWR_BUTTON_Pin)==GPIO_PIN_SET)
|
||||
{//Rising edge trigger
|
||||
NaviKit.pwr_button_status = false;
|
||||
NaviKit.pwr_button_pushed = false;
|
||||
}
|
||||
if(HAL_GPIO_ReadPin(PWR_BUTTON_GPIO_Port, PWR_BUTTON_Pin)==GPIO_PIN_RESET)
|
||||
{//falling edge trigger
|
||||
NaviKit.pwr_button_status = true;
|
||||
NaviKit.pwr_button_pushed = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,3 +8,8 @@
|
|||
|
||||
#include "navikit.h"
|
||||
NaviKit_t NaviKit;
|
||||
void NaviKit_var_init()
|
||||
{
|
||||
NaviKit.pwr_button_pushed = false;
|
||||
NaviKit.system_runing = false;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue