Resuma os pontos de conhecimento da entrevista incorporada STM32

1. Qual é a diferença entre STM32F1 e F4?

Núcleos diferentes: F1 é o núcleo Cortex-M3, F4 é o núcleo Cortex-M4; a frequência principal é diferente: a frequência principal F1 é 72MHz, a frequência principal F4 é 168MHz; O design é mais rico e mais poderoso que o F1, como taxa de inversão GPIO, configuração do resistor pull-up e pull-down, precisão do ADC, etc.; tamanho da memória: F1 SRAM interno máximo de 64K, F4 tem 192K (112+64+16).

2. Apresente o processo de inicialização do STM32

Por meio da configuração do pino de inicialização, procure o endereço inicial para inicializar o ponteiro da pilha __initial_sp aponta para o programa de redefinição Reset_Hander define a interrupção de exceção HardFault_Handler define o relógio do sistema SystemInit chama a função da biblioteca C _main

3. Apresente o GPIO

GPIO 8 modos de trabalho (gpio_init.GPIO_Mode):

(1) entrada analógica GPIO_Mode_AIN

(2) entrada flutuante GPIO_Mode_IN_FLOATING

(3) Entrada suspensa GPIO_Mode_IPD

(4) Entrada pull-up GPIO_Mode_IPU

(5) Saída de dreno aberto GPIO_Mode_Out_OD

(6) Saída push-pull GPIO_Mode_Out_PP

(7) saída de dreno aberto multiplexada GPIO_Mode_AF_OD

(8) GPIO_Mode_AF_PP Multiplexing push-pull output APB2 é responsável por AD, I/O, TIM avançado, porta serial 1.

APB1 é responsável por DA, USB, SPI, I2C, CAN, porta serial 2345, TIM comum, PWR

4. UART

  • Questão 1: Introdução à comunicação serial

Comunicação síncrona: I2C half duplex, SPI full duplex

Comunicação assíncrona: RS485 half duplex, RS232 full duplex

  • Pergunta 2: Configuração da porta serial

As etapas gerais da configuração da porta serial podem ser resumidas nas seguintes etapas:

(1) Ativação do relógio da porta serial, ativação do relógio GPIO (2) Redefinição da porta serial (3) Modo da porta GPIO Defina o modo de trabalho GPIO de TX para: GPIO_Mode_AF_PP; //O modo de trabalho GPIO da saída push-pull multiplexada RX é: GPIO_Mode_IN_FLOATING ; // entrada flutuante

(4) A inicialização do parâmetro da porta serial inclui principalmente: configuração da taxa de transmissão (115200), 8 bits de dados, 1 bit de parada, sem bit de paridade, sem controle de fluxo de dados de hardware e modo transceptor. (5) Ligue a interrupção e inicialize o NVIC (este passo só é necessário se a interrupção precisar ser ligada)

(6) Habilite a porta serial

(7) Função de processamento de interrupção de gravação

  • Questão 3: Principais características do USART

(1) Operação full-duplex (receber dados e enviar dados independentemente um do outro);

(2) Durante a operação síncrona, o relógio mestre pode ser sincronizado e o relógio escravo também pode ser sincronizado;

(3) Gerador independente de taxa de transmissão de alta precisão, que não ocupa o temporizador/contador;

(4) Suporta estrutura de quadro de dados seriais de 5, 6, 7, 8 e 9 bits de dados, 1 ou 2 bits de parada;

(5) Geração e inspeção de paridade suportadas por hardware;

(6) Detecção de estouro de dados;

(7) Detecção de erro de quadro;

(8) Filtro de ruído de detecção e filtro passa-baixa digital, incluindo bits de início falso

(9) Três interrupções completamente independentes, transmissão TX concluída, registro de dados de transmissão TX vazio, recepção RX concluída;

(10) Suporta modo de comunicação multi-máquina;

(11) Suporta modo de comunicação assíncrona de velocidade dupla.

Cenários de aplicação: GPS, Bluetooth, módulos 4G

5. I2C

Questão 1: Existem três tipos de sinais no barramento I2C no processo de transmissão de dados

(1) Sinal inicial: Quando SCL está em nível alto, SDA salta de nível alto para nível baixo e começa a transmitir dados.

(2) Sinal final: Quando SCL está em nível alto, SDA salta do nível baixo para o nível alto e a transmissão de dados termina.

(3) Sinal de resposta: Após receber os dados de 8 bits, o IC que recebe os dados envia um pulso específico de baixo nível para o IC que envia os dados, indicando que os dados foram recebidos. Depois que a CPU envia um sinal para a unidade controlada, ela espera que a unidade controlada envie um sinal de resposta.Após receber o sinal de resposta, a CPU julga se deve continuar a transmitir o sinal de acordo com a situação real. Se nenhum sinal de resposta for recebido, considera-se que a unidade controlada está com defeito.

Pergunta 2: Como configurar o modo de hardware da porta do modo host I2C: saída de dreno aberto multiplex, nem pull-up nem pull-down.

(Modo rápido: 400 Kbit/s) Simulação de software: saída push-pull, configuração do resistor pull-up.

Pergunta 3: Mecanismo de arbitragem I2C? Mecanismo de arbitragem I2C, entenda a linha "e" (Wired-AND), é claro à primeira vista. Simplificando, segue o princípio de "prioridade de nível baixo", ou seja, quem enviar primeiro o nível baixo assumirá o controle do barramento.

Modo de hardware: é definido pela taxa de comunicação

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

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

Simulação de software: como calcular a taxa de comunicação sem configurá-la?

Através da função de atraso de bit do barramento 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++);
}

Cenários de aplicação: PMIC, acelerômetro, giroscópio

Seis, SPI

  • Pergunta 1: De quantos fios o SPI precisa?

A interface SPI geralmente usa 4 fios para comunicação: entrada de dados do dispositivo mestre MISO, saída de dados do dispositivo escravo. MOSI Saída de dados do dispositivo mestre, entrada de dados do dispositivo escravo. Sinal de clock SCLK, gerado pelo dispositivo mestre. Sinal de seleção de chip do dispositivo CS Slave, controlado pelo dispositivo mestre.

  • Pergunta 2: Quatro modos de comunicação SPI?

O SPI tem quatro modos de trabalho. A diferença entre cada modo de trabalho é que o SCLK é diferente e o trabalho específico é determinado pelo CPOL e CPHA.

(1) CPOL: (Polaridade do Relógio), polaridade do relógio. O CPOL do SPI indica se o valor do nível de SCLK é baixo nível 0 ou alto nível 1 quando SCLK está ocioso.

CPOL=0, o nível quando o clock está ocioso é nível baixo, então quando SCLK é válido, é nível alto, que é o chamado ativo-alto;

CPOL=1, o nível quando o clock está ocioso é nível alto, então quando SCLK é válido, é nível baixo, que é o chamado ativo-baixo;

(2) CPHA: (Clock Phase), fase do clock.

A fase corresponde a qual borda (borda) a amostragem de dados está, se é a primeira borda ou a segunda borda, 0 corresponde à primeira borda e 1 corresponde à segunda borda.

CPHA=0, significa a primeira aresta:

Para CPOL=0, quando ocioso é nível baixo, a primeira borda é de baixa para alta, então é uma borda ascendente;

Para CPOL=1, quando ocioso é nível alto, a primeira borda é de alta para baixa, portanto é uma borda descendente;

CPHA=1, indicando a segunda aresta:

Para CPOL=0, quando ocioso é nível baixo, a segunda borda é de alto para baixo, então é uma borda descendente; para CPOL=1, quando ocioso é nível alto, a primeira borda é de baixo para baixo para alto, então é uma borda ascendente;

  • Pergunta 3: Como determinar qual modo usar?

(1) Primeiro confirme a polaridade SCLK exigida pelo escravo, se está em baixo potencial ou alto potencial quando não está funcionando e, assim, confirme se CPOL é 0 ou 1. Observando o diagrama esquemático, definimos o estado ocioso do relógio síncrono serial como alto, então escolhemos SPI_CPOL_High. Ou seja, CPOL é 1.

(2) A partir do diagrama de tempo na folha de dados do chip escravo, confirme se o chip escravo coleta dados na borda descendente do SCLK ou na borda ascendente do SCLK.

Traduzindo: W25Q32JV é acessado através de um barramento compatível com SPI, incluindo quatro sinais: relógio serial (CLK), seleção de chip (/CS), entrada de dados serial (DI) e saída de dados serial (DO).

As instruções SPI padrão usam o pino de entrada DI para gravar instruções, endereços ou dados em série no dispositivo na borda ascendente do CLK. O pino de saída DO é usado para ler dados ou status do dispositivo na borda descendente do CLK. A operação do barramento SPI nos modos 0 (0,0) e 3 (1,1) é suportada.

O modo 0 e o modo 3 concentram-se no estado normal do sinal CLK quando a extremidade mestre do barramento SPI está no estado de espera e os dados não são transmitidos para o Flash serial. Para o Modo 0, o sinal CLK é normalmente baixo nas bordas descendente e ascendente de /CS. Para o Modo 3, o sinal CLK é normalmente alto nas bordas descendente e ascendente de /CS.

Como o estado ocioso do relógio síncrono serial é alto, aqui escolhemos a segunda borda de transição, então escolha SPI_CPHA_2Edge. Ou seja, CPHA é 1.

Ou seja, escolhemos o modo 3(1,1).

Cenário de aplicação: SPI Flash, capacidade de memória W25Q32 32Mb (4M x 8), ou seja, 4M byte

 Informações por meio do trem: rota de aprendizado da tecnologia de código-fonte do kernel do Linux + tutorial em vídeo do código-fonte do kernel

Learning through train: Linux kernel code memory tuning file system process management device driver/network protocol stack

7. PODE

  • Questão 1: Resumo CAN Apresente o controlador CAN para avaliar o nível do barramento de acordo com a diferença de potencial entre CAN_L e CAN_H. O nível do barramento é dividido em nível dominante e nível recessivo, e a razão entre os dois é um deles. O remetente envia uma mensagem ao destinatário alterando o nível do barramento. Pergunta 2: Etapas de configuração de inicialização CAN? (1) Configure a função de multiplexação dos pinos relevantes, habilite o relógio CAN (2) Defina o modo de trabalho CAN e a taxa de transmissão, etc. (modo loopback de inicialização CAN, taxa de transmissão 500Kbps) (3 ) Defina o filtro Pergunta 3: CAN enviar formato de dados

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

  • Pergunta 1: Introdução ao DMA?

O acesso direto à memória (DMA) é usado para fornecer transferências de dados em alta velocidade entre periféricos e memória ou entre memória e memória. Os dados podem ser movidos rapidamente através do DMA sem intervenção da CPU, o que libera recursos da CPU para outras operações.

  • Pergunta 2: Quantos modos de transferência DMA existem?

DMA_Mode_Circular modo circular DMA_Mode_Normal modo de cache normal

Cenários de aplicação: GPS, Bluetooth, ambos usam aquisição circular, modo DMA_Mode_Circular.

Uma função mais importante é obter o tamanho de dados restante atual e subtrair o tamanho de dados restante atual do tamanho de buff de recebimento definido para obter o tamanho de dados de recebimento atual.

Nove, interrupção

  • Questão 1: Descreva o fluxo de processamento da interrupção? (1) Inicialize a interrupção, defina o modo de disparo como borda de subida/borda de descida/gatilho de borda dupla. (2) Acionar uma interrupção e entrar na função de serviço de interrupção

  • Pergunta 2: Quantas interrupções externas o controlador de interrupção STM32 suporta?

O controlador de interrupção do STM32 suporta 19 solicitações externas de interrupção/evento:

Na figura, os pinos GPIO GPIOx.0~GPIOx.15 (x=A, B, C, D, E, F, G) correspondem às linhas de interrupção 0 ~ 15, respectivamente.

As outras quatro linhas EXTI são conectadas da seguinte forma: ● A linha EXTI 16 está conectada à saída PVD ● A linha EXTI 17 está conectada ao evento de alarme RTC ● A linha EXTI 18 está conectada ao evento de ativação USB ● A linha EXTI 19 está conectada ao Evento de despertar Ethernet (somente para produtos interconectados) Lista de funções de serviço de interrupção: As interrupções externas da porta IO são atribuídas apenas a 7 vetores de interrupção na tabela de vetores de interrupção, ou seja, apenas 7 funções de serviço de interrupção podem ser usadas. EXTI0_IRQHandlerEXTI1_IRQHandlerEXTI2_IRQHandlerEXTI3_IRQHandlerEXTI4_IRQHandlerEXTI9_5_IRQHandler

EXTI15_10_IRQHandler

Dez, STM32 tem várias fontes de relógio

O STM32 possui 5 fontes de relógio: HSI, HSE, LSI, LSE, PLL.

①, HSI é um relógio interno de alta velocidade, oscilador RC, a frequência é de 8MHz, a precisão não é alta.

②, HSE é um relógio externo de alta velocidade, que pode ser conectado a um ressonador de quartzo/cerâmica ou uma fonte de relógio externo, e a faixa de frequência é de 4MHz~16MHz.

③. LSI é um relógio interno de baixa velocidade, um oscilador RC com frequência de 40kHz, que fornece um relógio de baixa potência.

④, LSE é um relógio externo de baixa velocidade, conectado a um cristal de quartzo com frequência de 32,768kHz.

⑤. PLL é a saída do multiplicador de loop de bloqueio de fase e sua fonte de entrada de relógio pode ser selecionada como HSI/2, HSE ou HSE/2. O multiplicador de frequência pode ser selecionado de 2 a 16 vezes, mas a frequência máxima de saída não deve exceder 72MHz.

11. Como é escrita a tarefa do RTOS? Como cortar esta tarefa?

responder:

Uma tarefa também é chamada de thread. O UCOS possui um mecanismo de agendamento de tarefas, que é agendado de acordo com a prioridade das tarefas. Uma é uma interrupção de hardware, então o sistema irá colocar as variáveis ​​relevantes da tarefa atual na pilha, então executar a rotina de serviço de interrupção e retornar após a conclusão da execução. A outra é a alternância entre as tarefas. O método usado é task agendamento, e cada tarefa tem sua própria pilha, o agendamento também é colocado na pilha e, em seguida, outro programa é executado e, em seguida, exibido e retornado.

Nem todas as tarefas são executadas sucessivamente de acordo com a ordem de prioridade, mas tarefas de alta prioridade são executadas exclusivamente, a menos que desistam voluntariamente da execução, caso contrário, tarefas de baixa prioridade não podem ser antecipadas e tarefas de alta prioridade podem ser liberadas para tarefas de baixa prioridade Use o direito para recuperar o uso da CPU. Portanto, deve-se prestar atenção à inserção de atrasos de espera entre as tarefas ucos, de modo que o ucos possa ser desativado para permitir a execução de tarefas de baixa prioridade.

12. Quais são os métodos de comunicação entre as tarefas no UCOSII?

responder:

No UCOSII, semáforos, caixas de correio (caixas de correio de mensagens) e filas de mensagens, chamadas de eventos, são usados ​​para implementar a comunicação entre tarefas, bem como variáveis ​​globais. O semáforo é usado para: 1. Controlar o direito de usar recursos compartilhados (satisfazer condições de exclusão mútua)

2. Marque a ocorrência de um determinado horário

3. Sincronize o comportamento de 2 tarefas

Exemplo de aplicação: semáforo de exclusão mútua

Como condição de exclusão mútua, o semáforo é inicializado com 1.

Para atingir o objetivo: para chamar a porta serial para enviar um comando, deve-se aguardar o retorno do caractere "OK" antes de enviar o próximo comando. Cada tarefa pode usar esta função de envio, nenhum conflito pode ocorrer!

fila de mensagens:

conceito:

(1) A fila de mensagens é na verdade uma matriz de caixa de correio

(2) Tanto a tarefa quanto a interrupção podem colocar uma mensagem na fila, e a tarefa pode obter a mensagem da fila de mensagens.

(3) A mensagem que entra primeiro na fila é passada para a tarefa (FIFO).

(4) Cada fila de mensagens possui uma lista de espera de tarefas aguardando mensagens.Se não houver mensagem na coluna de mensagens, as tarefas aguardando mensagens serão suspensas até que a mensagem chegue.

Cenário de aplicação: o buffer de recebimento no programa de recebimento da porta serial.

Armazenar eventos externos.

13. O projeto utiliza um protocolo customizado, qual a estrutura?

responder:

A estrutura é: cabeçalho do quadro (SDTC) + comprimento do quadro + comando + número de série + dados + verificação CRC.

14. Qual é a diferença entre uCOSII e Linux?

responder:

O μC/OS-II foi especialmente projetado para aplicativos embarcados em computador. O μC/OS-II tem as características de alta eficiência de execução, tamanho pequeno, excelente desempenho em tempo real e forte escalabilidade. O kernel mínimo pode ser compilado para 2KB. O μC/OS-II foi portado para quase todas as CPUs conhecidas.

O Linux é gratuito, seguro, estável e possui uma ampla gama de aplicações, sendo amplamente utilizado em sistemas embarcados, servidores e computadores domésticos.

μC/OS-II Linux são adequados para uso em sistemas embarcados. Mas o μC/OS-II foi projetado especialmente para embutidos, portanto, o resultado é que ele funciona com mais eficiência e consome menos recursos.

O Linux pode ser usado como servidor e a taxa de uso é alta. Embora o linux não seja desenvolvido especificamente para servidores, seu código-fonte é aberto e pode ser totalmente modificado, de modo que a diferença entre os dois não seja grande. A versão de distribuição mais importante, redhat linux, é um sistema muito utilizado em servidores .

15. Código de commit do Git

Pergunta: Processo de código de commit do Git?

responder:

1. Exiba os arquivos modificados no caminho de trabalho:

$ git status

2. Digite o diretório do arquivo de modificação:

$cd -

3. Exiba a diferença do último arquivo de versão enviado:

$ git diff

4. Adicione todas as alterações atuais ao próximo envio:

$ git add .

5. Adicione descrições de função relevantes (use isso para o primeiro envio)

$ git commit -s

Também deve ser notado:

Função: A função de modificar o código Ticket: Correspondente ao número do Bug

Nota: Cada pasta deve ser mencionada novamente.

6. Visualize o código enviado

$ tig .

7. Não modifique o registro de envio publicado! (Use isso para envios futuros)

$git commit --amend

No modo de comando:

:x (escrever no arquivo e sair)

8. Empurre para o servidor

$ git push origin HEAD:refs/for/master

Dezesseis, comparação entre ucosii e ucosiii e freeRTOS

  • Pergunta 1: Como os três se comparam?

responder:

Comparação entre ucosii e freeRTOS:

(1) o freeRTOS suporta apenas TCP/IP, enquanto o uCOSii tem suporte para muitas extensões, como FS, USB, GUI, CAN, etc. (Usamos CAN para tbox, então escolhemos uCOSii) (2) freeRTOS é um aplicativo comercial gratuito. O uso comercial do uCOSii está sujeito a pagamento. (3) Comunicação entre tarefas O freeRTOS suporta apenas filas, semáforos e mutexes. Além desses, o uCOSii também oferece suporte a grupos de sinalizadores de eventos e caixas de correio.

(4) Teoricamente falando, o freeRTOS pode gerenciar mais de 64 tarefas, enquanto o uCOSii pode gerenciar apenas 64 tarefas.

Comparação entre ucosii e ucosiii:

Então, quais são as diferenças de μC/OS-II para μC/OS-III? O que foi adicionado, vemos que as mudanças ainda são muito grandes.

Uma é que havia apenas 0 ~ 63 prioridades no passado, e as prioridades não podem ser repetidas. Agora várias tarefas podem usar a mesma prioridade e, na mesma prioridade, o método de agendamento de fatia de tempo é suportado;

A segunda é permitir que os usuários configurem dinamicamente os recursos do kernel do sistema operacional em tempo real durante a execução do programa, como tarefas, pilhas de tarefas, semáforos, grupos de sinalizadores de eventos, filas de mensagens, números de mensagens, semáforos mutex, divisão de bloco de memória e temporizadores, que podem ser alterados durante a execução do programa. Desta forma, os usuários podem evitar o problema de alocação insuficiente de recursos durante a compilação do programa.

Em termos de reutilização de recursos, algumas melhorias também foram feitas. No μC/OS-II, o número máximo de tarefas é 64 e, após a versão 2.82, é 256. No μC/OS-III, os usuários podem ter qualquer número de tarefas, qualquer número de semáforos, sinalizadores de exclusão mútua, listas de mensagens , temporizadores e tamanhos de blocos de memória alocados arbitrariamente são limitados apenas pela quantidade de RAM disponível para a CPU do usuário. Este também é uma grande extensão.

(Pergunta: Sr. Shao, esse número é fixo na inicialização ou é definido aleatoriamente após a inicialização?) Ele pode ser definido livremente durante a configuração, desde que sua RAM seja grande o suficiente.

O quarto ponto é que muitas funções foram adicionadas. Sempre há mais e mais funções. Você pode dar uma olhada nelas. Acontece que essas funções não estão disponíveis no μC/OS-II.

Dezessete, modo de baixo consumo de energia

  • Pergunta 1: Quantos modos de baixo consumo de energia existem? Qual é o método de despertar?

responder:

18. Arquitetura da Internet das Coisas

  • Questão 1: Quantas camadas tem a arquitetura da Internet das Coisas? Por quais funções cada camada é responsável?

responder:

Dividida em três camadas, a Internet das Coisas pode ser dividida em camada de percepção, camada de rede e camada de aplicação da arquitetura

(1) Camada de percepção: responsável pela coleta de informações e transmissão de informações entre objetos.As tecnologias de coleta de informações incluem sensores, códigos de barras e códigos bidimensionais, tecnologia de radiofrequência RFID, áudio e vídeo e outras informações multimídia.

A transmissão de informações inclui redes de sensores, como tecnologia de transmissão de dados de longa distância, tecnologia de rede auto-organizada, tecnologia de processamento de informações colaborativas e tecnologia de middleware de coleta de informações.

A camada de percepção é a capacidade central para realizar a percepção abrangente da Internet das Coisas. É uma parte da Internet das Coisas que precisa de inovações em tecnologias-chave, padronização e industrialização. questões de custo e custo.

(2) Camada de rede: usa redes sem fio e com fio para codificar, autenticar e transmitir os dados coletados. A rede de comunicação móvel amplamente coberta é a infraestrutura para realizar a Internet das Coisas. É a rede mais padronizada e industrializada entre as três camadas da Internet das Coisas. A chave para a parte mais capaz e madura é otimizar e melhorar as características de aplicação da Internet das Coisas para formar uma rede de detecção colaborativa.

(3) Camada de aplicação: Fornecer aplicações ricas baseadas na Internet das Coisas é o objetivo fundamental do desenvolvimento da Internet das Coisas. Combinar a tecnologia da Internet das Coisas com as necessidades de informatização da indústria para alcançar uma ampla gama de soluções de aplicativos inteligentes define, a chave está na integração da indústria, Desenvolvimento e utilização de recursos de informação, soluções de baixo custo e alta qualidade, garantia de segurança da informação e desenvolvimento de modelos de negócios eficazes.

Dezenove, gerenciamento de memória

  • Pergunta 1: Quais são os métodos de gerenciamento de memória no UCOS?

responder:

O sistema gerencia a partição de memória por meio do bloco de controle de memória associado à partição de memória.

As funções de gerenciamento dinâmico de memória são:

função de criação de partição de memória dinâmica OSMemCreate(); função de solicitação de bloco de memória OSMemGet();

Função de liberação do bloco de memória OSMemPut();

20. Quais são os estados da tarefa em Ucos? Um gráfico da relação entre os estados da tarefa?

responder:

Existem 5 estados:

Estado de suspensão, estado pronto, estado em execução, estado de espera (aguardando a ocorrência de um evento) e estado de serviço de interrupção.

5 relacionamentos de transição de estado de tarefas UCOSII:

21. ADC

Descreva resumidamente as características funcionais do sistema ADC do STM32 (1) resolução de 12 bits (2) calibração automática (3) alinhamento de dados programável (os resultados da conversão suportam armazenamento alinhado à esquerda ou à direita em registros de dados de 16 bits) (4) único e contínuo Modo de conversão

22. Relógio do Sistema

  • Descreva resumidamente o processo básico de configuração do relógio do sistema

(1) Ligue o HSE, aguarde pronto, defina o Flash para aguardar a operação. (2) Defina os coeficientes de divisão de frequência de AHB, APB1 e APB2 para determinar a relação entre eles e o relógio do sistema. (3) Configure o registrador CFGR para determinar a fonte de clock e o fator de multiplicação do PLL (HSE externo 8M*9 vezes=72MHz).

(4) Habilite o PLL e mude a fonte do relógio do sistema para o PLL.

Vinte e três, processamento HardFault_Handler

  • Questão 1: Causas

(1) operação fora dos limites da matriz; (2) estouro de memória, acesso fora dos limites; (3) estouro de pilha, fuga do programa; (4) erro de processamento de interrupção;

  • Questão 2: Como lidar com isso

(1) Encontre o remapeamento de endereço de HardFault_Handler em startup_stm32f10x_cl.s e reescreva-o para que salte para a função HardFaultHandle.

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

(3) Visualize o grupo de registro de status de falha (SCB->CFSR e SCB->HFSR)

24. Método de Síntese de Fala TTS

  • Pergunta 1: Qual método a voz sim7600 TTS usa

responder:

(1) Sintetize o som usando a codificação Unicode

AT+CTTS=1,” 6B228FCE4F7F75288BED97F3540862107CFB7EDF”

O conteúdo é "Bem-vindo ao Sistema de Síntese de Fala" O módulo envia e recebe mensagens de texto em chinês com codificação unicode, facilitando a leitura das mensagens de texto;

(2) Insira o texto diretamente, os caracteres comuns adotam o código ASIIC e os caracteres chineses adotam o código GBK.

AT+CTTS=2,"Bem-vindo ao Sistema de Síntese de Voz"

25. Temporizador

  • Sabe-se que o clock do sistema do STM32 é de 72MHz, como definir os registros relevantes para atingir o tempo de 20ms?

responder:

Via SysTick_Config(SystemCoreClock / OS_TICKS_PER_SEC))//temporizador de 1ms

em:

uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz; /*!< System Clock Frequency (Core Clock) */ #define SYSCLK_FREQ_72MHz 72000000 #define OS_TICKS_PER_SEC 1000 /* Define o número de tiques em um segundo

Se precisar de 20ms, você pode definir uma variável global e definir o valor inicial para 20. Dessa forma, cada sysstick é interrompido uma vez e a variável global é reduzida em 1 e reduzida a 0, ou seja, o sysstick é interrompido 20 vezes, e o tempo é: 1ms*20 =20ms. Assim, um tempo de 20ms é alcançado.

Vinte e seis, máquina de estado

  • Pergunta: Qual máquina de estado é usada?

responder:

(Inglês: máquina de estado finito, FSM), também conhecido como autômato de estado finito, conhecido como máquina de estado.

Suponha que a transição de estado da máquina de estado seja mostrada na tabela a seguir:

Implementação: (usando a instrução 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;
    }
}

Vinte e sete, seleção de dispositivo

STM32F407 VS STM32F103 função principal e comparação de recursos?

responder:

 

Acho que você gosta

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