STM32L152 在 MX_LCD_Init() 時,總是進入 Error_Handler()
請教各位大大為何在 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_FLAG_RDY标志上,检查下硬件有没有问题,LCD模块设置。你用的哪款LCD?
如果没问题的话,把LCD_TIMEOUT_VALUE适当调大一点,但不要大于SysTick能表示的最大值(24位)。 __HAL_LCD_GET_FLAG(hlcd, LCD_FLAG_RDY) 这个函数没有正确返回,或者超时了。感觉应该是硬件问题。 你这个tick有没有初始化好,在这边判断时候正常吗? TICK应该没有问题,如果TICK不工作的话。这里就死循环了。从代码上分析是LCD没有应答。楼主看一下波形是否正常。 这问题怎么解决的? 我也碰到同样问题了,用官方的例子都初始化不过!
没有解决方式,怎么就标注已解决了呢?怎么可以这样?
页:
[1]