这次我们讲一下STM32 HAL库中串口的配置过程: 打开Cube MX软件,新建工程New Project,选择自己的芯片型号,我这里用的是STM32F407ZGT6,然后选择Start Project 在这个界面,无论我们建立什么样的项目,都可以先把以下几个工作先做了: 1、RCC选项:这一项是为后续配置系统时钟做准备,MCU运行也必须配置时钟 2、SYS选项:这个主要是配置我们软件调试使用SWD方式还是JTAG方式,还有就是选择系统心跳节拍时钟源,这里选择Systick,也可以选择其他TIM 上面这两个选项可以说是每次建立工程之后都要设置的,配置完之后才正式开始我们要配置的项目相关的配置。对于串口USART来说,我们以USART1为例;配置过程如下: 我们选择异步方式:硬件流控一般不用。 下面就是进入系统时钟Clock Configuration的配置:我的板子是外部晶振8Mhz,然后按照图片所示,不管之前你倍频和分频参数是多少,只要使得HCLK时钟频率为168Mhz就可以,然后需要注意的就是PCLK1的最大时钟频率是42mhz,PCLK2最大的频率为84MHz。配置到这里时钟基本就配置完成了,当然以后如果我们需要做低功耗的话,可以适当降低频率。 下面就要配置和USART外设参数有关的配置了: 打开configuration,选择USART,选择Parameter Settings,里面是波特率等参数的设置。GPIO settings选项里,检查一下基本按照默认配置就行。 就这么简单?是的,就是这么简单,ST的这个软件就是要做到让用户不用关心底层驱动的东西,只要用心写好自己的用户层逻辑就好了。 至于中断方式,也就是NVIC里面的配置我们后续再说,先把最基本的串口流程熟悉一遍。 其实配置到这里,我们就可以生成工程了。 生成工程以后,打开工程main函数文件,我们编译一下整个工程,无错误。 然后向我们之前分析GPIO的库函数一样,打开stm32f4xx_hal_uart.h和stm32f4xx_hal_uart.c文件,有如下可以供我们使用的函数: 但是我们最常用的也就是发送和接收相关的函数,包括阻塞方式、中断方式、还有DMA方式。我们先以阻塞方式进行演示: 在main文件里定义一个数组:uint8_t atx[]='uart_test'; 然后再main函数里调用串口发送函数即可 HAL_UART_Transmit(&huart1,atx,9,0xffff); 然后编译软件,下载到开发板里,在PC端打开串口助手,选择好串口号和波特率等参数,打开串口,我们就能看到开发板发出的uart_test字符了,也就是发送成功了。至此,关于串口最简单的发送就完成了。 有没有感觉这也太简单了?当然不是,串口的功能如此强大,怎么可以这么轻易就说完了,这只是一个引导过程。 关于串口的功能还有非常多的东西,比如中断方式的接收和发送,DMA方式的发送与接收等等,还有更重要的是我们一般使用串口最多的就是与一些通信设备进行通信,通信当然要有自己的通信协议,我们使用串口的时候,要把串口接收的数据进行解析、判断,是不是我们想要的数据、数据是不是完整等等。如果接受或者发送失败,我们要怎么处理?重新发送等等。这些才是使用串口的最重要的知识。关于这方面的东西,我会在后续分享给大家。 |
|
来自: 龙之吻6iinxl8c > 《单片机及控制系统》