STM32 Região `FLASH 'transbordada por xxx bytes problema resolvido
1. Fenômeno do problema
Para o projeto STM32L031 criado com STM32CUBEIDE, quando HAL_UART_Receive_IT (& huart2, (uint8_t *) & aRxBuffer, 1); está habilitado, mesmo se a recepção da porta serial 2 for interrompida, um erro Região FLASH transbordada por bytes xxx é relatado ao construir o projeto.
2. Solução incorreta
Existe uma maneira de introduzir na Internet, modificar o arquivo de script compilado no diretório do projeto, abrir o arquivo ld e
modificar o valor FLASH (rx) para um valor maior, como 36K
após a modificação, a compilação pode ser baixada no chip com sucesso, mas o programa não pode ser executado . O STM32L031 possui apenas 32K de espaço Flash e aumentar artificialmente o tamanho do espaço reconhecido pelo software não resolve o problema.
3. A solução correta
Como o método de polling não interrompido (polling) é usado para receber os dados da porta serial com sucesso, o julgamento básico é que o código gerado pela otimização do método de interrupção uart é muito grande. Portanto, pode ser ajustado para otimização da compilação.
Nas propriedades do projeto de STM32CUBEIDE, encontre a opção Otimização
para otimizar a depuração e liberar a compilação, selecione Otimizar para tamanho
ou todos os tipos usam Otimizar para tamanho
Aplicar e sair. Digite um espaço no código, salve e reconstrua o projeto, e a compilação e a vinculação serão bem-sucedidas. Após o download para o chip, a operação de recebimento de interrupção da porta serial é normal.
Depois que a ST atualizou a versão STM32CUBEIDE, o menu de controle passou a ser o seguinte, basta usar a inferência:
-Fim-