|
請教各位大大 為何在 MX_LCD_Init() 時,總是進入 Error_Handler (如下方程式碼中黃色部份) , 請問可能的因素有哪些? 我的MCU是STM32L152RBT6 HAL_StatusTypeDef HAL_LCD_Init(LCD_HandleTypeDef *hlcd) { uint32_t tickstart = 0x00; uint8_t counter = 0; /* Check the LCD handle allocation */ if(hlcd == NULL) { return HAL_ERROR; } ... ... ... /* Get timeout */ tickstart = HAL_GetTick(); /*!< Wait Until the LCD Booster is ready */ while(__HAL_LCD_GET_FLAG(hlcd, LCD_FLAG_RDY) == RESET) { if((HAL_GetTick() - tickstart ) > LCD_TIMEOUT_VALUE) { hlcd->ErrorCode = HAL_LCD_ERROR_RDY; return HAL_TIMEOUT; } } /* Initialize the LCD state */ hlcd->ErrorCode = HAL_LCD_ERROR_NONE; hlcd->State= HAL_LCD_STATE_READY; return HAL_OK; } static void MX_LCD_Init(void) { hlcd.Instance = LCD; hlcd.Init.Prescaler = LCD_PRESCALER_1; hlcd.Init.Divider = LCD_DIVIDER_16; hlcd.Init.Duty = LCD_DUTY_1_8; hlcd.Init.Bias = LCD_BIAS_1_4; hlcd.Init.VoltageSource = LCD_VOLTAGESOURCE_INTERNAL; hlcd.Init.Contrast = LCD_CONTRASTLEVEL_7; hlcd.Init.DeadTime = LCD_DEADTIME_1; hlcd.Init.PulseOnDuration = LCD_PULSEONDURATION_0; hlcd.Init.MuxSegment = LCD_MUXSEGMENT_DISABLE; hlcd.Init.BlinkMode = LCD_BLINKMODE_OFF; hlcd.Init.BlinkFrequency = LCD_BLINKFREQUENCY_DIV8; if (HAL_LCD_Init(&hlcd) != HAL_OK) { Error_Handler(); } } |
微信公众号
手机版
如果没问题的话,把LCD_TIMEOUT_VALUE适当调大一点,但不要大于SysTick能表示的最大值(24位)。
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
没有解决方式,怎么就标注已解决了呢?怎么可以这样?