STM32: ¡De novato a maestro es tan simple! Está mal aprender MCU para aprender MCU

De Zhihu, los derechos de autor pertenecen al autor original

Está mal aprender MCU para aprender MCU

Preguntas:
¿Cómo aprender stm32 sistemáticamente?
Es una pregunta errónea en sí misma.
Si puede usar 8051
y escribir en lenguaje C,
entonces STM32 en sí no necesita ser estudiado deliberadamente.

Lo que debes considerar es
¿qué puedo lograr con STM32?

¿Por qué utilizar STM32 en lugar de 8051?

¿Es porque la frecuencia de 51 es demasiado baja para satisfacer las necesidades informáticas?

¿Son 51 muy pocos pines para satisfacer el IO de muchos periféricos?

¿El consumo de energía del 51 es demasiado grande y la batería no lo soporta?

¿La función de 51 es demasiado débil y desea utilizar SPI, I2C, ADC, DMA?

¿La memoria de 51 es demasiado pequeña y tiene demasiadas cosas que almacenar?

 

Cuando necesite usar algunas funciones de STM32, pero 51 no pueda darse cuenta, entonces STM32 naturalmente no necesita aprender, encontrará directamente algunas formas de usar STM32. Por ejemplo, usar la tarjeta de red del protocolo spi, usar la comunicación serial, usar rtos, etc ...

 

01

Aprendiendo pasos de novato a genial

Suponemos que ya tiene un cierto conocimiento de los libros o documentos STM32. Si no lo entiende, lea el documento STM32 de inmediato para obtener los puntos de conocimiento más básicos.

Estudiantes que son buenos en inglés, por favor no piensen que son muy buenos, solo pueden leer documentos en inglés. Después de todo, usted es chino y el que mejor conoce y comprende es el chino. La velocidad de lectura en inglés sigue siendo más lenta que en chino, lo que queremos es el menor tiempo posible, en lugar de memorizar todos los detalles en poco tiempo. Por supuesto, si se trata de un artículo, es beneficioso sugerir leer la versión original en inglés.

Cuando el procesador STM32 entró en el mercado nacional, el trabajo de promoción oficial de ST (o de terceros) se hizo muy bien. Se ha traducido una gran cantidad de documentos en inglés para responder al pensamiento de muchos ingenieros domésticos.

Al estudiar, preste atención a dos documentos más importantes: "STM32F103xxx Reference Manual" y "STM32 Firmware Library User Manual". Esto es para estudiantes que dispongan de tiempo y energía, se recomienda descargar los documentos que necesitan ser consultados para más información.

Lea el "Manual de referencia del STM32F103xxx", asegúrese de prestar atención, no es necesario que lo lea todo, no hay tiempo. Se recomienda leer, pero se deben leer los primeros capítulos. Arquitectura de memoria y bus, control de potencia, registros de respaldo, control de reinicio y reloj, E / S de función general y multiplex, interrupción y tiempo, etc. Los primeros capítulos deben tomar tiempo para leerse.

Los siguientes capítulos describen el diseño del módulo funcional específico. Si usamos qué módulo, podemos leer qué módulo. Por ejemplo, cuando utilice AD, debe leer el Capítulo 10 ADC. No hay otros ejemplos. Creo que cada principiante tiene su propia dirección de investigación y juicio.

Lea el "Manual de usuario de la biblioteca de firmware STM32", principalmente para simplificar la programación. STM32 nos proporciona una muy buena biblioteca de funciones de firmware, solo necesitamos llamarla. Por supuesto, tampoco podemos tocar estas bibliotecas de firmware; se dice que usarlas hará que el código sea ineficaz, lo cual tiene sentido. También hay códigos escritos por muchos internautas en Internet, sin utilizar las funciones de la biblioteca de firmware. La elección depende de tu elección.

Aquí enfatizo principalmente que al leer el "Manual de usuario de la biblioteca de firmware STM32", también deben leerse los primeros capítulos. Por ejemplo, las reglas de nomenclatura y las reglas de codificación del primer capítulo del documento y las especificaciones de la biblioteca necesitan atención. El segundo capítulo es el más crítico, espero que todos lo lean. El Capítulo 2 describe la arquitectura de la biblioteca de firmware, los pasos para utilizar la biblioteca de firmware, etc. Con la base del Capítulo 2, podemos escribir nuestro propio código con la ayuda de la biblioteca de firmware. Después de que comience el cuarto capítulo, puede leerlo según sus necesidades. De hecho, los siguientes capítulos describen qué funciones tiene un módulo, cómo utilizar cada función, etc.

Con respecto a los siguientes capítulos, se recomienda estar familiarizado con las funciones de biblioteca GPIO, las funciones de biblioteca de interrupciones, las funciones de biblioteca de reinicio y ajuste del reloj, ya que a menudo se usan en tiempos normales.

Los dos documentos mencionados anteriormente son suficientes para que los lea, ja, ja. Espero que pueda obtener muchos conocimientos básicos de STM32.

02

Establezca un buen plan de entrada de dos semanas

(1) El llamado "principiante" aquí significa que puede comprender y dominar algunos periféricos STM32 de uso común. Si realmente desea dominar un procesador, dos semanas no explicarán ningún problema. Solo puedo decir que ya sabes algo. Sin embargo, esto es suficiente para nosotros los principiantes.

(2) Las llamadas "dos semanas" aquí varían según el horario de cada persona.

Si tiene suficiente tiempo para estudiar todos los días, puede estipular que puede desarrollar de forma independiente STM32 simple tan pronto como sea posible.

Si solo tiene tiempo libre para aprender STM32 todos los días, se recomienda organizar el tiempo de acuerdo con su situación específica. Después de todo, si el cronograma es demasiado ajustado, no se recibirán buenos resultados y solo podemos entrar en un círculo vicioso, eso es lo que queremos evitar.

Pero se recomienda que no importa si tienes suficiente tiempo o no, ¡debes hacer un plan por ti mismo! !

Aquí se enumera una idea solo como referencia.

Paso uno, después de instalar el software de aprendizaje STM32, como J-Link, Keil for ARM (MDK), ISP (si necesita descargar desde el puerto serie). Para conocer los pasos detallados de la instalación de este software, consulte nuestro tutorial correspondiente.

Paso dos, seleccione parte del HEX de la rutina, como el archivo HEX de la rutina de luces LED, descárguelo a la placa de desarrollo Xinda STM32 y observe el parpadeo de las dos luces LED. Para esta parte de la operación, puede consultar el tutorial correspondiente que lanzamos.

De hecho, los dos pasos anteriores son solo para familiarizarse con el software de la herramienta que se utilizará. Pertenece a la etapa de encontrar sentimientos. De hecho, ¡todavía no hemos comenzado a aprender STM32!

Paso 3: Prepare varios documentos de uso común, como "Manual de usuario de STM32", "Manual de usuario de la biblioteca de firmware STM32" y otros documentos. Se utiliza para inspecciones periódicas. Estos documentos se pueden encontrar en el directorio del manual del chip en el CD.

Paso cuatro, comience a verificar la escritura de la rutina, vea cómo está escrita la rutina, ¿puede modificar la rutina para lograr el efecto que desea?

Paso 5, trasplante de Ucos-II, ¿necesito probarlo?

Felicitaciones, en este punto, ya es libre de llevar a cabo un desarrollo independiente. ¡El último paso es darse una meta (proyecto) y realizarla!

Nuevamente, lo anterior es solo una idea para aprender STM32 para su referencia. Los pasos clave a continuación se enumeran a continuación, espero que pueda comenzar lo antes posible.

Paso 1: familiarícese con el software de depuración

Para los principiantes, necesitamos instalar al menos dos software: el software del controlador J-Link, el software MDK (el Keil original).

Puede consultar el Manual del usuario de la placa de desarrollo Shenzhou para los dos software durante el proceso de instalación del software, que no se repetirá aquí. Puede consultar nuestro tutorial "Cómo instalar el software del controlador J-Link" y "Cómo instalar MDK (Keil ) Software". ¿Cómo verificar que está familiarizado con el funcionamiento del software de depuración? Muy simple, el CD de la placa de desarrollo Shenzhou STM32 viene con muchos archivos en formato HEX, puede seleccionar algunos archivos HEX para observar los resultados de ejecución.

El objetivo a lograr en este paso: familiarizado con el software de depuración, si hay un problema en la programación de HEX, simplemente puede identificar el problema y resolverlo de forma independiente.

Paso 2: programación GPIO

Esta es la primera vez que entro en contacto con la programación de la biblioteca de firmware Debes morder la bala y aprender sobre la biblioteca de firmware. Se recomienda que todos intenten utilizar la biblioteca de firmware. En lugar de evitar que la biblioteca de firmware escriba su propio código, esto solo puede suceder en el aprendizaje. En proyectos reales hay cientos de códigos, ¿cómo escribirlos uno a uno? Llamar a las funciones en la biblioteca de firmware para completar es el camino del rey.

La programación de GPIO en sí es realmente muy simple

1. Configure el pin del puerto GPIO en modo de entrada o salida. Cuando realizamos el código de iluminación, generalmente se establece en modo de salida push-pull.

2. Opere el registro, establezca 1 o borre el registro: en este paso, la biblioteca de firmware ha proporcionado la función GPIO_SetBits especial y la función GPIO_ResetBits, solo necesitamos llamar para realizar la configuración y limpieza del puerto IO.

3. Realice una variedad de patrones de parpadeo de LED, de modo que esté familiarizado con el proceso de programación GPIO.

El objetivo a lograr en este paso: familiarizado con el software de depuración, si hay un problema en la programación de HEX, simplemente puede identificar el problema y resolverlo de forma independiente.

Paso 3: Inicie un nuevo estudio en profundidad de STM32

Después de familiarizarse con el software de depuración anterior y la programación y depuración de puertos GPIO, creo que tiene una cierta comprensión de STM32.

Al menos sepa cómo usar la biblioteca de firmware STM32 para escribir un código. En esta etapa, estará expuesto a la programación del puerto serie, la programación del controlador de la pantalla LCD TFT, la programación del temporizador, la programación SPI de la interfaz periférica en serie, la programación de la memoria, la migración de la tarjeta SD y el sistema de archivos, la lectura y escritura de USB, la migración de UCOS, etc. Aún tengo energía Investiga otros periféricos.

03

Explicación detallada de 8 modos de trabajo de GPIO

Salida push-pull

 

Puede generar niveles altos y bajos y conectarse a dispositivos digitales; la estructura push-pull generalmente significa que dos triodos están controlados por dos señales complementarias, y el otro siempre se corta cuando el otro está encendido. Los niveles alto y bajo están determinados por la fuente de alimentación del IC. Un circuito push-pull son dos transistores o MOSFET con los mismos parámetros, que existen en el circuito de manera push-pull, cada uno responsable de las tareas de amplificación de forma de onda de medio ciclo positivo y negativo. Cuando el circuito está funcionando, solo uno de los dos interruptores de potencia simétricos se encienden a la vez, por lo que la pérdida de conducción es pequeña y la eficiencia alta. La salida puede absorber corriente a la carga o extraer corriente de la carga. La etapa de salida push-pull no solo mejora la capacidad de carga del circuito, sino que también aumenta la velocidad de conmutación.

Salida de drenaje abierto

 

El terminal de salida es equivalente al colector del triodo, y se necesita una resistencia pull-up para obtener un estado de alto nivel. Es adecuado para transmisión de corriente y su capacidad para absorber corriente es relativamente fuerte (generalmente dentro de los 20 mA). El circuito de drenaje abierto tiene las siguientes características:

1. Utilice la capacidad de impulso del circuito externo para reducir el impulso dentro del IC. Cuando el MOSFET interno del IC está encendido, la corriente de la unidad fluye desde el VCC externo a través de la resistencia pull-up, MOSFET a GND. Solo se requiere una pequeña corriente de accionamiento de puerta dentro del IC. 2. En términos generales, el drenaje abierto se usa para conectar dispositivos de diferentes niveles para que coincidan con el nivel, porque cuando el pin de drenaje abierto no está conectado a una resistencia pull-up externa, solo puede generar un nivel bajo, si es necesario tener salida al mismo tiempo La función de alto nivel requiere una resistencia pull-up Una buena ventaja es que al cambiar el voltaje de la fuente de alimentación pull-up, se puede cambiar el nivel de transmisión. Por ejemplo, agregar una resistencia pull-up puede proporcionar una salida de nivel TTL / CMOS. (La resistencia de la resistencia pull-up determina la velocidad de conversión del nivel lógico. Cuanto mayor sea la resistencia, menor será la velocidad, menor será el consumo de energía, por lo que la elección de la resistencia de carga debe tener en cuenta el consumo de energía y la velocidad). 3 La salida de drenaje abierto proporciona flexibilidad Sin embargo, también tiene su debilidad, que es el retraso del flanco ascendente. Debido a que el borde ascendente carga la carga a través de una resistencia pasiva pull-up externa, cuando la resistencia es pequeña, el retraso es pequeño, pero el consumo de energía es grande; de ​​lo contrario, el retraso es grande y el consumo de energía es pequeño. Por lo tanto, si existe un requisito de retraso, se recomienda utilizar la salida de flanco descendente. 4. Se pueden conectar múltiples salidas de drenaje abierto a una línea. A través de una resistencia pull-up, sin agregar ningún dispositivo, se forma una relación "lógica Y", es decir, "cable Y". Puede entenderse simplemente como: cuando todos los pines están conectados entre sí, se conecta una resistencia pull-up externa. Si un pin genera un 0 lógico, es equivalente a la conexión a tierra, y el circuito paralelo con él es "equivalente a un cortocircuito". circuitado por un cable ". Por lo tanto, el nivel lógico del circuito externo es 0, y el resultado del Y es 1 lógico sólo cuando ambos son altos. Con respecto a la salida push-pull y la salida de drenaje abierto, la figura más simple se usa para resumir: el lado izquierdo de la figura es el modo de salida push-pull, en el que el transistor PNP inferior se corta cuando el comparador genera un nivel alto , y el transistor NPN superior conduce encendido, el nivel de salida es VS +; cuando el comparador genera un nivel bajo, ocurre lo contrario, el transistor PNP está encendido y la salida está conectada a tierra, que es un nivel bajo. El de la derecha puede entenderse como una forma de salida de drenaje abierto y debe conectarse a un pull-up.

 

 

Entrada flotante

Para la entrada flotante, no he encontrado una explicación muy autorizada, así que tengo que entenderla de la siguiente figura

 

Dado que la entrada flotante se usa generalmente para la entrada de clave externa, combinada con la parte de entrada del circuito en la figura, entiendo que en el estado de entrada flotante, el nivel de IO es incierto y está completamente determinado por la entrada externa. Si el pin se deja flotando En el caso de la lectura el nivel del puerto es incierto.

Entrada pull-up / entrada pull-down / entrada analógica

Estos conceptos son fáciles de entender y se pueden entender literalmente con facilidad.

Salida de drenaje abierto multiplexada, salida push-pull multiplexada

Puede entenderse como la configuración cuando el puerto GPIO se usa como segunda función (es decir, no se usa como puerto IO general)

Resumir la selección del modo IO en STM32

 

1. Entrada flotante GPIO_IN_FLOATING —— Entrada flotante, se puede usar para identificación de LLAVE, RX1

2. Con entrada pull-up Entrada de resistencia pull-up interna GPIO_IPU-IO 3. Con entrada pull-down Entrada GPIO_IPD-IO de resistencia pull-down interna 4, entrada analógica GPIO_AIN-use la entrada analógica ADC o ahorre energía con bajo consumo de energía 5. Salida de drenaje abierta GPIO_OUT_OD —— La salida IO 0 está conectada a GND, la salida IO 1, flotante, necesita una resistencia pull-up externa para lograr una salida alta. Cuando la salida es 1, el estado del puerto IO es elevado por la resistencia pull-up, pero debido a que es un modo de salida de drenaje abierto, el puerto IO se puede cambiar a un nivel bajo o sin cambios mediante un circuito externo. Puede leer el cambio de nivel de entrada IO, realizar la función bidireccional IO de C51 6. Salida push-pull GPIO_OUT_PP —— Salida IO 0-conectar a GND, salida IO 1 -conectar a VCC, el valor de entrada leído es desconocido 7. Push-pull función de multiplexación Funciones periféricas GPIO_AF_PP en chip (SCL, SDA de I2C) 8. Salida de drenaje abierto de funciones de multiplexación GPIO_AF_OD Funciones periféricas en chip (TX1, MOSI, MISO.SCK.SS)

04 Ejemplo de configuración STM32

1. Utilice la salida de drenaje abierto _OUT_OD para I2C analógico y conecte las resistencias pull-up a la salida correcta de 0 y 1; al leer el valor, primero GPIO_SetBits (GPIOB, GPIO_Pin_0); tire hacia arriba, luego puede leer el valor de IO; use GPIO_ReadInputDataBit (GPIOB, GPIO_Pin_0);

2. Si no hay una resistencia pull-up, IO es alto por defecto, si necesita leer el valor de IO, puede usar la entrada pull-up _IPU y la entrada flotante _IN_FLOATING y abrir la salida de drenaje _OUT_OD;

Por lo general, hay 5 formas de usar una función de pin

Están configurados de la siguiente manera:

1. Como una entrada GPIO ordinaria: configure este pin como una entrada flotante, una entrada pull-up débil o una entrada pull-down débil según sea necesario, y no habilite todos los módulos de función multiplexados correspondientes a este pin.

 

2. Como una salida GPIO ordinaria: configure este pin como salida push-pull o salida de drenaje abierto según sea necesario, y no habilite todos los módulos de función multiplexados correspondientes a este pin.

 

3. Como entrada analógica normal: configure este pin como modo de entrada analógica y no habilite todos los módulos de función multiplexados correspondientes a este pin.

 

4. Como entrada de los periféricos incorporados: configure el pin como una entrada flotante, una entrada pull-up débil o una entrada pull-down débil según sea necesario, y habilite un módulo de función multiplex correspondiente al pin.

 

5. Como salida de periféricos integrados: configure este pin como salida multiplexada push-pull o salida multiplexada de drenaje abierto según sea necesario y habilite todos los módulos funcionales multiplexados correspondientes a este pin.

 

Tenga en cuenta que si hay varios módulos de función multiplexados correspondientes al mismo pin, solo uno de ellos puede habilitarse y los otros módulos permanecen en estado inhabilitado. Por ejemplo, si desea utilizar la función USART3 de los pines 47 y 48 del STM32F103VBT6, debe configurar el pin 47 como salida multiplex push-pull o salida multiplex de drenaje abierto, configurar el pin 48 como un modo de entrada determinado y habilitar USART3 y mantener I2C2 deshabilitado. Si desea utilizar el pin 47 de STM32F103VBT6 como TIM2_CH3, debe reasignar TIM2 y luego configurar los pines correspondientes de acuerdo con la función de multiplexación.

-FIN-

Supongo que te gusta

Origin blog.csdn.net/ctrigger/article/details/112721841
Recomendado
Clasificación