No CoIDE, na aba Repositório, basta incluir o periférico desejado. Para o primeiro projeto apresentado, significa selecionar as bibliotecas RCC (referente ao controle do reset e clock para a STM32F4) e GPIO (referente as portas genéricas de entrada e saída da placa). Em outras palavras,
Isto adicionará a estrutura do projeto o código correspondente a estas bibliotecas, como pode ser comprovado pela adição dos arquivos de cabeçalho correspondentes na pasta cmsis_lib/include:
Isto proporcionará a possibilidade de se usar rótulos que se referem aos valores que necessitam ser atribuídos aos campos que configuram o clock e a porta (como GPIO_Mode_OUT ou RCC_AHB1Periph_GPIOD), conforme mostrado no código abaixo:
Ao compilá-lo, no entanto, o tamanho do programa aumentará, em relação à versão apresentada na parte I, como pode ser visto a seguir:
Tamanho com uso da SPL |
Tamanho sem SPL (versão da Parte I) |
Assim, o uso de bibliotecas implicam no aumento dos custos com espaço em memória.
Podemos ir além no uso da SPL, configurando os campos através da declaração/ uso de uma estrutura, como feito na linha 5 e nas linhas 15 a 20 do código abaixo:
Observe também a chamada a funções para habilitar o clock (linha 11) e para setar (linha 27) ou resetar (linha 29) o pino 12 da placa, ligando e desligando o LED correspondente, respectivamente.
Para se ter uma ideia do aumento do espaço proporcionado por estas pequenas modificações, observe o tamanho resultante, após compilar o projeto:
Por fim, podemos usar uma função alternativa para ligar/ desligar o respectivo pino, que é a função ToggleBits, conforme linha 28 do código abaixo:
Ao compilarmos este código, o programa resultante terá o seguinte tamanho:
É notável a redução proporcionada por esta abordagem. Por isso, vale a pena investir tempo estudando o que as bibliotecas nos proporcionam, pois elas podem nos oferecer formas de otimizar o código. E no CoIDE tais informações são proporcionadas pela janela de Help, que, ao selecionar uma biblioteca do repositório, serão exibidos os recursos que esta proporcionam na janela do Help à direita:
No próximo post da série ensinaremos como definir e usar um Timer para implementar uma função de delay, em substituição aos laços for usados para este fim.
Nenhum comentário:
Postar um comentário