首页 > 其他分享 >AT32F421xx外设驱动4-uart(寄存器)

AT32F421xx外设驱动4-uart(寄存器)

时间:2022-11-12 19:12:31浏览次数:46  
标签:AT32F421xx uart void GPIOA USART1 串口 bit ctrl1 外设

#include "BspPhy.h"

//****************************************************************
//******  串口GPIO初始化函数
//******  输入参数: 无
//******  返回值:   无
//****************************************************************
static void PhyUartGpioInit()
{ 
  CRM->ahben_bit.gpioaen = 1;  //使能GPIOA
    
  GPIOA->cfgr_bit.iomc9 = 2;   //复用模式
  GPIOA->omode_bit.om9 = 1;    //推挽
  GPIOA->odrvr_bit.odrv9 = 1;  //较大电流推动
  GPIOA->pull_bit.pull9 = 0;   //不上拉不下拉 
  GPIOA->muxh_bit.muxh9 = 1;   //MUX1
 
  
  GPIOA->cfgr_bit.iomc10 = 2;   //复用模式
  GPIOA->omode_bit.om10 = 1;    //推挽
  GPIOA->odrvr_bit.odrv10 = 1;  //较大电流推动
  GPIOA->pull_bit.pull10 = 0;   //不上拉不下拉 
  GPIOA->muxh_bit.muxh10 = 1;   //MUX1
}

//****************************************************************
//******  串口参数初始化函数
//******  输入参数: uint32_t baudrate 波特率
//******  返回值:   无
//****************************************************************
static void  PhyUartCoreInit(uint32_t baudrate)
{
   CRM->apb2en_bit.usart1en = 1;
    
   USART1->baudr_bit.div = (12000000 * 10 / baudrate);   //(apb_clock * 10 / baud_rate);
   USART1->ctrl1_bit.pen = 0;  //奇偶校验使能关闭
   USART1->ctrl1_bit.dbn = 0;  //数据位个数8位
   USART1->ctrl2_bit.stopbn = 0; //停止位个数1位 
   USART1->ctrl1_bit.ten = 1;
   USART1->ctrl1_bit.ren = 1; 
   USART1->ctrl1_bit.uen = 1; 
}

//****************************************************************
//******  串口初始化函数
//******  输入参数: 无
//******  返回值:   无
//****************************************************************
void PhyUartInit()
{
    PhyUartGpioInit();
    PhyUartCoreInit(115200);
}
//****************************************************************
//******  串口发送字节函数
//******  输入参数: uint16_t DataByte :发送双字节
//******  返回值:   无
//****************************************************************
void PhyUartSendByte(uint8_t Byte)
{
    USART1->dt_bit.dt = Byte;
    while(USART1->sts_bit.tdc == RESET);   
}

void PhyUartSendStr(uint8_t *Str)
{
    while(*Str)
    {
       PhyUartSendByte(*Str++);
    }
}

/******************************Uart***************************************/ 

void PhyUartInit(void);   
void PhyUartSendByte(uint8_t Byte);
void PhyUartSendStr(uint8_t *Str);
/*************************************************************************/ 

  

标签:AT32F421xx,uart,void,GPIOA,USART1,串口,bit,ctrl1,外设
From: https://www.cnblogs.com/lum0126/p/16884430.html

相关文章