STM32F1学习-串行通信

______________________________________________________________________________________________________________________________________

无论是谁,你的一天也只有二十四小时。

你可以玩,也能可以睡大觉,可以去学习,也可以去探索那片从未到达的海域。

时间不会为任何人停留,你可以选择原地踏步,当然你也可以选择勇攀高峰。

------多年以后你会感谢现在努力的自己!

____________________________________________________________________________________________________________________________________

 

UART异步通信方式引脚连接方法:

-RXD:数据输入引脚。数据接受。

-TXD:数据发送引脚。数据发送。



串口通信过程



STM32串口异步通信需要定义的参数

起始位
数据位(8位或者9位)
奇偶校验位(第9位)
停止(1,15,2位)
波特率设置

STM32串口异步通信相关库函数

void USART_Init();//串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发使能

void USART_Cmd();//使能串口

void USART_ITConfig();//使能相关中断

void USART_SendData();//发送数据到串口,DR

uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据

FlagStatusUSART_GetFlagStatus();//获取状态标志位

void USART_ClearFlag();//清除状态标志位

ITStatusUSART_GetITStatus();//获取中断状态标志位

void USART_ClearITPendingBit();//清除中断状态标志位


在串口配置之前,需要补充端口复用的过程

例如串口1 的发送接收引脚是PA9,PA10,当我们把PA9,PA10不用作GPIO,而用做复用功能串口1的发送接收引脚的时候,叫端口复用。
举个例子:假设把端口PA9,PA10复用为串口,配置的过程。
首先 GPIO的时钟使能

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);    //  使能GPIOA口

复用外设时钟使能

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

//比如你要将端口PA9,PA10复用为串口,所以要使能串口时钟。

端口模式配置。 GPIO_Init()函数。不同的端口复用,端口模式不一样。


还需要了解中断优先级管理(NVIC)

先确定分组,确定系统的分组级别:

void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup);

针对每个中断的抢占优先级和相应优先级

void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct);


特别说明:

一般情况下,系统代码执行过程中,只设置一次中断优先级分组,比如分组2,设置好分组之后一般不会再改变分组。随意改变分组会导致中断管理混乱,程序出现意想不到的执行结果。

串口配置的一般步骤
①串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd();
②串口复位:USART_DeInit();这一步不是必须的
③GPIO端口模式设置:GPIO_Init();模式设置为GPIO_Mode_AF_PP
④串口参数初始化:USART_Init();
⑤开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)

      NVIC_Init();

      USART_ITConfig();

⑥使能串口:USART_Cmd();

⑦编写中断处理函数:USARTx_IRQHandler();

⑧串口数据收发:

void USART_SendData();//发送数据到串口,DR

uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据

⑨串口传输状态获取:

FlagStatusUSART_GetFlagStatus(USART_TypeDef*USARTx,uint16_t USART_FLAG);

voidUSART_ClearITPendingBit(USART_TypeDef*USARTx,uint16_t USART_IT);
















 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值