单片机
返回首页

STM32 串口的基本配置(寄存器版)笔记

2018-12-17 来源:eefocus

1.串口


1.串口作为MCU和外界的连接工具,既可以检验代码的正确性,也可以和上位机进行交流


2.在STM32F103RCT6中,最多支持5路串口,对于串口而言,一般使用串行通信(USART1--5)


3.几个比较重要的寄存器:


 




具体配置过程


1.计算波特率(整数和小数部分)


2.初始化GPIO口


3.复位USART 配置波特率,配置奇偶校验,停止位等


4.配置中断(可编写中断服务函数)


代码实现:


//初始化IO 串口1

//pclk2:PCLK2时钟频率(Mhz)

//bound:波特率

//1.计算波特率(整数和小数)

//2.初始化引脚

//3.复位USART1

//4.设置奇偶校验等

//5.设置中断 

void uart_init(u32 pclk2,u32 bound)//USART1使用pclk2 USART2-5使用PCLK1

{   

float temp;

u16 mantissa;//整数

u16 fraction;//小数

temp=(float)(pclk2*1000000)/(bound*16);//temp(float)=32.0625 temp=32;

mantissa=temp;//整数部分

fraction=(temp-mantissa)*16;

mantissa<<=4;

mantissa=mantissa+fraction;//以hex的形式 USART->BRR


//设置GPIO口

RCC->APB2ENR|=1<<2;//设置串口时钟

RCC->APB2ENR|=1<<14;//设置串口时钟

GPIOA->CRH&=0XFFFFF00F;//PA9 PA10

GPIOA->CRH|=0X000008B0;//1000 1010 RXD TXD

//复用

RCC->APB2RSTR|=1<<14;

RCC->APB2RSTR&=~(1<<14);

//设置波特率

USART1->BRR=mantissa;

USART1->CR1|=0X200C;//设置停止位和校验位

//中断

#if EN_USART_RX

//使能接收中断

USART1->CR1|=1<<8;//接收使能

USART1->CR1|=1<<5;//接收缓冲区非空中断使能

MY_NVIC_Init(3,3,USART1_IRQn,2);

#endif

}


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • 如何构建一个触摸传感器电路

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章