在这个帖子当中,将介绍如何使用STM332F412系列的UART外设以及通过SPI总线驱动OLED屏幕。 一、 驱动USART在ST官方的HAL驱动库中,我们可以找的很多关于板子的例程供我们参考,如下图所示的:
关于如何配置USART我们可以看官方HAL库“stm32f4xx_hal_usart.c”里面的说明,如下图:
从图中可以看到,首先要声明一个USART_HandleTypeDef结构体,然后在定义HAL_USART_MspInit()这个函数,在这个函数中我们完成了外设时钟初始化、GPIO初始化以及中断初始化等操作。然后初始化UART外设的比特率、数据位数等等配置,调用HAL_USART_Init()进行初始化就完成了USART的初始化配置工作。最后我们重载put()函数,使得我们可以使用printf()函数进行串口打印操作。 从ST官方资料可以了解到,这块NUCLEO板板载了ST-LINKV2 仿真器,而仿真器中又集成了一个虚拟串口,从官方给出的 电路图中可以看出,芯片的USART3连接到了ST-LINK当中,因此我们在进行串口调试时可以只使用一个USB线就完成了程序下载、仿真以及串口调试的工作,非常的方便。具体的USART配置大家可以看后面上传的文件,这里只放一个结果图了。
二、 驱动OLED我们知道OLED显示屏作为一种新型的技术,由于其轻便、省电的特性,逐渐被人们广泛应用在各个领域当中。我手上这块OLED采用了SSD1306作为主控芯片,并且使用SPI作为数据传输的总线。因此这里介绍一下如何配置SPI以及如何驱动SSD1306. SPI总计上配置的流程和UART相似,具体配置请看附件就好了。而SSD1306的配置稍微要复杂一点,我们可以把OLED看成是一块128*64的点阵屏幕,通过程序我们可以控制每个点的亮灭,因此就可以显示出一串组合文字或者图形出来。
这是我从逻辑分析仪中抓取的SPI总线波形,可以看到已经建立的正确的SPI 通信。而OLED运行结果如下图: |