Los tableros de disco STM32L100RC y STM32L152RC fallan en LL_FLASH_GetLatency ()! = LL_FLASH_LATENCY_1

1

Tengo los tableros de disco stm32l100 y stm32l152 y estoy usando stm32cubemx y sw4stm32 IDE.

Después de crear el proyecto predeterminado para ellos en cubemx, quiero decir, paso por el selector de la placa y luego dejo todo como está excepto el cambio de biblioteca de HAL a LL en el proyecto - > configuraciones - > configuración avanzada para RCC y GPIO y generar proyecto para sw4stm32 - Lo importo a sw4stm32, agrego algo de código para el parpadeo de LED3 (para el bucle while en la función principal):

LL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
LL_mDelay(1000);

genérelo y ejecútelo (está escrito en la placa, veo que el LED de estado parpadea), pero LED3 no parpadea.

Cuando lo ejecuto en modo de depuración y paso el código, falla en la línea (en la función SystemClock_Config ()):

LL_FLASH_GetLatency() != LL_FLASH_LATENCY_1

y va a Error_Handler (), que permanece dentro del ciclo while para siempre ...

Esto sucede en ambas placas y cuando las destelle con el LED parpadeando, el ejemplo de ST funciona, por lo que debería haber algún problema de firmware y diría que hay un problema de inicialización. Leí STM32CubeL1GettingStarted.pdf y está escrito que debo definir la macro correcta en stm32l1xx.h, que debería ser STM32L100xC o STM32L152xC y lo hice, o más bien no tiene un código existente en ese archivo. Incluso traté de agregarlo al archivo main.c, no ayudó. Y traté de hacerlo con y sin esta macro definida.

La única pregunta cercana que encontré es esta enlace - pero en la versión 1.8.0 de la biblioteca cubemx esto parece ser en el lugar correcto.

Soy bastante novato con estos tableros y tengo experiencia solo con arduino, por lo que toda esta configuración me sobrepasa en este momento y no sé dónde podría estar la causa ... así que si alguien me pudiera dirigir, lo apreciaría. Realmente mucho.

ACTUALIZACIÓN: Incluso intenté generar un proyecto con una versión anterior de las bibliotecas LL (1.7.0 y 1.6.0), pero aún no hay progreso.

¿Alguien al menos tiene algún tutorial para parpadear leds (o manipular con GPIO) en procesadores L1 utilizando la biblioteca LL basada en el proyecto generado por cubemx?

¿O podría alguien enviarme un código de parpadeo de led (gpio manipulando) para STM32L100RC o STM32L152RC generado en cubemx usando la biblioteca LL? Gracias.

ACTUALIZACIÓN2: Ahora traté de hacer exactamente los mismos pasos usando la biblioteca HAL y funciona (anteriormente, usé el ejemplo de parpadeo de cubemx de ST), ¿entonces parece un error? Tuve algunos problemas para registrarme en el sitio de ST, así que escribí aquí primero, pero ahora funciona, así que también escribo allí: agregaré el enlace.

ACTUALIZACIÓN3: enlace a mi pregunta en el foro ST: enlace

ACTUALIZACIÓN4: así que aquí está el código, si alguien quiere verlo, pero como dije, es un proyecto básico generado en cubemx con un cambio de pin añadido: enlace

    
pregunta upratathlavu

2 respuestas

1

Bien, creo que lo encontré, como se indica en HAL & Manual de LL para L1 en la página 1088 para la función LL_FLASH_SetLatency:

  

La latencia se puede modificar solo cuando se configura ACC64. (a través de la función   LL_FLASH_Enable64bitAccess)

Y esta llamada de función falta en el proyecto cubemx generado. Lo encontré, cuando miré el ejemplo de LL GPIO para stm32l152re nucleo board (ya que no hay ningún ejemplo de LL para stm32l100rc y stm32l152rc discoboards), donde se utiliza esta función.

Lo resolvió antes de que LL_FLASH_SetLatency en SystemClock_Config lo resolviera, y el LED ahora parpadea (al menos en la placa l100, aún no probé l152).

    
respondido por el upratathlavu
0
  

Esto sucede en ambas placas y cuando las destelle con el LED parpadeando, el ejemplo de ST funciona, por lo que debería haber algún problema de firmware y diría que hay un problema de inicialización.

Según tengo entendido, está teniendo un problema al depurar el código, ¡pero el código en sí mismo funciona perfectamente! ¿Entonces, le pediría que verifique si ha habilitado la opción de depuración en Systick o no? ¿Has intentado poner LL_FLASH_SetLatency (LL_FLASH_LATENCY_2); ¿Antes de la configuración de voltaje como se indica en el enlace dado por usted? Además, verifique y vuelva a completar ll_library si todo está configurado correctamente o no.

En general, sería bueno si puede publicar su código, especialmente todas las configuraciones. Si busca más información sobre flash_latency, consulte esto post

    
respondido por el charansai

Lea otras preguntas en las etiquetas