add dfu state
parent
ff973d6274
commit
f707d2472b
|
@ -14,7 +14,8 @@ typedef enum
|
|||
{
|
||||
shutdown, //only mcu runing
|
||||
runing, //all function runing
|
||||
sleep //SOCs and FANs are stop
|
||||
sleep, //SOCs and FANs are stop
|
||||
dfu
|
||||
}sta_t;
|
||||
|
||||
|
||||
|
|
|
@ -188,7 +188,7 @@ void StartDefaultTask(void *argument)
|
|||
/* USER CODE BEGIN StartDefaultTask */
|
||||
|
||||
HAL_GPIO_WritePin(USB2_FS_ENUM_CTL_GPIO_Port,USB2_FS_ENUM_CTL_Pin, GPIO_PIN_SET);
|
||||
// Beep(50);
|
||||
Beep(50);
|
||||
/* Infinite loop */
|
||||
for(;;)
|
||||
{
|
||||
|
@ -211,8 +211,8 @@ void StartLedBlinkTask(void *argument)
|
|||
/* Infinite loop */
|
||||
for(;;)
|
||||
{
|
||||
|
||||
if(NaviKit.sys.sta == runing)
|
||||
switch(NaviKit.sys.sta){
|
||||
case runing:
|
||||
{
|
||||
if(HAL_GPIO_ReadPin(SYS_POWER_LED_CTL_GPIO_Port,SYS_POWER_LED_CTL_Pin))
|
||||
HAL_GPIO_WritePin(SYS_POWER_LED_CTL_GPIO_Port,SYS_POWER_LED_CTL_Pin,GPIO_PIN_RESET);//turn on power led
|
||||
|
@ -227,8 +227,8 @@ void StartLedBlinkTask(void *argument)
|
|||
HAL_GPIO_WritePin(SYS_RUN_LED_CTL_GPIO_Port,SYS_RUN_LED_CTL_Pin,GPIO_PIN_SET);//turn off sys run led
|
||||
osDelay(300);
|
||||
}
|
||||
}
|
||||
else if(NaviKit.sys.sta == shutdown)
|
||||
}break;
|
||||
case shutdown:
|
||||
{
|
||||
if(!HAL_GPIO_ReadPin(SYS_POWER_LED_CTL_GPIO_Port,SYS_POWER_LED_CTL_Pin))
|
||||
HAL_GPIO_WritePin(SYS_POWER_LED_CTL_GPIO_Port,SYS_POWER_LED_CTL_Pin,GPIO_PIN_SET);//turn off power led
|
||||
|
@ -243,8 +243,8 @@ void StartLedBlinkTask(void *argument)
|
|||
HAL_GPIO_WritePin(SYS_RUN_LED_CTL_GPIO_Port,SYS_RUN_LED_CTL_Pin,GPIO_PIN_SET);//turn off sys run led
|
||||
osDelay(2000);
|
||||
}
|
||||
}
|
||||
else
|
||||
}break;
|
||||
case sleep:
|
||||
{//sleep mode
|
||||
for(uint16_t i=0;i<25;i++)
|
||||
{//20 light level
|
||||
|
@ -271,8 +271,24 @@ void StartLedBlinkTask(void *argument)
|
|||
}
|
||||
}
|
||||
|
||||
}
|
||||
}break;
|
||||
case dfu:
|
||||
{
|
||||
if(HAL_GPIO_ReadPin(SYS_POWER_LED_CTL_GPIO_Port,SYS_POWER_LED_CTL_Pin) == GPIO_PIN_SET)//power led is off
|
||||
{
|
||||
HAL_GPIO_WritePin(SYS_POWER_LED_CTL_GPIO_Port,SYS_POWER_LED_CTL_Pin,GPIO_PIN_RESET);//turn on power led
|
||||
HAL_GPIO_WritePin(SYS_RUN_LED_CTL_GPIO_Port,SYS_RUN_LED_CTL_Pin,GPIO_PIN_RESET);//turn on run led
|
||||
osDelay(300);
|
||||
}
|
||||
else
|
||||
{
|
||||
HAL_GPIO_WritePin(SYS_POWER_LED_CTL_GPIO_Port,SYS_POWER_LED_CTL_Pin,GPIO_PIN_SET);//turn off sys run led
|
||||
HAL_GPIO_WritePin(SYS_RUN_LED_CTL_GPIO_Port,SYS_RUN_LED_CTL_Pin,GPIO_PIN_SET);//turn off run led
|
||||
osDelay(300);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* USER CODE END StartLedBlinkTask */
|
||||
}
|
||||
|
||||
|
@ -316,13 +332,19 @@ void StartEventDetect(void *argument)
|
|||
if(NaviKit.sys.power_btn == true)
|
||||
{//power btn has been pushed more than 1000 ms
|
||||
// while(NaviKit.sys.power_btn == true);//wait to release button
|
||||
if(NaviKit.sys.sta == runing)
|
||||
{//system is runing now, user request to shutdown
|
||||
NaviKit.sys.next_sta = shutdown;
|
||||
}
|
||||
else if(NaviKit.sys.sta == shutdown)
|
||||
{//system is shutdown now , user request to power on
|
||||
NaviKit.sys.next_sta = runing;
|
||||
switch(NaviKit.sys.sta){
|
||||
case runing:{//system is runing now, user request to shutdown
|
||||
NaviKit.sys.next_sta = shutdown;
|
||||
}break;
|
||||
case shutdown:{//system is shutdown now , user request to power on
|
||||
NaviKit.sys.next_sta = runing;
|
||||
}break;
|
||||
case dfu:{
|
||||
NaviKit.sys.next_sta = shutdown;
|
||||
}break;
|
||||
case sleep:{
|
||||
NaviKit.sys.next_sta = runing;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -336,13 +358,17 @@ void StartEventDetect(void *argument)
|
|||
}
|
||||
if(NaviKit.sys.custom_btn == true )
|
||||
{//custom button has been pushed
|
||||
osDelay(1000);
|
||||
osDelay(2000);
|
||||
if(NaviKit.sys.custom_btn == true )
|
||||
{//custom button has been pushed over 1000 ms
|
||||
if(NaviKit.sys.sta == runing)
|
||||
if((NaviKit.sys.power_btn == true) && (NaviKit.sys.sta == shutdown))//into dfu state
|
||||
NaviKit.sys.next_sta = dfu;
|
||||
else//TODO: force restart
|
||||
NaviKit.sys.next_sta = shutdown;
|
||||
else if(NaviKit.sys.sta == shutdown)
|
||||
NaviKit.sys.next_sta = runing;
|
||||
// if(NaviKit.sys.sta == runing)
|
||||
// NaviKit.sys.next_sta = shutdown;
|
||||
// else if(NaviKit.sys.sta == shutdown)
|
||||
// NaviKit.sys.next_sta = runing;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -396,7 +422,7 @@ void StartStateSwitchTask(void *argument)
|
|||
/* Infinite loop */
|
||||
for(;;)
|
||||
{
|
||||
osDelay(1);
|
||||
osDelay(10);
|
||||
if(NaviKit.sys.next_sta != NaviKit.sys.sta)
|
||||
{
|
||||
switch(NaviKit.sys.next_sta)
|
||||
|
@ -416,6 +442,10 @@ void StartStateSwitchTask(void *argument)
|
|||
enter_sleep_state();
|
||||
|
||||
}break;
|
||||
case dfu:
|
||||
{
|
||||
enter_dfu_state();
|
||||
}break;
|
||||
}
|
||||
NaviKit.sys.sta = NaviKit.sys.next_sta;
|
||||
}
|
||||
|
@ -469,7 +499,7 @@ void enter_shutdown_state()
|
|||
|
||||
HAL_GPIO_WritePin(SOC_U3_HUB_PWR_CTL_GPIO_Port,SOC_U3_HUB_PWR_CTL_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SOC_U2_HUB_PWR_CTL_GPIO_Port,SOC_U2_HUB_PWR_CTL_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SOC_U3_HOST_PWR_CTL_GPIO_Port,SOC_U3_HOST_PWR_CTL_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(SOC_U3_HOST_PWR_CTL_GPIO_Port,SOC_U3_HOST_PWR_CTL_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SOC_GE_SW_PWR_CTL_GPIO_Port,SOC_GE_SW_PWR_CTL_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SOC_U3_GEC_PWR_CTL_GPIO_Port,SOC_U3_GEC_PWR_CTL_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
|
||||
|
@ -502,7 +532,7 @@ void enter_sleep_state()
|
|||
|
||||
// HAL_GPIO_WritePin(SOC_U3_HUB_PWR_CTL_GPIO_Port,SOC_U3_HUB_PWR_CTL_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SOC_U2_HUB_PWR_CTL_GPIO_Port,SOC_U2_HUB_PWR_CTL_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SOC_U3_HOST_PWR_CTL_GPIO_Port,SOC_U3_HOST_PWR_CTL_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(SOC_U3_HOST_PWR_CTL_GPIO_Port,SOC_U3_HOST_PWR_CTL_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SOC_GE_SW_PWR_CTL_GPIO_Port,SOC_GE_SW_PWR_CTL_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(SOC_U3_GEC_PWR_CTL_GPIO_Port,SOC_U3_GEC_PWR_CTL_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
|
||||
|
@ -525,12 +555,14 @@ void enter_sleep_state()
|
|||
HAL_GPIO_WritePin(SYS_FAN_CTL_2_GPIO_Port,SYS_FAN_CTL_2_Pin,GPIO_PIN_RESET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SYS_FAN_CTL_3_GPIO_Port,SYS_FAN_CTL_3_Pin,GPIO_PIN_RESET); osDelay(100);
|
||||
}
|
||||
|
||||
void enter_runing_state()
|
||||
{
|
||||
|
||||
printf("Enter to runing state \n");
|
||||
Beep(200);
|
||||
|
||||
HAL_GPIO_WritePin(SOM_FORCE_RECOVERY_GPIO_Port ,SOM_FORCE_RECOVERY_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(PMB_PS_ON_GPIO_Port ,PMB_PS_ON_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
|
||||
HAL_GPIO_WritePin(SYS_FAN_CTL_1_GPIO_Port,SYS_FAN_CTL_1_Pin,GPIO_PIN_SET); osDelay(100);
|
||||
|
@ -539,7 +571,7 @@ void enter_runing_state()
|
|||
|
||||
HAL_GPIO_WritePin(SOC_U3_HUB_PWR_CTL_GPIO_Port,SOC_U3_HUB_PWR_CTL_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SOC_U2_HUB_PWR_CTL_GPIO_Port,SOC_U2_HUB_PWR_CTL_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SOC_U3_HOST_PWR_CTL_GPIO_Port,SOC_U3_HOST_PWR_CTL_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(SOC_U3_HOST_PWR_CTL_GPIO_Port,SOC_U3_HOST_PWR_CTL_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SOC_GE_SW_PWR_CTL_GPIO_Port,SOC_GE_SW_PWR_CTL_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SOC_U3_GEC_PWR_CTL_GPIO_Port,SOC_U3_GEC_PWR_CTL_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
|
||||
|
@ -552,15 +584,65 @@ void enter_runing_state()
|
|||
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_5_GPIO_Port,USB3_VBUS_CTL_5_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_6_GPIO_Port,USB3_VBUS_CTL_6_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_1_GPIO_Port,USB3_VBUS_CTL_1_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_2_GPIO_Port,USB3_VBUS_CTL_2_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_3_GPIO_Port,USB3_VBUS_CTL_3_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_4_GPIO_Port,USB3_VBUS_CTL_4_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(USB3_VBUS_CTL_1_GPIO_Port,USB3_VBUS_CTL_1_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(USB3_VBUS_CTL_2_GPIO_Port,USB3_VBUS_CTL_2_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(USB3_VBUS_CTL_3_GPIO_Port,USB3_VBUS_CTL_3_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(USB3_VBUS_CTL_4_GPIO_Port,USB3_VBUS_CTL_4_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
|
||||
HAL_GPIO_WritePin(SOM_POWER_EN_GPIO_Port ,SOM_POWER_EN_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
|
||||
}
|
||||
|
||||
void enter_dfu_state()
|
||||
{
|
||||
|
||||
printf("Enter to dfu state \n");
|
||||
Beep(200);
|
||||
Beep(200);
|
||||
Beep(200);
|
||||
Beep(200);
|
||||
Beep(200);
|
||||
|
||||
HAL_GPIO_WritePin(SOM_FORCE_RECOVERY_GPIO_Port ,SOM_FORCE_RECOVERY_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
|
||||
HAL_GPIO_WritePin(PMB_PS_ON_GPIO_Port ,PMB_PS_ON_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
|
||||
HAL_GPIO_WritePin(SYS_FAN_CTL_1_GPIO_Port,SYS_FAN_CTL_1_Pin,GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SYS_FAN_CTL_2_GPIO_Port,SYS_FAN_CTL_2_Pin,GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SYS_FAN_CTL_3_GPIO_Port,SYS_FAN_CTL_3_Pin,GPIO_PIN_SET); osDelay(100);
|
||||
|
||||
HAL_GPIO_WritePin(SOC_U3_HUB_PWR_CTL_GPIO_Port,SOC_U3_HUB_PWR_CTL_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SOC_U2_HUB_PWR_CTL_GPIO_Port,SOC_U2_HUB_PWR_CTL_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(SOC_U3_HOST_PWR_CTL_GPIO_Port,SOC_U3_HOST_PWR_CTL_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SOC_GE_SW_PWR_CTL_GPIO_Port,SOC_GE_SW_PWR_CTL_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(SOC_U3_GEC_PWR_CTL_GPIO_Port,SOC_U3_GEC_PWR_CTL_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_1_GPIO_Port,USB2_VBUS_CTL_1_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_2_GPIO_Port,USB2_VBUS_CTL_2_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_3_GPIO_Port,USB2_VBUS_CTL_3_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_4_GPIO_Port,USB2_VBUS_CTL_4_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_5_GPIO_Port,USB2_VBUS_CTL_5_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(USB2_VBUS_CTL_6_GPIO_Port,USB2_VBUS_CTL_6_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_5_GPIO_Port,USB3_VBUS_CTL_5_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
HAL_GPIO_WritePin(USB3_VBUS_CTL_6_GPIO_Port,USB3_VBUS_CTL_6_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(USB3_VBUS_CTL_1_GPIO_Port,USB3_VBUS_CTL_1_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(USB3_VBUS_CTL_2_GPIO_Port,USB3_VBUS_CTL_2_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(USB3_VBUS_CTL_3_GPIO_Port,USB3_VBUS_CTL_3_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(USB3_VBUS_CTL_4_GPIO_Port,USB3_VBUS_CTL_4_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
|
||||
|
||||
HAL_GPIO_WritePin(SOM_POWER_EN_GPIO_Port ,SOM_POWER_EN_Pin, GPIO_PIN_SET); osDelay(1000);
|
||||
//
|
||||
// HAL_GPIO_WritePin(SOM_FORCE_RECOVERY_GPIO_Port ,SOM_FORCE_RECOVERY_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(SOM_SYS_RESET_GPIO_Port ,SOM_SYS_RESET_Pin, GPIO_PIN_RESET); osDelay(100);
|
||||
//
|
||||
// osDelay(5000);
|
||||
// HAL_GPIO_WritePin(SOM_SYS_RESET_GPIO_Port ,SOM_SYS_RESET_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
// HAL_GPIO_WritePin(SOM_FORCE_RECOVERY_GPIO_Port ,SOM_FORCE_RECOVERY_Pin, GPIO_PIN_SET); osDelay(100);
|
||||
|
||||
|
||||
}
|
||||
|
||||
//printf redefine
|
||||
#ifdef __GNUC__
|
||||
|
|
|
@ -189,6 +189,7 @@ void Beep(uint32_t time_ms)
|
|||
HAL_GPIO_WritePin(SYS_BUZZ_CTL_GPIO_Port,SYS_BUZZ_CTL_Pin, GPIO_PIN_RESET);
|
||||
osDelay(time_ms);
|
||||
HAL_GPIO_WritePin(SYS_BUZZ_CTL_GPIO_Port,SYS_BUZZ_CTL_Pin, GPIO_PIN_SET);
|
||||
osDelay(time_ms);
|
||||
}
|
||||
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue