STM32学习笔记——串口通信

来源:互联网 发布:倚天版现货指标源码 编辑:程序博客网 时间:2024/05/20 20:01

串口通信是STM32几乎最常用的通信方式了,简单,占用资源少,易于编程控制。下面介绍如何编程实现开发板和PC机之间的串口通信。

首先,我们必须了解通信的原理。

通信分为串行通信和并行通信。并行通信是指,一连串的字符通过不通的IO口一起发送出去。串行通信是指,一连串的字符通过一个IO口依次发送出去。串行通信又有一下三

种工作模式:单工模式,半双工模式,全双工模式。单工模式只支持单向的数据传输,半双工可以支持双向传输数据,但是必须等待依次数据传输结束,全双工模式支持双向

的数据传输,当数据的接收和发送分流时,传输和接收分别由两根线控制,通信双方能在同一时间进行发送和接收操作。

串行通信分为同步通信和异步通信,简单点说,同步通信带有时钟信号,数据在时钟信号的触发沿才会发送出去。具体有SPI,IIC等;异步通信没有时钟信号,那么怎么判断一

个数据传送结束呢?这里涉及到异步通信中最重要的参数:波特率。怎么理解这个波特率?在我看来,这个波特率就是通信双方约定好的一个协议,作用相当于时钟信号,能

让通信双方都理解信号。这里的波特率在通常情况下都设为115200。

了解了串行通信的原理之后,再来看如何写一个串口通信的程序。写一个串口通信的步骤如下:

1:首先使能USART和GPIO的时钟线。这里使用的USART1,引脚资源为PA9和PA10,挂载在APB2总线上。库函数具体操作如下:RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);

2:复位串口。这一步不是必须的,单最好加上去。具体库函数操作为:USART_DeInit(USART1);

3:配置GPIO口。由芯片手册知,PA9作为的是输出端,PA10是接收端,故配置时,PA9的Mode为推挽输出(GPIO_Mode_AF_PP),PA10的Mode是浮空 `入(GPIO_Mode_IN_FLOATING)或上拉输入(GPIO_Mode_IPU)。

4:配置USART。要设置波特率,字长,停止位,奇偶校验位,硬件数据流控制,收发模式(这里开启接收和发送)这些参数,这些参数都在USART_InitStructure结构体当中。

5:初始化USART.具体操作:USART_Init(USART1,&USART_InitStructure)

6:使能串口。具体操作为:USART_Cmd(USART1);

7:初始化NVIC并且开启中断。这里的中断通道设置为:USART1_IRQn;这里开启的是接收中断:USART_ITConfig(USART1,USART_RXNE,ENABLE);

8:编写中断函数。void USART1_IRQHandler(void)

这里有两个重要的库函数:接收数据USART_ReceiveData(USART1);发送数据USART_SendData(USART1,u8);

还有一个读取相应中断状态的函数:USART_GetITStatus(USART1,USART_IT_RXNE);返回值为SET说明串口发送完中断,返回值为RESET说明串口未发送完中断。

至此,一个 串口通信程序就完成了。


0 0
原创粉丝点击