一般步骤

  1. 串口时钟的使能,GPIO时钟使能
  2. 串口复位
  3. GPIO端口模式设置
  4. 串口参数初始化
  5. 开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤
  6. 使能串口
  7. 编写中断处理函数

又遇到坑了

~我是使用原子的库的,但是他的usart.c这个文件有点问题(可能只是我下载的那个有问题吧),重写的fputs有问题,printf根本用不了, 浪费了我好多时间查找解决方法,最后看了原子的官方示例才发现,他的usart.c改过了...~

我又发现自己之前的想法错了,我改的地方其实无关紧要

这是改之前

1
2
3
4
5
6
7
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕  
USART1->DR = (u8) ch;
return ch;
}

这是改之后

1
2
3
4
5
6
7

int fputc(int ch, FILE *f)
{
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
USART_SendData(USART1,(uint8_t)ch);
return ch;
}

我发现了我的真正的问题,原来是 uart_init() 函数名打错成 usart_init() !!!