Resumir los puntos de conocimiento de la entrevista integrada STM32

1. ¿Cuál es la diferencia entre STM32F1 y F4?

Diferentes núcleos: F1 es el núcleo de Cortex-M3, F4 es el núcleo de Cortex-M4; la frecuencia principal es diferente: la frecuencia principal de F1 es de 72 MHz, la frecuencia principal de F4 es de 168 MHz; el diseño es más rico y más potente que F1, como la velocidad de giro de GPIO, configuración de resistencia pull-up y pull-down, precisión ADC, etc.; tamaño de memoria: SRAM interna F1 máximo 64K, F4 tiene 192K (112+64+16).

2. Introducir el proceso de inicio de STM32

A través de la configuración del pin de arranque, busque la dirección inicial para inicializar el puntero de pila __initial_sp apunta al programa de reinicio Reset_Hander establece la interrupción de excepción HardFault_Handler establece el reloj del sistema SystemInit llama a la función de biblioteca C _main

3. Introducir GPIO

Modos de trabajo GPIO 8 (gpio_init.GPIO_Mode):

(1) Entrada analógica GPIO_Mode_AIN

(2) entrada flotante GPIO_Mode_IN_FLOATING

(3) Entrada desplegable GPIO_Mode_IPD

(4) Entrada desplegable GPIO_Mode_IPU

(5) Salida de drenaje abierto GPIO_Mode_Out_OD

(6) Salida de contrafase GPIO_Mode_Out_PP

(7) Salida multiplexada de drenaje abierto GPIO_Mode_AF_OD

(8) GPIO_Mode_AF_PP La salida push-pull de multiplexación APB2 es responsable de AD, E/S, TIM avanzado, puerto serie 1.

APB1 es responsable de DA, USB, SPI, I2C, CAN, puerto serie 2345, TIM ordinario, PWR

4. UART

  • Pregunta 1: Introducción a la comunicación serial

Comunicación síncrona: I2C semidúplex, SPI dúplex completo

Comunicación asíncrona: RS485 semidúplex, RS232 dúplex completo

  • Pregunta 2: configuración del puerto serie

Los pasos generales de la configuración del puerto serie se pueden resumir en los siguientes pasos:

(1) Activación del reloj del puerto serie, activación del reloj GPIO (2) Restablecimiento del puerto serie (3) Modo de puerto GPIO Establezca el modo de funcionamiento GPIO de TX en: GPIO_Mode_AF_PP; //El modo de funcionamiento GPIO de la salida push-pull multiplexada RX es: GPIO_Mode_IN_FLOATING ;//entrada flotante

(4) La inicialización de parámetros del puerto serie incluye principalmente: configuración de velocidad de transmisión (115200), 8 bits de datos, 1 bit de parada, sin bit de paridad, sin control de flujo de datos de hardware y modo transceptor. (5) Active la interrupción e inicialice el NVIC (este paso solo es necesario si es necesario activar la interrupción)

(6) Habilitar el puerto serie

(7) Función de procesamiento de interrupción de escritura

  • Pregunta 3: Características principales de USART

(1) Operación full-duplex (recepción de datos y envío de datos independientemente uno del otro);

(2) Durante la operación síncrona, el reloj maestro se puede sincronizar y el reloj esclavo también se puede sincronizar;

(3) generador de tasa de baudios de alta precisión independiente, que no ocupa el temporizador/contador;

(4) admite estructura de trama de datos en serie de 5, 6, 7, 8 y 9 bits de datos, 1 o 2 bits de parada;

(5) Generación e inspección de paridad respaldada por hardware;

(6) Detección de desbordamiento de datos;

(7) Detección de errores de trama;

(8) Filtro de ruido de detección y filtro de paso bajo digital que incluye bits de inicio falso

(9) Tres interrupciones completamente independientes, transmisión de TX completada, registro de datos de transmisión de TX vacío, recepción de RX completa;

(10) Admite el modo de comunicación de varias máquinas;

(11) Admite el modo de comunicación asíncrona de doble velocidad.

Escenarios de aplicación: GPS, Bluetooth, módulos 4G

5. I2C

Pregunta 1: Hay tres tipos de señales en el bus I2C en el proceso de transmisión de datos

(1) Señal de inicio: cuando SCL tiene un nivel alto, SDA salta de un nivel alto a un nivel bajo y comienza a transmitir datos.

(2) Señal final: cuando SCL tiene un nivel alto, SDA salta de un nivel bajo a un nivel alto y finaliza la transmisión de datos.

(3) Señal de respuesta: después de recibir los datos de 8 bits, el IC que recibe los datos envía un pulso específico de bajo nivel al IC que envía los datos, lo que indica que se han recibido los datos. Después de que la CPU envía una señal a la unidad controlada, espera a que la unidad controlada envíe una señal de respuesta.Después de recibir la señal de respuesta, la CPU decide si continúa transmitiendo la señal de acuerdo con la situación real. Si no se recibe ninguna señal de respuesta, se considera que la unidad controlada está defectuosa.

Pregunta 2: Cómo configurar el modo de hardware del puerto de modo de host I2C: salida multiplex de drenaje abierto, ni pull-up ni pull-down.

(Modo rápido: 400 Kbit/s) Simulación de software: salida push-pull, configurar resistencia pull-up.

Pregunta 3: ¿Mecanismo de arbitraje I2C? Mecanismo de arbitraje I2C, comprenda la línea "y" (Wired-AND), está claro de un vistazo. En pocas palabras, sigue el principio de "prioridad de nivel bajo", es decir, quien envíe el nivel bajo primero tomará el control del bus.

Modo de hardware: se establece por la tasa de comunicación

/* STM32 I2C 快速模式 */
#define I2C_Speed 400000

/* 通信速率 */
I2C_InitStructure.I2C_ClockSpeed = I2C_Speed;

Simulación de software: ¿Cómo calcular la tasa de comunicación sin configurarla?

A través de la función de retardo de bit de bus I2C i2c_Delay:

static void i2c_Delay(void)
{
  uint8_t i;

  /*
     下面的时间是通过安富莱AX-Pro逻辑分析仪测试得到的。
    CPU主频72MHz时,在内部Flash运行, MDK工程不优化
    循环次数为10时,SCL频率 = 205KHz
    循环次数为7时,SCL频率 = 347KHz, SCL高电平时间1.5us,SCL低电平时间2.87us
     循环次数为5时,SCL频率 = 421KHz, SCL高电平时间1.25us,SCL低电平时间2.375us

    IAR工程编译效率高,不能设置为7
  */
  for (i = 0; i < 10; i++);
}

Escenarios de aplicación: PMIC, acelerómetro, giroscopio

Seis, SPI

  • Pregunta 1: ¿Cuántos cables necesita SPI?

La interfaz SPI generalmente usa 4 cables para la comunicación: entrada de datos del dispositivo maestro MISO, salida de datos del dispositivo esclavo. Salida de datos del dispositivo maestro MOSI, entrada de datos del dispositivo esclavo. Señal de reloj SCLK, generada por el dispositivo maestro. Señal de selección de chip del dispositivo esclavo CS, controlada por el dispositivo maestro.

  • Pregunta 2: ¿Cuatro modos de comunicación SPI?

SPI tiene cuatro modos de trabajo. La diferencia entre cada modo de trabajo es que SCLK es diferente, y el trabajo específico está determinado por CPOL y CPHA.

(1) CPOL: (Polaridad del reloj), polaridad del reloj. El CPOL de SPI indica si el valor de nivel de SCLK es de nivel bajo 0 o de nivel alto 1 cuando SCLK está inactivo.

CPOL=0, el nivel cuando el reloj está inactivo es de nivel bajo, por lo que cuando SCLK es válido, es de nivel alto, que es el llamado alto activo;

CPOL=1, el nivel cuando el reloj está inactivo es de nivel alto, por lo que cuando SCLK es válido, es de nivel bajo, que es el llamado bajo activo;

(2) CPHA: (Clock Phase), fase de reloj.

La fase corresponde a qué borde (borde) se encuentra el muestreo de datos, ya sea el primer borde o el segundo borde, 0 corresponde al primer borde y 1 corresponde al segundo borde.

CPHA=0, significa el primer borde:

Para CPOL=0, cuando el nivel de inactividad es bajo, el primer flanco es de bajo a alto, por lo que es un flanco ascendente;

Para CPOL=1, cuando el nivel de inactividad es alto, el primer flanco es de mayor a menor, por lo que es un flanco descendente;

CPHA=1, indicando el segundo borde:

Para CPOL=0, cuando el nivel de inactividad es bajo, el segundo borde es de alto a bajo, por lo que es un borde descendente; para CPOL=1, cuando el nivel de inactividad es alto, el primer borde es de bajo a bajo y luego a alto, por lo que es un flanco ascendente;

  • Pregunta 3: ¿Cómo determinar qué modo usar?

(1) Primero confirme la polaridad SCLK requerida por el esclavo, si está en bajo potencial o alto potencial cuando no está funcionando, y así confirme que CPOL es 0 o 1. Mirando el diagrama esquemático, configuramos el estado inactivo del reloj síncrono en serie para que sea alto, por lo que elegimos SPI_CPOL_High. Es decir, CPOL es 1.

(2) A partir del diagrama de tiempo en la hoja de datos del chip esclavo, confirme si el chip esclavo recopila datos en el flanco descendente de SCLK o en el flanco ascendente de SCLK.

Traducir: Se accede a W25Q32JV a través de un bus compatible con SPI, que incluye cuatro señales: reloj en serie (CLK), selección de chip (/CS), entrada de datos en serie (DI) y salida de datos en serie (DO).

Las instrucciones SPI estándar utilizan el pin de entrada DI para escribir en serie instrucciones, direcciones o datos en el dispositivo en el flanco ascendente de CLK. El pin de salida DO se usa para leer datos o estado del dispositivo en el borde descendente de CLK. Se admite la operación del bus SPI en los modos 0 (0,0) y 3 (1,1).

El modo 0 y el modo 3 se enfocan en el estado normal de la señal CLK cuando el extremo maestro del bus SPI está en estado de espera y los datos no se transmiten al flash serial. Para el Modo 0, la señal CLK normalmente es baja en los flancos ascendentes y descendentes de /CS. Para el Modo 3, la señal CLK normalmente es alta en los flancos ascendentes y descendentes de /CS.

Dado que el estado inactivo del reloj síncrono en serie es alto, aquí elegimos el segundo borde de transición, así que elija SPI_CPHA_2Edge. Es decir, CPHA es 1.

Es decir, elegimos el modo 3(1,1).

Escenario de aplicación: SPI Flash, W25Q32 capacidad de memoria 32Mb (4M x 8), concretamente 4M byte

 Información a través del tren: ruta de aprendizaje de la tecnología del código fuente del kernel de Linux + video tutorial del código fuente del kernel

Aprendizaje a través del entrenamiento: código fuente del kernel de Linux, ajuste de memoria, sistema de archivos, gestión de procesos, controlador de dispositivo/pila de protocolo de red

7. PUEDE

  • Pregunta 1: Resumen de CAN Introduzca el controlador CAN para juzgar el nivel del bus según la diferencia de potencial entre CAN_L y CAN_H. El nivel de bus se divide en nivel dominante y nivel recesivo, y la proporción de los dos es uno de ellos. El emisor envía un mensaje al receptor cambiando el nivel del bus. Pregunta 2: ¿Pasos de configuración de inicialización de CAN? (1) Configure la función de multiplexación de los pines relevantes, habilite el reloj CAN (2) Configure el modo de trabajo CAN y la velocidad en baudios, etc. ) Configure el filtro Pregunta 3: PUEDE enviar formato de datos

CanTxMsg TxMessage;TxMessage.StdId=0x12; //标准标识符
TxMessage.ExtId=0x12; // 设置扩展标示符
TxMessage.IDE=CAN_Id_Standard; // 标准帧
TxMessage.RTR=CAN_RTR_Data; // 数据帧
TxMessage.DLC=len; // 要发送的数据长度 发送8个字节
for(i=0;i<len;i++)
  TxMessage.Data[i]=msg[i]; //数据

8. DMA

  • Pregunta 1: ¿Introducción de DMA?

El acceso directo a memoria (DMA) se utiliza para proporcionar transferencias de datos de alta velocidad entre periféricos y memoria, o entre memoria y memoria. Los datos se pueden mover rápidamente a través de DMA sin intervención de la CPU, lo que libera recursos de la CPU para otras operaciones.

  • Pregunta 2: ¿Cuántos modos de transferencia DMA hay?

DMA_Mode_Circular modo circular DMA_Mode_Normal modo de caché normal

Escenarios de aplicación: GPS, Bluetooth, ambos usan adquisición circular, modo DMA_Mode_Circular.

Una función más importante es obtener el tamaño de datos restante actual y restar el tamaño de datos restante actual del tamaño de mejora de recepción establecido para obtener el tamaño de datos de recepción actual.

Nueve, interrupción

  • Pregunta 1: ¿Describa el flujo de procesamiento de interrupciones? (1) Inicialice la interrupción, configure el modo de disparo como flanco ascendente/flanco descendente/gatillo de doble flanco. (2) Activar una interrupción e ingresar a la función de servicio de interrupción

  • Pregunta 2: ¿Cuántas interrupciones externas admite el controlador de interrupciones STM32?

El controlador de interrupciones de STM32 admite 19 solicitudes de eventos/interrupciones externas:

De la figura, los pines GPIO GPIOx.0~GPIOx.15 (x=A, B, C, D, E, F, G) corresponden a las líneas de interrupción 0 ~ 15 respectivamente.

Las otras cuatro líneas EXTI están conectadas de la siguiente manera: ● La línea EXTI 16 está conectada a la salida PVD ● La línea EXTI 17 está conectada al evento de alarma RTC ● La línea EXTI 18 está conectada al evento de activación USB ● La línea EXTI 19 está conectada al evento Evento de activación de Ethernet (solo para productos interconectados) Lista de funciones de servicio de interrupción: A las interrupciones externas del puerto IO solo se les asignan 7 vectores de interrupción en la tabla de vectores de interrupción, es decir, solo se pueden usar 7 funciones de servicio de interrupción. EXTI0_IRQHandlerEXTI1_IRQHandlerEXTI2_IRQHandlerEXTI3_IRQHandlerEXTI4_IRQHandlerEXTI9_5_IRQHandler

EXTI15_10_IRQHandler

Diez, STM32 tiene varias fuentes de reloj

STM32 tiene 5 fuentes de reloj: HSI, HSE, LSI, LSE, PLL.

①, HSI es un reloj interno de alta velocidad, oscilador RC, la frecuencia es de 8 MHz, la precisión no es alta.

②, HSE es un reloj externo de alta velocidad, que se puede conectar a un resonador de cuarzo/cerámica o a una fuente de reloj externa, y el rango de frecuencia es de 4 MHz a 16 MHz.

③.LSI es un reloj interno de baja velocidad, un oscilador RC con una frecuencia de 40 kHz, que proporciona un reloj de baja potencia.

④, LSE es un reloj externo de baja velocidad, conectado a un cristal de cuarzo con una frecuencia de 32.768kHz.

⑤.PLL es la salida del multiplicador de bucle de bloqueo de fase, y su fuente de entrada de reloj se puede seleccionar como HSI/2, HSE o HSE/2. El multiplicador de frecuencia se puede seleccionar de 2 a 16 veces, pero la frecuencia de salida máxima no debe exceder los 72 MHz.

11. ¿Cómo se redacta la tarea de RTOS? ¿Cómo cortar esta tarea?

respuesta:

Una tarea también se denomina hilo. UCOS tiene un mecanismo de programación de tareas, que se programa de acuerdo con la prioridad de las tareas. Uno es una interrupción de hardware, luego el sistema empujará las variables relevantes de la tarea actual a la pila, luego ejecutará la rutina de servicio de interrupción y regresará después de que se complete la ejecución. El otro es el cambio entre tareas. El método utilizado es tarea programación, y cada tarea tiene su propia La pila, la programación también se inserta en la pila, y luego se ejecuta otro programa, y ​​luego se extrae y se devuelve.

No todas las tareas se ejecutan a su vez de acuerdo con el orden de prioridad, pero las tareas de alta prioridad se ejecutan exclusivamente, a menos que renuncien voluntariamente a la ejecución; de lo contrario, las tareas de baja prioridad no se pueden adelantar y las tareas de alta prioridad se pueden liberar a tareas de baja prioridad. para recuperar el uso de la CPU. Por lo tanto, se debe prestar atención a la inserción de retrasos de espera entre las tareas de ucos, de modo que los ucos se puedan cambiar para permitir que se ejecuten las tareas de baja prioridad.

12. ¿Cuáles son los métodos de comunicación entre tareas en UCOSII?

respuesta:

En UCOSII, se utilizan semáforos, buzones (buzones de mensajes) y colas de mensajes, que se denominan eventos, para implementar la comunicación entre tareas, así como variables globales. El semáforo se utiliza para: 1. Controlar el derecho de uso de los recursos compartidos (satisfacer las condiciones de exclusión mutua)

2. Marcar la ocurrencia de un tiempo determinado

3. Sincroniza el comportamiento de 2 tareas

Ejemplo de aplicación: semáforo de exclusión mutua

Como condición de exclusión mutua, el semáforo se inicializa en 1.

Para lograr el objetivo: para llamar al puerto serie para enviar un comando, debe esperar a que se devuelva el carácter "OK" antes de enviar el siguiente comando. Cada tarea puede usar esta función de envío, ¡no pueden ocurrir conflictos!

cola de mensajes:

concepto:

(1) La cola de mensajes es en realidad una matriz de buzones

(2) Tanto la tarea como la interrupción pueden colocar un mensaje en la cola y la tarea puede obtener el mensaje de la cola de mensajes.

(3) El mensaje que ingresa primero a la cola se pasa a la tarea (FIFO).

(4) Cada cola de mensajes tiene una lista de espera de tareas en espera de mensajes. Si no hay ningún mensaje en la columna de mensajes, las tareas en espera de mensajes se suspenderán hasta que llegue el mensaje.

Escenario de aplicación: el búfer de recepción en el programa de recepción del puerto serie.

Almacenar eventos externos.

13. El proyecto utiliza un protocolo personalizado, ¿cuál es la estructura?

respuesta:

La estructura es: encabezado de trama (SDTC) + longitud de trama + comando + número de serie + datos + verificación CRC.

14. ¿Cuál es la diferencia entre uCOSII y Linux?

respuesta:

μC/OS-II está especialmente diseñado para aplicaciones integradas en computadoras. μC/OS-II tiene las características de alta eficiencia de ejecución, tamaño reducido, excelente rendimiento en tiempo real y gran escalabilidad. El núcleo mínimo se puede compilar a 2 KB. μC/OS-II se ha portado a casi todas las CPU conocidas.

Linux es gratuito, seguro, estable y tiene una amplia gama de aplicaciones.Es ampliamente utilizado en sistemas integrados, servidores y computadoras domésticas.

μC/OS-II Linux son adecuados para su uso en sistemas integrados. Pero μC/OS-II está especialmente diseñado para sistemas integrados, por lo que el resultado es que se ejecuta de manera más eficiente y consume menos recursos.

Linux se puede utilizar como servidor y la tasa de uso es alta. Aunque linux no está desarrollado específicamente para servidores, su código fuente es abierto y se puede modificar por completo, por lo que la diferencia entre ambos no es grande.La versión de distribución más importante, redhat linux, es un sistema que se usa mucho en servidores. .

15. Código de confirmación de Git

Pregunta: ¿Proceso de código de confirmación de Git?

respuesta:

1. Muestre los archivos modificados en la ruta de trabajo:

$ git status

2. Ingrese al directorio del archivo de modificación:

$cd -

3. Muestra la diferencia con el último archivo de versión enviado:

$ git diff

4. Agregue todos los cambios actuales al próximo envío:

$ git add .

5. Agregue descripciones de funciones relevantes (use esto para el primer envío)

$ git commit -s

También se debe tener en cuenta:

Fuction: La función de modificar el código Ticket: Correspondiente al número de Bug

Nota: Cada carpeta debe mencionarse nuevamente.

6. Ver el código enviado

$ tig .

7. ¡No modifique el registro de envío publicado!(Utilice esto para futuros envíos)

$git commit --amend

En modo comando:

:x (escribir en el archivo y salir)

8. Empuje al servidor

$ git push origin HEAD:refs/for/master

Dieciséis, comparación entre ucosii y ucosiii y freeRTOS

  • Pregunta 1: ¿Cómo se comparan los tres?

respuesta:

Comparación entre ucosii y freeRTOS:

(1) freeRTOS solo admite TCP/IP, mientras que uCOSii admite muchas extensiones, como FS, USB, GUI, CAN, etc. (Usamos CAN para tbox, por lo que elegimos uCOSii) (2) freeRTOS es una aplicación comercial gratuita. El uso comercial de uCOSii está sujeto a pago. (3) FreeRTOS de comunicación entre tareas solo admite colas, semáforos y mutexes. Además de estos, uCOSii también admite grupos de indicadores de eventos y buzones.

(4) En teoría, freeRTOS puede administrar más de 64 tareas, mientras que uCOSii solo puede administrar 64 tareas.

Comparación entre ucosii y ucosiii:

Entonces, ¿cuáles son las diferencias entre μC/OS-II y μC/OS-III? Lo que se ha agregado, vemos que los cambios aún son muy grandes.

Una es que solo había 0~63 prioridades en el pasado, y las prioridades no se pueden repetir. Ahora se permite que varias tareas usen la misma prioridad, y en la misma prioridad, se admite el método de programación de intervalos de tiempo;

El segundo es permitir a los usuarios configurar dinámicamente los recursos del kernel del sistema operativo en tiempo real durante la ejecución del programa, como tareas, pilas de tareas, semáforos, grupos de indicadores de eventos, colas de mensajes, números de mensajes, semáforos mutex, división de bloques de memoria y temporizadores, que se puede cambiar mientras el programa se está ejecutando. De esta forma, los usuarios pueden evitar el problema de una asignación de recursos insuficiente durante la compilación del programa.

En cuanto a la reutilización de recursos, también se han realizado algunas mejoras. En μC/OS-II, el número máximo de tareas es 64, y después de la versión 2.82, es 256. En μC/OS-III, los usuarios pueden tener cualquier número de tareas, cualquier número de semáforos, banderas de exclusión mutua, listas de mensajes , temporizadores y tamaños de bloque de memoria asignados arbitrariamente están limitados solo por la cantidad de RAM disponible para la CPU del usuario. Esta es también una gran extensión.

(Pregunta: Sr. Shao, ¿este número se fija al inicio o se establece aleatoriamente después del inicio?) Se puede definir libremente durante la configuración, siempre que su RAM sea lo suficientemente grande.

El cuarto punto es que se han añadido muchas funciones, siempre hay más y más funciones, puedes echarles un vistazo. Resulta que estas funciones no están disponibles en μC/OS-II.

Diecisiete, modo de bajo consumo de energía

  • Pregunta 1: ¿Cuántos modos de bajo consumo hay? ¿Cuál es el método de despertar?

respuesta:

18. Arquitectura del Internet de las Cosas

  • Pregunta 1: ¿De cuántas capas es la arquitectura del Internet de las Cosas?, ¿De qué funciones se encarga cada capa?

respuesta:

Dividido en tres capas, el Internet de las cosas se puede dividir en capa de percepción, capa de red y capa de aplicación de la arquitectura.

(1) Capa de percepción: responsable de la recopilación y transmisión de información entre objetos. Las tecnologías de recopilación de información incluyen sensores, códigos de barras y códigos bidimensionales, tecnología de radiofrecuencia RFID, audio y video y otra información multimedia.

La transmisión de información incluye redes de sensores, como la tecnología de transmisión de datos a larga distancia, la tecnología de redes autoorganizadas, la tecnología de procesamiento de información colaborativa y la tecnología de middleware de recopilación de información.

La capa de percepción es la capacidad central para realizar la percepción integral de Internet de las cosas. Es una parte de Internet de las cosas que necesita avances en tecnologías clave, estandarización e industrialización. Cuestiones de costo y costo.

(2) Capa de red: utiliza redes inalámbricas y cableadas para codificar, autenticar y transmitir los datos recopilados. La red de comunicación móvil ampliamente cubierta es la infraestructura para realizar el Internet de las cosas. Es la red más estandarizada e industrializada entre las tres capas. de la Internet de las Cosas La clave para la parte más capaz y madura es optimizar y mejorar las características de la aplicación de la Internet de las Cosas para formar una red de detección colaborativa.

(3) Capa de aplicación: proporcionar aplicaciones ricas basadas en Internet de las cosas es el objetivo fundamental del desarrollo de Internet de las cosas. Combinar la tecnología de Internet de las cosas con las necesidades de informatización de la industria para lograr una amplia gama de soluciones de aplicaciones inteligentes. conjuntos, la clave radica en la integración de la industria, el desarrollo y la utilización de recursos de información, soluciones de alta calidad y bajo costo, garantía de seguridad de la información y desarrollo de modelos de negocios efectivos.

diecinueve, manejo de memoria

  • Pregunta 1: ¿Cuáles son los métodos de gestión de memoria en UCOS?

respuesta:

El sistema administra la partición de memoria a través del bloque de control de memoria asociado con la partición de memoria.

Las funciones de gestión de la memoria dinámica son:

Crear función de partición de memoria dinámica OSMemCreate(); solicitar función de bloque de memoria OSMemGet();

Liberar función de bloque de memoria OSMemPut();

20. ¿Cuáles son los estados de tareas en Ucos? ¿Un gráfico de la relación entre los estados de las tareas?

respuesta:

Hay 5 estados:

Estado de suspensión, estado listo, estado en ejecución, estado de espera (esperando que ocurra un evento) y estado de servicio de interrupción.

5 relaciones de transición de estado de tareas UCOSII:

21. CDA

Describa brevemente las características funcionales del sistema ADC de STM32 (1) resolución de 12 bits (2) calibración automática (3) alineación de datos programable (los resultados de conversión admiten almacenamiento alineado a la izquierda o a la derecha en registros de datos de 16 bits) (4) registro único y continuo Modo de conversión

22. Reloj del sistema

  • Describa brevemente el proceso básico para configurar el reloj del sistema

(1) Encienda HSE, espere a que esté listo, configure Flash para esperar a que funcione. (2) Configure los coeficientes de división de frecuencia de AHB, APB1 y APB2 para determinar la relación entre ellos y el reloj del sistema. (3) Configure el registro CFGR para determinar la fuente del reloj y el factor de multiplicación del PLL (HSE externo 8M*9 veces = 72MHz).

(4) Habilite el PLL y cambie la fuente del reloj del sistema al PLL.

Veintitrés, procesamiento HardFault_Handler

  • Pregunta 1: Causas

(1) Operación fuera de los límites del arreglo; (2) Desbordamiento de memoria, acceso fuera de los límites; (3) Desbordamiento de pila, fuga del programa; (4) Error de procesamiento de interrupción;

  • Pregunta 2: ¿Cómo lidiar con eso?

(1) Busque la reasignación de direcciones de HardFault_Handler en startup_stm32f10x_cl.s y vuelva a escribirla para que salte a la función HardFaultHandle.

(2) Imprima y verifique los registros R0, R1, R2, R3, R12, LR, PC, PSR.

(3) Ver el grupo de registro de estado de falla (SCB->CFSR y SCB->HFSR)

24. Método de síntesis de voz TTS

  • Pregunta 1: ¿Qué método usa la voz sim7600 TTS?

respuesta:

(1) Sintetizar sonido usando codificación Unicode

EN+CTTS=1”, 6B228FCE4F7F75288BED97F3540862107CFB7EDF”

El contenido es "Bienvenido al sistema de síntesis de voz". El módulo envía y recibe mensajes de texto en chino con codificación Unicode, por lo que es fácil leer los mensajes de texto;

(2) Ingrese el texto directamente, los caracteres comunes adoptan el código ASIIC y los caracteres chinos adoptan el código GBK.

AT+CTTS=2,"Bienvenido al sistema de síntesis de voz"

25. Temporizador

  • Se sabe que el reloj del sistema de STM32 es de 72 MHz, ¿cómo configurar los registros relevantes para lograr una sincronización de 20 ms?

respuesta:

A través de SysTick_Config(SystemCoreClock / OS_TICKS_PER_SEC))//temporizador de 1 ms

en:

uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz; /*!< Frecuencia de reloj del sistema (reloj central) */ #define SYSCLK_FREQ_72MHz 72000000 #define OS_TICKS_PER_SEC 1000 /* Establece el número de tics en un segundo

Si necesita 20 ms, puede configurar una variable global y establecer el valor inicial en 20. De esta manera, cada sysstick se interrumpe una vez, y la variable global se reduce en 1 y se reduce a 0, es decir, el sysstick se interrumpe 20 veces, y el tiempo es: 1ms*20 =20ms. Así se consigue una temporización de 20ms.

Veintiséis, máquina de estado

  • Pregunta: ¿Qué máquina de estado se utiliza?

respuesta:

(Inglés: Máquina de estados finitos, FSM), también conocida como autómata de estados finitos, denominada máquina de estados.

Suponga que la transición de estado de la máquina de estado se muestra en la siguiente tabla:

Implementación: (usando la instrucción switch)

//横着写
void event0func(void)
{
    switch(cur_state)
    {
        case State0:
             action0;
             cur_state = State1;
            break;
         case State1:
             action1;
             cur_state = State2;
            break;
         case State2:
             action1;
             cur_state = State0;
            break;
        default:break;
    }
}

void event1func(void)
{
    switch(cur_state)
    {
        case State0:
             action4;
             cur_state = State1;
             break;
        default:break;
    }
}

void event2func(void)
{
    switch(cur_state)
    {
        case State0:
             action5;
             cur_state = State2;
            break;
         case State1:
             action6;
             cur_state = State0;
            break;
        default:break;
    }
}

veintisiete, selección de dispositivo

¿STM32F407 VS STM32F103 función principal y comparación de recursos?

respuesta:

 

Supongo que te gusta

Origin blog.csdn.net/youzhangjing_/article/details/131536091
Recomendado
Clasificación