Se você chamar printf para imprimir informações de depuração na função de serviço de interrupção, os seguintes resultados poderão ocorrer:
1. A impressão está incompleta ou não pode ser impressa
2. O programa pode ser executado, mas o comportamento é anormal
3. O programa não pode ser executado
Neste momento, só quero perguntar: por quê? Por que? Por que?
Várias situações precisam ser discutidas. [De acordo com o comportamento da função de interrupção] Para evitar o aninhamento de interrupções, algumas funções de interrupção desabilitarão temporariamente a interrupção [de acordo com o método de implementação de printf], algumas serão implementadas por meio de polling e a prioridade será alcançada por meio da porta serial interrompe.
Se a interrupção estiver desabilitada na função de interrupção
Se o printf chamado depender da impressão de interrupção, isso fará com que o printf falhe na impressão.
Se o printf chamado for implementado por polling, demorará muito para imprimir um caractere, o que reduzirá bastante a interrupção eficiência de processamento, e pode ser possível durante o período de desativação de interrupção. Muitas outras interrupções serão perdidas
Se a função de interrupção não for desabilitada
durante a execução da função printf, a interrupção principal pode ser acionada novamente, chamando printf novamente, causando o reentrada da função printf. No entanto, muitas funções printf não suportam reentrada porque chamam recursos globais, o que causará consequências desastrosas.