La región STM32 `FLASH 'se desborda por el problema de xxx bytes resuelto
1. Fenómeno problemático
Para el proyecto STM32L031 creado con STM32CUBEIDE, cuando HAL_UART_Receive_IT (& huart2, (uint8_t *) & aRxBuffer, 1); está habilitado, incluso si se interrumpe la recepción del puerto serie 2, se informa un error Región FLASH desbordada por xxx bytes al construir el proyecto.
2. Solución incorrecta
Hay una forma de introducir en Internet, modificar el archivo de script compilado en el directorio del proyecto, abrir el archivo ld y
modificar el valor FLASH (rx) a un valor mayor, como 36K
después de la modificación, la compilación se puede descargar en el chip con éxito, pero el programa no se puede ejecutar . STM32L031 tiene solo un espacio Flash de 32K, y el aumento artificial del tamaño del espacio reconocido por el software no resuelve el problema.
3. La solución correcta
Debido a que el método de sondeo no interrumpido (sondeo) se utiliza para recibir correctamente los datos del puerto serie, el juicio básico es que el código generado por la optimización del método de interrupción uart es demasiado grande. Por tanto, se puede ajustar para optimizar la compilación.
En las Propiedades del proyecto de STM32CUBEIDE, busque la opción Optimización
para optimizar la depuración y la compilación de versiones, seleccione Optimizar para tamaño
o todos los tipos usan Optimizar para tamaño
Aplicar y salir. Escriba un espacio en el código, guarde y reconstruya el proyecto, y la compilación y el enlace se realizarán correctamente. Después de descargar al chip, la operación de recepción de interrupciones del puerto serie es normal.
Después de que ST actualizó la versión STM32CUBEIDE, el menú de control se convirtió en el siguiente, solo utilícelo como inferencia:
-Fin-