domingo, 18 de junho de 2017

Desenvolvendo para a placa STM32F4 - Parte II

Alternativamente à forma apresentada na parte I desta série, é possível facilitar o processo de programação dos periféricos da placa STM32F4Discovery usando a Standard Peripheral Library do Cortex-M4. Cada periférico tem sua própria biblioteca de software correspondente.

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