No aprendizado do STM32, com certeza aprenderemos o uso das portas seriais. Com relação ao recebimento e envio de dados seriais, podemos realmente usar a função printf () e a função getchar () para simplificar a transmissão. Precisamos apenas de um trabalho preliminar simples.
Na biblioteca padrão da linguagem C, a função fputc é uma função dentro da função printf. Sua função é escrever o caractere ch na posição atual do ponteiro de gravação do arquivo apontado pelo ponteiro do arquivo f. O entendimento simples é escrever o caractere para um arquivo específico. Usamos a função USART para modificar novamente o conteúdo da função fputc para obter uma função semelhante a "escrever".
A função fgetc é muito semelhanteàfunção fputc , que implementa a função de leitura de caracteres. Você precisa prestar atenção ao formato de entrada de caracteres ao usar a função scanf.
Só mais uma coisa a notar é que usar as fput e fgetc funções para redirecionar as funções de entrada e saída da biblioteca padrão de linguagem C, você deve verificar " Use MicroLIB " na opção de projeto MDK . MicoroLIB é uma biblioteca alternativa para o padrão C A biblioteca C padrão é altamente otimizada para fazer menos código e ocupar menos recursos. Para usar as funções printf e scanf , o arquivo de cabeçalho stdio.h precisa ser incluído no arquivo
código mostrado como abaixo:
/*重定向c库函数printf到串口,重定向后可使用printf函数*/
int fputc(int ch, FILE *f)
{
/* 发送一个字节数据到串口 */
USART_SendData(DEBUG_USARTx, (uint8_t) ch);
//DEBUG_USARTx改成你想用的USART端口
/* 等待发送完毕 */
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);
//DEBUG_USARTx改成你想用的USART端口
return (ch);
}
///重定向c库函数scanf到串口,重写向后可使用scanf、getchar等函数
int fgetc(FILE *f)
{
/* 等待串口输入数据 */
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET);
//DEBUG_USARTx改成你想用的USART端口
return (int)USART_ReceiveData(DEBUG_USARTx);
//DEBUG_USARTx改成你想用的USART端口
}
Se você estiver usando a biblioteca de firmware STM32, deve ser capaz de copiar e colar diretamente, basta alterar DEBUG_USARTx. Se você for outra pessoa, basta substituir as funções de envio e recebimento nessas duas partes do código por suas próprias funções.
Claro, alguns amigos descobrirão que podem cometer erros ao redirecionar e não alcançar os resultados esperados. (Exclua a possibilidade de sua função de redirecionamento estar errada)
Primeiro, lembre-se de incluir o arquivo de cabeçalho #include <stdio.h>
Em segundo lugar, se você estiver usando KEIL, você também precisa configurar algo
Clique nesta varinha mágica, entre na página de configurações
e clique em Usar MicroLIB
Se você geralmente prestar atenção a esses dois pontos, poderá obter o redirecionamento com êxito. Se tiver outras perguntas, entre em contato conosco.