A maior rede de estudos do Brasil

Grátis
256 pág.
Descobrindo o STM32

Pré-visualização | Página 2 de 47

Exercise 7.1 Código Completo da Interface . . . . . . . . . . . . . . 109
Exercise 7.2 Exibindo Textos . . . . . . . . . . . . . . . . . . . . . . 109
Exercise 7.3 Graficos . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Exercise 8.1 FAT File System . . . . . . . . . . . . . . . . . . . . . 124
Exercise 9.1 Lendo o Wii Nunchuk . . . . . . . . . . . . . . . . . . 136
Exercise 10.1 Ramping LED . . . . . . . . . . . . . . . . . . . . . . 149
Exercise 10.2 Controle de um Servo Hobby . . . . . . . . . . . . . . 149
Exercise 10.3 Sensor Ultrassônico . . . . . . . . . . . . . . . . . . . 156
Exercise 11.1 Timer Interrupt – Blinking LED . . . . . . . . . . . . 167
Exercise 11.2 Comunicação Serial dirigida a Interrupções . . . . . . 179
Exercise 11.3 Interrupção Externa . . . . . . . . . . . . . . . . . . . 182
Exercise 12.1 Módulo SPI DMA . . . . . . . . . . . . . . . . . . . . 193
Exercise 12.2 Mostrando imagens BMP a partir do Fat File System 193
Exercise 13.1 Gerador de Formas de Onda . . . . . . . . . . . . . . 199
Exercise 13.2 Application Software Driven Conversion . . . . . . . 199
Exercise 13.3 Conversão Interrupt Driven . . . . . . . . . . . . . . 200
Exercise 13.4 Audio Player . . . . . . . . . . . . . . . . . . . . . . . 204
Exercise 14.1 Amostragem Continua . . . . . . . . . . . . . . . . . 213
Exercise 14.2 Conversão Dirigida pelo Timer . . . . . . . . . . . . 216
6 Revision: (None) ((None))
SUMÁRIO
Exercise 14.3 Gravador de Voz . . . . . . . . . . . . . . . . . . . . . 217
Exercise 15.1 Hello World . . . . . . . . . . . . . . . . . . . . . . . 223
Exercise 16.1 RTOS – Blinking Lights . . . . . . . . . . . . . . . . 235
Exercise 16.2 Multiplos Threads . . . . . . . . . . . . . . . . . . . . 237
Exercise 16.3 Multithreaded Queues . . . . . . . . . . . . . . . . . . 239
Exercise 16.4 Multithreaded SPI . . . . . . . . . . . . . . . . . . . . 243
Exercise 16.5 Multithreaded FatFS . . . . . . . . . . . . . . . . . . . 244
Revision: (None) ((None)) 7
Agradecimentos
Eu tive muita ajuda de várias pessoas da Escola de Informática da
Universidade de Indiana no desenvolvimento deste material. Principalmente
Caled Hess que desenvolveu a protoboard que usamos em nosso laboratório,
e ele, junto com Bryce Himebaugh fizeram contribuições significativas no de-
senvolvimento de várias experiências. Tracey Theriault forneceu muitas das
fotografias.
Estou agradecido a ST Microelectronics por várias doações que pos-
sibilitaram o desenvolvimento deste laboratório. Eu quero agradecer parti-
cularmente a Andrew Dostie que sempre respondeu rapidamente a qualquer
pergunta que lhe fiz.
STM32 F1, STM32 F2, STM32F3, STM32 F4, STM32 L1, Discovery
Kit, Cortex, ARM e outras são marcas registradas e são propriedades de seus
donos.
Revision: (None) ((None)) 9
Prefácio
Este livro pretende ser um manual hands-on para aprender como pro-
jetar sistemas utilizando a família de microcontroladores STM32 F1. Ele foi
escrito para suportar um curso de ciência da computação para iniciantes na
Universidade de Indiana. O foco deste livro esta no desenvolvimento de código
para utilizar os vários periféricos disponíveis no microcontrolador SRM32 F1
e em particular na placa STM32VL Discovery. Como existem outras boas
fontes de informação sobre o Cortex-M3, que é o core processor para os mi-
crocontroladores STM32 F1, não iremos examinar este core em detalhes; uma
excelente referencia é “The Definitive Guide to the ARM CORTEX-M3.” [5]
Este livro não é exaustivo, mas fornece uma “trilha” simples para o
aprendizado da programação do microcontrolador STM32 por meio de uma
série de exercícios de laboratórios. Uma decisão chave foi utilizar um modelo
de hardware off-the-shelf para todos os experimentos apresentados.
Eu ficaria feliz em tornar disponível para qualquer instrutor os outros
materiais desenvolvidos para o curso C335 (Computer Structures) da Univer-
sidade de Indiana, mas as restrições de copyright limitam minha capacidade
de torná-los amplamente disponível.
Geoffrey Brown
Indiana University
Revision: (None) ((None)) 11
Capítulo 1
Iniciando
Nos últimos anos temos visto um renascimento de entusiastas e inven-
tores construindo dispositivos eletrônicos personalizados. Estes sistemas uti-
lizam componentes e módulos comerciais (off-the-shelf) cujo desenvolvimento
foi abastecido por uma explosão tecnológica de sensores e atuadores integrados
que incorporam muita eletrônica analógica que anteriormente aparentava ser
uma barreira para desenvolvimentos de sistemas por não engenheiros. Micro-
controladores com firmwares personalizados oferecem a cola para vincular so-
fisticados módulos comerciais em sistemas complexos customizados. Este livro
apresenta uma série de tutoriais objetivando o ensino de programação de sis-
temas embarcados e interfaces de hardware necessárias para a utilização da
família de micro-controladores STM32 no desenvolvimento de dispositivos ele-
trônicos. O livro é direcionado para leitores com experiência em programação
na linguagem “C”, mas sem experiência com sistemas embarcados.
A família de micro-controladores STM32, baseado no processador ARM
Cortex-M3, oferece uma estrutura para criação de uma vasta quantidade de
sistemas embarcados, desde simples dongles alimentados a bateria até sistemas
complexos de tempo real como helicópteros auto-pilotados. Esta família de
componentes inclui dezenas configurações diferentes, provendo amplas opções
de tamanho de memória, periféricos, performance e consumo de energia. Os
componentes são razoavelmente baratos em pequenas quantidades -– poucos
dólares pelos dispositivos mais complexos -– e justificam seu uso em aplicações
de baixo volume de produção. Na verdade, os componentes iniciais da “Value
Line” são comparáveis em valores aos componentes da ATmega, usados nas
placas de desenvolvimentos Arduíno, e que ainda apresentam melhoras signi-
ficativas de desempenho e periféricos mais potentes. Além disso, os periféricos
utilizados são compartilhados por outros membros da família (por exemplo,
Revision: (None) ((None)) 13
CAPÍTULO 1. INICIANDO
os módulos USART são compatíveis com todos componentes da STM32 F1) e
são suportados por um único firmware. Portanto, aprender como programar
um único dispositivo da família STM32 F1 o capacita a programar todos eles.
1
Infelizmente, poder e flexibilidade são obtidos com um custo –- o de-
senvolvimento de softwares para a família STM32 pode ser extremamente
desafiador para um iniciante com uma vasta documentação e bibliotecas para
vasculhar. Por exemplo, o RM0041, manual de referência para uma grande
quantidade de dispositivos STM32 F1, possui 675 páginas e sequer cobre o
núcleo de processamento do Cortex-M3! Felizmente, não é necessário ler todo
este livro para começar a desenvolver aplicações para o STM32, embora seja
uma referência importante. Além disto, um iniciante se depara com um con-
junto de opções de ferramentas de programação (tool-chain) 2 Em contraste, a
plataforma Arduino oferece bibliotecas para aplicações simples e ambientes de
programação acessíveis a programadores inexperientes. Para muitos sistemas
simples, oferece um rápido atalho para construir protótipos. No entanto, sim-
plicidade traz custos –- as plataformas de software do Arduino não se adaptam
bem ao gerenciamento de atividades concorrentes em sistemas complexos de
tempo real e, para interação com softwares externos, depende de bibliotecas
projetadas fora do ambiente de programação do Arduíno, utilizando técnicas
e ferramentas semelhantes às utilizadas para o STM32. Além do mais, a pla-
taforma Arduíno não prove capacidade de depuração que limita severamente
o desenvolvimento de sistemas mais complexos. Novamente, a depuração re-
quer a saída do ambiente confinado da plataforma Arduino. Finalmente, o
ambiente Arduíno não suporta sistemas operacionais de tempo-real

Crie agora seu perfil grátis para visualizar sem restrições.