master
ThinkPad-T460P 2021-01-05 16:06:45 +08:00
parent 2838aee047
commit 4ecbf6bca6
3 changed files with 23 additions and 29 deletions

View File

@ -122,13 +122,13 @@ typedef struct
extern NaviKit_t NaviKit; extern NaviKit_t NaviKit;
//device on board //device on board
enum Device_t{USB2_Port1,USB2_Port2,USB2_Port3,USB2_Port4,USB2_Port5,USB2_Port6, enum Device_t{USB2_Port1,USB2_Port2,USB2_Port3,USB2_Port4,USB2_Port5,USB2_Port6, //USB2.0 Port
USB3_Port1,USB3_Port2,USB3_Port3,USB3_Port4,USB3_Port5,USB3_Port6, USB3_Port1,USB3_Port2,USB3_Port3,USB3_Port4,USB3_Port5,USB3_Port6, //USB3.0 Port
SOC_USB2_HUB,SOC_USB3_HUB,SOC_USB3_HOST,SOC_USB3_GEC,SOC_GE_SW, SOC_USB2_HUB,SOC_USB3_HUB,SOC_USB3_HOST,SOC_USB3_GEC,SOC_GE_SW, //SOC on Board
SYS_FAN1,SYS_FAN2,SYS_FAN3, SYS_FAN1,SYS_FAN2,SYS_FAN3, //Fan on Board
SYS_RUN_LED,SYS_PWR_LED, SYS_RUN_LED,SYS_PWR_LED, //LED on Board
SOM_PWR_EN,SOM_DFU, SOM_PWR_EN,SOM_DFU,SOM_RESET, //SOM Control
PMB_PS_ON}; PMB_PS_ON}; //Power Management Board
void PWR_Enable(enum Device_t device,bool en,uint16_t delay); void PWR_Enable(enum Device_t device,bool en,uint16_t delay);
bool PWR_Status(enum Device_t device); bool PWR_Status(enum Device_t device);

View File

@ -68,12 +68,12 @@ osEventFlagsId_t buttonEventHandle;
const osEventFlagsAttr_t buttonEvent_attributes = { const osEventFlagsAttr_t buttonEvent_attributes = {
.name = "buttonEvent" .name = "buttonEvent"
}; };
osThreadId_t StateSwitchTaskHandle; //osThreadId_t StateSwitchTaskHandle;
const osThreadAttr_t StateSwitchTask_attributes = { //const osThreadAttr_t StateSwitchTask_attributes = {
.name = "StateSwitchTask", // .name = "StateSwitchTask",
.priority = (osPriority_t) osPriorityNormal, // .priority = (osPriority_t) osPriorityNormal,
.stack_size = 128 * 4 // .stack_size = 128 * 4
}; //};
/* USER CODE END Variables */ /* USER CODE END Variables */
/* Definitions for defaultTask */ /* Definitions for defaultTask */
osThreadId_t defaultTaskHandle; osThreadId_t defaultTaskHandle;
@ -125,8 +125,8 @@ const osTimerAttr_t CustBtnTimer_attributes = {
/* USER CODE BEGIN FunctionPrototypes */ /* USER CODE BEGIN FunctionPrototypes */
//void osEnterSleepState(); //void osEnterSleepState();
//void osEnterRuningState(); //void osEnterRuningState();
void StartStateSwitchTask(void *argument); //void StartStateSwitchTask(void *argument);
void StartChangeStateTask(state_t target_sta); //void StartChangeStateTask(state_t target_sta);
bool isWakeUpReset() { return __HAL_PWR_GET_FLAG(PWR_FLAG_WU);} bool isWakeUpReset() { return __HAL_PWR_GET_FLAG(PWR_FLAG_WU);}
/* USER CODE END FunctionPrototypes */ /* USER CODE END FunctionPrototypes */
@ -262,7 +262,7 @@ void MX_FREERTOS_Init(void) {
/* USER CODE BEGIN RTOS_THREADS */ /* USER CODE BEGIN RTOS_THREADS */
/* add threads, ... */ /* add threads, ... */
StateSwitchTaskHandle = osThreadNew(StartStateSwitchTask, NULL, &defaultTask_attributes); // StateSwitchTaskHandle = osThreadNew(StartStateSwitchTask, NULL, &defaultTask_attributes);
/* USER CODE END RTOS_THREADS */ /* USER CODE END RTOS_THREADS */
@ -477,7 +477,7 @@ void StartPowerMonitTask(void *argument)
{ {
/* USER CODE BEGIN StartPowerMonitTask */ /* USER CODE BEGIN StartPowerMonitTask */
HAL_ADCEx_Calibration_Start(&hadc1); HAL_ADCEx_Calibration_Start(&hadc1);
osDelay(2000); HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&(NaviKit.pmb.rails.adc), ADC_CH_COUNT);
/* Infinite loop */ /* Infinite loop */
for(;;) for(;;)
{ {
@ -499,7 +499,6 @@ void StartPowerMonitTask(void *argument)
Log(trace,"Backup battery status:%dmV Not Charge",(uint32_t)(NaviKit.pmb.rails.bkp_bat*1000)); Log(trace,"Backup battery status:%dmV Not Charge",(uint32_t)(NaviKit.pmb.rails.bkp_bat*1000));
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&(NaviKit.pmb.rails.adc), ADC_CH_COUNT);
if(NaviKit.sys.sta == run || NaviKit.sys.next_sta == run ){ if(NaviKit.sys.sta == run || NaviKit.sys.next_sta == run ){
osDelay(2000); osDelay(2000);
if(NaviKit.pmb.rails.out_24v > 26.4 || NaviKit.pmb.rails.out_24v < 21.6) if(NaviKit.pmb.rails.out_24v > 26.4 || NaviKit.pmb.rails.out_24v < 21.6)
@ -574,7 +573,7 @@ void StartEventDetect(void *argument)
osTimerStart(PwrBtnTimerHandle,2000); osTimerStart(PwrBtnTimerHandle,2000);
} }
if(NaviKit.sys.custom_btn && !osTimerIsRunning(CustBtnTimerHandle)){ if(NaviKit.sys.custom_btn && !osTimerIsRunning(CustBtnTimerHandle)){
osTimerStart(PwrBtnTimerHandle,2000); osTimerStart(CustBtnTimerHandle,2000);
} }
if(!NaviKit.sys.power_btn && osTimerIsRunning(PwrBtnTimerHandle)){ if(!NaviKit.sys.power_btn && osTimerIsRunning(PwrBtnTimerHandle)){
osTimerStop(PwrBtnTimerHandle); osTimerStop(PwrBtnTimerHandle);
@ -612,9 +611,9 @@ void CustBtnTimerCallback(void *argument)
Log(trace,"custom btn long pressed"); Log(trace,"custom btn long pressed");
switch(NaviKit.sys.sta){ switch(NaviKit.sys.sta){
case run:{//system is run now, user request to restart system case run:{//system is run now, user request to restart system
HAL_GPIO_WritePin(SOM_SYS_RESET_GPIO_Port,SOM_SYS_RESET_Pin,GPIO_PIN_RESET); PWR_Enable(SOM_RESET,true,10);
osDelay(10); PWR_Enable(SOM_RESET,false,0);
HAL_GPIO_WritePin(SOM_SYS_RESET_GPIO_Port,SOM_SYS_RESET_Pin,GPIO_PIN_SET); Log(info,"SOM Reset.");
}break; }break;
case idle:{ case idle:{
}break; }break;
@ -631,14 +630,7 @@ void CustBtnTimerCallback(void *argument)
/* Private application code --------------------------------------------------*/ /* Private application code --------------------------------------------------*/
/* USER CODE BEGIN Application */ /* USER CODE BEGIN Application */
void StartStateSwitchTask(void *argument)
{
for(;;)
{
}
}
//printf redirect //printf redirect

View File

@ -273,6 +273,7 @@ void PWR_Enable(enum Device_t device,bool en,uint16_t delay){
case SYS_PWR_LED: {HAL_GPIO_WritePin(SYS_POWER_LED_CTL_GPIO_Port,SYS_POWER_LED_CTL_Pin, !en); }break; case SYS_PWR_LED: {HAL_GPIO_WritePin(SYS_POWER_LED_CTL_GPIO_Port,SYS_POWER_LED_CTL_Pin, !en); }break;
case SOM_PWR_EN: {HAL_GPIO_WritePin(SOM_POWER_EN_GPIO_Port,SOM_POWER_EN_Pin, en); }break; case SOM_PWR_EN: {HAL_GPIO_WritePin(SOM_POWER_EN_GPIO_Port,SOM_POWER_EN_Pin, en); }break;
case SOM_DFU: {HAL_GPIO_WritePin(SOM_FORCE_RECOVERY_GPIO_Port,SOM_FORCE_RECOVERY_Pin, !en); }break; case SOM_DFU: {HAL_GPIO_WritePin(SOM_FORCE_RECOVERY_GPIO_Port,SOM_FORCE_RECOVERY_Pin, !en); }break;
case SOM_RESET: {HAL_GPIO_WritePin(SOM_SYS_RESET_GPIO_Port,SOM_SYS_RESET_Pin, !en); }break;
case PMB_PS_ON: {HAL_GPIO_WritePin(PMB_PS_ON_GPIO_Port,PMB_PS_ON_Pin, en); }break; case PMB_PS_ON: {HAL_GPIO_WritePin(PMB_PS_ON_GPIO_Port,PMB_PS_ON_Pin, en); }break;
default: {Log(error,"PWR_Enable device parameter is invalid."); }break; default: {Log(error,"PWR_Enable device parameter is invalid."); }break;
} }
@ -307,6 +308,7 @@ bool PWR_Status(enum Device_t device){
case SYS_PWR_LED: {sta = !HAL_GPIO_ReadPin(SYS_POWER_LED_CTL_GPIO_Port,SYS_POWER_LED_CTL_Pin); }break; case SYS_PWR_LED: {sta = !HAL_GPIO_ReadPin(SYS_POWER_LED_CTL_GPIO_Port,SYS_POWER_LED_CTL_Pin); }break;
case SOM_PWR_EN: {sta = HAL_GPIO_ReadPin(SOM_POWER_EN_GPIO_Port,SOM_POWER_EN_Pin); }break; case SOM_PWR_EN: {sta = HAL_GPIO_ReadPin(SOM_POWER_EN_GPIO_Port,SOM_POWER_EN_Pin); }break;
case SOM_DFU: {sta = !HAL_GPIO_ReadPin(SOM_FORCE_RECOVERY_GPIO_Port,SOM_FORCE_RECOVERY_Pin); }break; case SOM_DFU: {sta = !HAL_GPIO_ReadPin(SOM_FORCE_RECOVERY_GPIO_Port,SOM_FORCE_RECOVERY_Pin); }break;
case SOM_RESET: {sta = !HAL_GPIO_ReadPin(SOM_SYS_RESET_GPIO_Port,SOM_SYS_RESET_Pin); }break;
case PMB_PS_ON: {sta = HAL_GPIO_ReadPin(PMB_PS_ON_GPIO_Port,PMB_PS_ON_Pin); }break; case PMB_PS_ON: {sta = HAL_GPIO_ReadPin(PMB_PS_ON_GPIO_Port,PMB_PS_ON_Pin); }break;
default: {Log(error,"PWR_Status device parameter is invalid."); }break; default: {Log(error,"PWR_Status device parameter is invalid."); }break;
} }