STM32
直播中

YYXIAO

9年用户 1172经验值
擅长:接口/总线/驱动
私信 关注
[问答]

STM32的处理器是怎样与外部进行通信的

STM32处理器与外部通信的两种方式分别是什么?
STM32的处理器是怎样与外部进行通信的?

回帖(1)

娄莉莉

2021-11-23 15:45:25
  处理器与外部通信的两种方式
  并行通信
  数据各个位同时传输,速度快,占用引脚资源多
  串行通信
  数据按位顺序传输,占用引脚资源少,速度相对比较慢
  1.按照数据传送方向可以分为:
  单工:数据传输只支持在一个方向上传输。
  半双工:允许数据在两个方向上传输,但是在某一时刻只允许数据在一个方向上传输。
  全双工:允许数据同时在两个方向上传输。
  2.串行通信的通信方式
  同步通信:带时钟同步信号传输,如SPI,IIC通信接口
  异步通信:不带时钟同步信号,URAT(通用异步收发器),单总线。
  STM32中的串口通信
  STM32的串口通信接口
  UART:通用异步收发器
  USART:通用同步异步收发器
  UART异步通信方式引脚连接方式
  
  RS232转换器的作用
  我们所说的USB转串口实际上有两种:一种是USB转232串口,一种是USB转TTL串口,UART上使用的TTL电平,而PC的串口是RS232,由于电平定义不同,所以要做电平转换。
  STM32串口异步通信需要定义的参数
  起始位
  数据位(8位或者9位)
  奇偶校验位(第9位)
  停止位(1,15,2位)
  波特率设置
  常用的串口相关寄存器
  USART_SR状态寄存器
  USART_DR数据寄存器
  USART_BRR波特率寄存器
  波特率的计算方法
  串口操作相关库函数(省略入口参数):
  void USART_Init(); //串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发使能
  void USART_Cmd();//使能串口
  void USART_ITConfig();//使能相关中断
  void USART_SendData();//发送数据到串口,DR
  uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据
  FlagStatus USART_GetFlagStatus();//获取状态标志位
  void USART_ClearFlag();//清除状态标志位
  ITStatus USART_GetITStatus();//获取中断状态标志位
  void USART_ClearITPendingBit();//清除中断状态标志位
  串口配置的一般步骤
  1.串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd();
  2.串口复位:USART_DeInit(); 这一步不是必须的
  3.GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF_PP
  4.串口参数初始化:USART_Init();
  5.开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)
  NVIC_Init();
  USART_ITConfig();
  6.使能串口:USART_Cmd();
  7.编写中断处理函数:USARTx_IRQHandler();
  8.串口数据收发:
  void USART_SendData();//发送数据到串口,DR
  uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据
  9.串口传输状态获取:
  FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
  void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);
举报

更多回帖

发帖
×
20
完善资料,
赚取积分