PDF de programación - ARM Cortex-M práctico

Imágen de pdf ARM Cortex-M práctico

ARM Cortex-M prácticográfica de visualizaciones

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 15 de Abril del 2018
3.188 visualizaciones desde el 15 de Abril del 2018
17,0 MB
206 paginas
Creado hace 2a (13/05/2017)
ARM Cortex-M práctico.

1 - Introducción a los microcontroladores STM32 de St

Àngel Perles

Departament d’Informàtica de Sistemes i Computadors

Universitat Politècnica de València

Licencia Reconocimiento – NoComercial – SinObraDerivada (by-nc-nd): No se per-
mite un uso comercial de la obra original ni la generación de obras derivadas.

Àngel Perles. aperles@disca.upv.es

i

ii

ARM Cortex-M práctico. 1 - Introducción a los microcontroladores STM32 de St

ARM Cortex-M práctico. 1 - Introducción a los

microcontroladores STM32 de St

Àngel Perles. aperles@disca.upv.es

13 de mayo de 2017

Presentación

Cuidadín que esto no es más que un borrador y unas anotaciones.
Yo he trabajado siempre con microcontroladores de la familia 8051 porque me per-
mitían elegir fabricante y herramientas en función del tipo de problema a resolver.
Así fuí cambiando del fabricante Intel a Siemens (ahora Infineon), a Temic, a Atmel
y, finalmente, a los formidables Silabs. Ni Microchip (PIC), ni Motorola (HC11) ni
los AVR de Atmel, ni Renesas eran capaces de competir con este estándar industrial,
aunque competían bien en otras ventajas.
En el año 200X decidí que era el momento de cambiar a una arquitectura de 32
que me facilitase la escritura de las aplicaciones en lenguaje C, proporcionase más
rendimiento y mantuviese las ventajas del 8051. Tras analizar distintas arquitecturas,
decidí apostar por la arquitectura ARM Cortex-M por el modelo de licencia seguido
y porque ya había dos fabricantes que había apostado por ella: St y Luminary Micro
(ahora Texas Instruments). Hubo suerte y ahora hay infinidad de fabricantes que los
producen, herramientas libres y comerciales excelentes y una magnífica comunidad
donde localizar información.
Más adelante decidí trasladar el cambio al ámbito educativo. Tras unas pruebas
de concepto (asignaturas en la Universidad, cursos a profesionales, etc.) llego a la
conclusión de que hace falta un libro adecuado al nivel de los alumnos y que no hay
ninguno que se adapte al perfil de mis alumnos.
Con el fin de ir solucionando el problema, voy a ir anotando lo que voy haciendo con
los alumnos, a ver si así es más fácil ir avanzando en la línea adecuada y se consiguen
profesionales más preparados en este ámbito. En cualquier caso, es imposible lograr
una obra que lo cubra todo, así que el enfoque está muuuuuyyyyy orientado al perfil
de mis alumnos.
Explicar el objetivo de la obra: nada de cosas maravillosas conectadas por móvil a la
nube y demás chorrads que son espectaculares pero no enseñan a sert independiente.
Eso es básico y, si hay segunda parte, estará orientada a ser productivo para lograr
hacer esas maravillas sabiendo lo que se está haciendo.

iii

Ahora voy a explicar cómo usar esto. Partimos de que el aprendiz tiene conocimientos
básicos de electrónica digital, electrónica analógica y de programación en lenguaje
C. Si, además, se tienen conocimientos sobre otros microcontroladores (PIC, AVR,
8051, HC-11, etc.) entonces será fácil seguir esto (espero). Si no se cumplen estas
condiciones, mejor no sigas y empieza con la fantástica plataforma Arduino. Eso no
es para jugar, es para desarrollos serios para empresas.
Empieza a trabajar de manera lineal y, cuando no se entienda algo de programación,
acude al apartado correspondiente para ver si te lo resuelve. Si no es así, deberás
buscar ayuda fuera del libro.
Àngel Perles

iv

Reconocimientos

A Jaume Planas, de St España, y a Ruben Carrillo, de Venco, por su apoyo en la
puesta en marcha del curso con las placas Discovery.
A Ricardo Mercado, por la imagen del equipo comercial desarrollado por él.
A Antonio Sánchez, de Fermax, por su apoyo dándoles un baño de realidad a mis
alumnos de Electrónica y Automática.

v

Índice general

Presentación

Reconocimientos

Contenido

1 Los microcontroladores

1.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Qué es un microcontrolador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Aplicaciones del microntrolador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.4 Sistemas embebidos, embarcados o empotrados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5 Clasificaciones típicas de los microcontroladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.1 Por el tamaño de palabra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5.2 Por el enfoque en la ejecución de instrucciones: CISC o RICS. . . . . . . . . . . . . . . . . . . .
1.5.3 Por el camino usado para los datos y las instrucciones: Von Neuman o Harvard. . . . . . . . .

1.6 Eligiendo el microcontrolador adecuado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.1 El mercado de microcontroladores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.2 Familias, fabricantes y licencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6.3 Elección de la familia de microcontroladores ARM Cortex-M . . . . . . . . . . . . . . . . . . . .
1.6.4 Elección del microcontrolador St STM32F4xxx. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.7 Las herramientas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.1 El lenguaje de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.2 Sistemas operativos o microkernels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.3 Simuladores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.4 Sondas de depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.7.5 Kits de desarrollo/evaluación. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 Arquitectura del microcontrolador St STM32F4xxx (ARM Cortex-M4F)

2.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

vii

iii

v

vii

1
1
1
3
4
5
5
6
6

7
8
9
10
13

13
13
14
14
14
16

17
17

Índice general

2.2 Familia St STM32F4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Arquitectura del microcontrolador STM32F407. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Encapsulado y patillaje de un St STM32F4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5 Sistemas con un STM32F4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.1 Alimentación, reloj y reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.2 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.3 Mínimo, mínimo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.4 Razonable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.6 ¿Más adelante? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6.1 Mapa de memoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6.2 Arranque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 Entrada/salida digital

3.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Puertos y líneas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 La célula de cada pin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4 Salida digital
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.1 La célula en modo salida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.5 Biblioteca STM32Cube para gestionar la GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6 Entrada digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.1 Célula en modo entrada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.2 Ejemplo: Un pulsador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.7 Funciones extendidas para la GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7.1 Ejemplo: dial selector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.8 Ejemplo: un display de 7 segmentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.9 Teclados matriciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.10 Multiplexado temporal con varios display de 7 segmentos . . . . . . . . . . . . . . . . . . . . . . .

4 Interrupciones

4.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Funcionamiento general y jerga del sistema de interrupciones . . . . . . . . . . . . . . . . . . . . .
4.3 Interrupciones en los ARM Cortex-M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 Cosas pendientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4.4 El periférico EXTI y las interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.1 Funcionalidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.4.2 Configuración de interrupciones en pines GPIO .
  • Links de descarga
http://lwp-l.com/pdf10428

Comentarios de: ARM Cortex-M práctico (1)

javier Maestre
3 de Agosto del 2018
estrellaestrellaestrellaestrellaestrella
No ha dejado ningún comentario
Responder

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad