作者:陈广
日期:2021-11-21
在main.h中引入头文件
#include "stdio.h"
在 usart.c 的前部加入:
#ifdef __GNUC__
/* With GCC, small printf (option LD Linker->Libraries->Small printf
set to 'Yes') calls __io_putchar() */
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
在 usart.c 的后部加入:
PUTCHAR_PROTOTYPE
{
while((USART2->SR & 0x40) == 0);
USART2->DR = (uint8_t)ch;
return ch;
}
如果无法接收到数据,请在printf
函数输出内容的后面加上\n
,或在printf
方法后加上一句代码:
fflush(stdout);
使能UART中断:
LL_USART_EnableIT_RXNE(USART2);
中断服务函数源码:
void USART2_IRQHandler(void)
{
if(LL_USART_IsEnabledIT_RXNE(USART2))
{
uint8_t ch = LL_USART_ReceiveData8(USART2);
while(!LL_USART_IsActiveFlag_TXE(USART2));
LL_USART_TransmitData8(USART2, ch);
}
}
;