STM32 实验 串口实验

STM32 串口实验

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

串口初始化和中断接收的文件在共用文件SYSTEM—USART文件夹内,

1.串口时钟/GPIO时钟使能:

串口和GPIO都是挂载在APB2总线,
使能函数:

RCC_APB2periphClockCma(RCC_APB2periph_USARTx | RCC_APB2peiphClockCmd_GPIOx,
EANBLE);//x表示串口位号和GPIO端口号

2.串口复位

函数:USART_DeInit()
比如复位串口1

USART_DeInit(USART1)

3.GPIO端口模式设置:

1.设置GPIO_pin脚—GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
2.设置GPIO端口速率—GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz
3.设置GPIO模式—GPIO_InitStructure.GPIO_Mode = GPIO_mode_AF_PP;
4.初始化GPIO端口—GPIO_Init(GPIOA,&GPIO_InitStructure);

4.串口参数初始化

串口初始化由函数:USART_Init()实现

void USART_Init(USART_TypeDef * USARTx,USART_TypeDef * USART_InitStruct)

第一参数是确定串口号;
第二个参数用来设置串口的参数,主要有:
1.波特率设置—USART_InitStructure.USART_BaudRate = bound;
2.字长设置—USART_InitStructure.USART_WordLendth = USART_WordLength_8b
3.设置停止位—USART_InitStructure.USART_StopBits = USART_StopBits_1;
4.检测有奇偶校验—UASRT_InitStructure.USART_Parity = USART_Parity_No;
5.检测有无硬件数据流控制—USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
6.设置收发模式—USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_TX;
7.初始化串口—USART_Init(USARTx,&GPIO_InitStructure);

5数据收发

数据的发送和接收 是通过数据寄存器 USART_DR来实现;
发送数据:USART_SendData(USARTx,uint16_t Data)
接收数据:USART_ReceiveData(USARTx)

6串口状态

串口状态由状态寄存器 USART_SR 读取,主要关注第5-6位:RXNE和TC、
RXNE(读数据寄存器非空):这个位置被置1的时候,表示已经有数据被接收到并且可以读取出来。此时 应该去读取USART_DR,让该位清零或者直接向这个位写0来清零。
TC(发送完成):这个位被置1时,表示USART_DR内的数据被发送完成了,如果设置了这个位的中断,中断就会产生。清零方式:1.读USART_SR,写USART_DR;2.直接写0.
读取串口状态的函数是:USART_GetFlagStatus(USARTx,USART_FLAG_xxxx);
USART_FLAG_xxxx 表示我们需要查看串口的哪种状态,比如RXNE 或者 TC

7.串口使能

串口使能函数:USART_Cmd()
例:USART_Cmd(USART1,EANBLE) //使能串口1

8.开启串口响应中断

开启串口中断,还需要使能串口中断;串口中断使能函数:USART_ITConfig(USARTx,USART_IT_xxxx,ENAVLE)
USART_IT_xxxx:表示标识的使能串口的类型,比如RXNE 或者TC

9.获取相应的中断状态

使用的函数是:USART_GetITStatus(USARTx,USART_IT_xxxx)
比如:USART_GetITStaysa(USART1,USART_IT_TC)

硬件验证:开发板上RX/TX 接到 六合一串口模块上的TX/RX上;GND接GND 让开发板和串口模块共地。打开XCOM V2.0串口助手,选择COM口,设置波特率(与软件设置的波特率一样),勾选发送新行。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值