Dando continuidade à série Projeto com a FRDM-K64F e KDS, neste artigo explicarei como gerar código com suporte ao KSDK e com suporte ao Processor Expert.
Apenas para informação, esta é a sequência de post proposta na primeira parte:
-
Projeto com a FRDM-K64F e KDS: Codificação sem suporte ao KSDK e ao Processor Expert;
-
Projeto com a FRDM-K64F e KDS – Suporte ao KSDK: Codificação com suporte ao KSDK e sem suporte ao Processor Expert;
- Projeto com a FRDM-K64F e KDS – Suporte ao KSDK e Processor Expert: Codificação com suporte ao KSDK e ao Processor Expert.
O que é o Processor Expert?
É uma ferramenta da NXP (antiga Freescale) que permite facilitar a inicialização dos periféricos. Com isso o tempo para iniciar o projeto fica bem reduzido.
Criando o projeto com suporte ao KSDK e ao Processor Expert
Com o KDS aberto, siga o seguinte caminho para criar o novo projeto: “File -> New -> Kinetis Project”. No campo “Project Name”, digite o seguinte nome de projeto: “PiscaLedComSuporteKSDKePE”. Clicar em “Next”. Selecione “Processors -> Kinetis K -> MK60 -> MK64F(120MHz) -> MK64FN1M0xxx12”. Clicar em “Next”.
No campo “Kinetis SDK” selecione “KSDK_1.2.0”. Marque o checkbox “Processor Expert”. Verifique se em “Project Mode” está selecionada a opção “Standalone”. Clicar em “Next”. Selecionar a opção “GNU…”, para gerar código para o KDS. Clicar em “Finish”.
Abrir o “Processor Expert” clicando no botão mostrado abaixo.
Para facilitar a configuração dos periféricos, altere o modo de visualização de “Basic” para “Advanced” e desmarcar a opção “Tabs View”.
Clicar na aba “Components Library”.
Selecionar a pasta de componentes “KSDK 1.2.0”. Neste momento, é necessário adicionar um componente de GPIO. Para isso, siga o caminho de pastas: “KSDK 1.2.0 -> Peripheral Drivers/HAL -> Inputs/Outputs -> fsl_gpio”. Clique duas vezes em “fsl_gpio”, assim será adicionado ao projeto.
Componentes do projeto, e o gpio adicionado.
Agora, é necessário editar este componente:
- Adicionar os três pinos que controntram o LED RGB;
- Configurá-los como saída;
- Configurar o estado inicial como nível lógico 1, para manter os leds apagados.
Para isso, clicar na aba “Component Inspector”.
Para saber quais os pinos devem ser configurados, esta é uma parte do esquema com a ligação do LED RGB, na Figura 8:
Alterar as seguintes configurações:
- Input pins: Disable
- Output pins numbers: 3
- Pin 0:
- Pin: PTB22
- Pin Name: LED_VERMELHO
- Output logic: 1
- Open Drain: Disable
- Pin 1:
- Pin: PTE26
- Pin Name: LED_VERDE
- Output logic: 1
- Open Drain: Disable
- Pin 2:
- Pin: PTB21
- Pin Name: LED_AZUL
- Output logic: 1
- Open Drain: Disable
Execute Initialization -> Input pins -> Disable.
Clicar no botão para salvar todos os arquivos. Clicar no botão para gerar o código automáticamente.
Ao finalizar o processo de geração de código, pode minimizar a janela do Processor Expert. Abrir a pasta do projeto e terá estes arquivos:
Na pasta Source, ficam os fontes para o usuário alterar.
- main.c: tem a função int main();
- Events.c: tratamento de interrupções, funções de callback.
Nesta pasta também podem ser inseridos os novos módulos. É necessário seguir as indicações geradas pelos Processor Expert. Caso algum código seja inserido em lugares não apropriados, serão eliminados em alguma próxima geração automática de codigo.
De acordo com os artigos anteriores, as funcionalidades que devem ser inseridas no código são:
- Habilitar o fornecimento de clock para os ports: Já feito pelo Processor Expert;
- Configurar os pinos para operar como GPIO: Já feito pelo Processor Expert;
- Configurar a direção dos pinos: Já feito pelo Processor Expert;
- Operar no acionamento dos pinos.
A única tarefa que é realmente necessária, é o objetivo do projeto, que no caso é piscar os leds de tempo em tempo.
A funcionalidade de delay será semelhante aos artigos anteriores, uma variável é iniciada com um valor bem alto e decrementado até chegar a zero.
//trecho de código uint32_t var_delay = 5000000; while(--var_delay >0); var_delay = 5000000;
Para acionar os leds, serão usadas as funções dos KSDK, porém não é necessário acessar a documentação, basta explorar os componentes inseridos pelo Processor Expert. A função necessária é a de toggle.
Para utilizar a função, basta clicar e arrastar para o local desejado no código. E na função, indicar qual o nome do pino que se deseja atuar. Veja como ficou no código.
//trecho de código
while(1)
{
GPIO_DRV_TogglePinOutput(LED_VERMELHO);
GPIO_DRV_TogglePinOutput(LED_VERMELHO);
GPIO_DRV_TogglePinOutput(LED_VERMELHO);
while(--var_delay > 0);
var_delay = 5000000;
}
O tamanho do binário final:
Conclusão
O tamanho do binário é o valor indicado por “text”. Sendo assim, segue a comparação dos tamanhos dos binários:
- Código somente com KDS = 1736;
- Código com KDS e KSDK = 14344;
- Código com KDS, KSDK e Processor Expert = 13196.
O primeiro método realmente é o que menos consome, porém tem o custo da curva de aprendizagem, consulta em documentação. O segundo método já consome bem mais código, pois para modularizar o acesso ao hardware, diversas chamadas de funções são geradas. O terceiro método é o mais amigável, e ainda consumiu um pouco menos que o segundo. A grande facilidade está em configurar os periféricos de forma visual.
O que achou dos métodos, qual sua preferência?




