domingo, 25 de junho de 2017

Desenvolvendo para a Placa STM32F4 (Uso dos Timers) - Parte III

Nos programas desenvolvidos nos últimos posts, o intervalo de tempo em que o LED fica aceso ou apagado é implementado através de estruturas de repetição for, cuja quantidade de iterações define o tempo, de certa forma intuitiva. Neste post, discutiremos uma forma alternativa de se definir este tempo, agora de forma objetiva, através do uso de Timers.

Os timers são configurados como um múltiplo do clock do sistema. O código abaixo ilustra a esta configuração e uso do timer para a criação de uma função Delay usada no programa.



A primeira providência é o fragmento entre as linhas 24 e 26, onde é configurado o Systick Timer. A base para esta configuração é a constante SystemCoreClock, que é o número de ticks, ou ciclos do clock do sistema por segundo. Quando dividido por 1000, isto equivale a um intervalo de 1 ms onde o Systick_Handler será chamado (linha 45). Desta forma, a cada 1 ms é executado o código entre as linhas 45 e 48, onde a variável TimingDelay é decrementada até chegar a zero.

A variável TimingDelay é declarada na linha 38. Observe o uso de "__IO": isto faz com que o compilador não faça uma otimização indesejada, adulterando o padrão de tempo configurado.

E como esta variável é setada? Observe que seu valor é atribuído na passagem do parâmetro da função Delay, entre as linhas 40 e 43 do código.

Desta forma, agora podemos definir o tempo desejado em que o LED pisca, que, a exemplo do código acima, foi setado como 250 ms.

No próximo post da série, apresentaremos uma nova aplicação, onde utilizaremos o botão da placa como uma entrada. Até lá!


Nenhum comentário:

Postar um comentário