STM32串口程序(寄存器版)

波特率设置请参考这里写链接内容

#include "My_Usart.h"
void Init_Usart(u32 bound)
{


    RCC->APB2ENR |= 1<<2;   //使能GPIOA时钟
    RCC->APB2ENR |= 1<<14;  //使能USART1时钟

    GPIOA->CRH &= 0XFFFFF00F;  //PA9 TX  复用推挽输出
    GPIOA->CRH |= 0X000004B0;//PA10 RX 浮空输入

    USART1->BRR = 0X1D4C;   //配置波特率
    USART1->CR1 |= 0X200C;  //配置控制寄存器         
//10000000001100 使能USART1 无奇偶校验  字长为8 发送,接收使能

    USART1->CR1 |= 1<<8;    //PE中断使能
    USART1->CR1 |= 1<<5;    //接收中断使能


}

int fputc(int ch,FILE *f)   //重定向
{

    USART_SendData(USART1,(uint8_t) ch);
    while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
    return (ch);
}

如有什么不懂,请参考STM32中文参考手册543页。

你可能感兴趣的:(STM32学习笔记)