自学内容网 自学内容网

STM32 物联网智能家居 (二)-开发环境及工程搭建(STM32CubeMX)

STM32 物联网智能家居 (二)-开发环境及工程搭建(STM32CubeMX)

前面第一篇文章我们讲述了物联网智能家居项目的方案设计,从系统设计、硬件设计,再到软件设计。这篇文章我们具体会讲到整个项目需要哪些硬件模块、软件环境、搭建最小工程时用到STM32CubeMX的详细配置指导,以及最后用Keil 5工具进行编译工程的教学,这些都是这篇文章可以学到的。下面我们再来回顾一下整个方案,放到前面开宗明义。

一、回顾整体方案

首先是系统设计,整个系统的操作逻辑如下:

  • 中控屏启动后,自动连接家里的路由器,在中控屏上显示出路由器的IP地址;
  • 用户用手机上启动微信小程序,输入中控屏显示的IP,连接到家里的中控屏上;
  • 用户在微信小程序里,点击图标控制家中的灯、风扇、空调、窗帘、除湿器等,并读取屋内温湿度;
  • 并且中控屏每隔60s向微信小程序传输一次家中温度和湿度值进行更新;

image-20250112093518200

下面是硬件设计的框图,以及具体要用到的外设:

我们用I2c通信控制OLED屏幕显示字符,其中包括时间,温度,湿度,路由器Ip地址,控制信息等;用Usart控制Wifi模块ESP8266和路由器、微信小程序进行信息交互;通过GPIO控制/读取温湿度传感器、风扇、LED等外设。除此之外,我们通过ST-LINK 或USB串口解决代码开发过程中遇到的问题等等。

image-20250111163512488

在本项目中,软件设计可以分为6个子系统:

  • 设备子系统:比如实现LED控制、风扇控制
  • 显示子系统:在OLED上显示信息
  • 输入子系统:可以接收按键数据、网络数据
  • 网络子系统:负责网络连接、数据收发
  • 字体子系统:获得字符的字库
  • 业务子系统:起综合作用,根据输入值(网络数据),控制设备

image-20250112100047593

为了使软件能够兼容更多的芯片、更多的操作系统,进行软硬件解耦,我们将软件进行了分层设计。

整个软件分为下面几层内容,Microcontroller、HAL、CAL、KAL和APPL层。

APPL层是最上层的应用层,与硬件和操作系统无关,专注于应用层的逻辑。KAL层是内核抽象层(Kernel Abstraction Layer),这一层可以将整个软件分为不同的操作系统平台,通过简单的切换,可以让系统跑在裸机、FreeRTOS或者RT-Thread上面。CAL层是芯片抽象层(Chip Abstraction Layer)这一层来区分不同的芯片,来解决移植到不同的问题。HAL层(Hardware Abstraction Layer)是硬件抽象层,是决定是调用Hal库、寄存器还是库函数来操作底层硬件。以上就是为本项目设计的分层架构的逻辑,借由此软件框架做到容易扩展、容易维护的目的。

image-20250112111213095

二、环境及元器件准备

2.1 软件开发环境

1. 韦东山STM32F103-PRO全套开发板 (STM32F103ZET6)

image-20250113073851432

2. STM32CubeMX

官网下载链接:STM32Cube初始化代码生成器

3. Keil 5

官网下载链接:Keil官网下载地址

image-20250113074410612

4. ST-Link V2

image-20250113074457652

2.2 元器件

名称型号样式
Wifi模块ESP8266-01simage-20250113073531178
温湿度传感器DHT11image-20250113073426508
OLED显示屏0.96寸,白色显示,I2c通信image-20250113073358797
电机L9110电机驱动风扇模块image-20250113073305583

三、STM32CubeMX工程搭建

3.1 硬件概览

名称端口GPIO输出引脚模式特性备注
INBPC6HighOutput PushpullPull-up电机控制
INAPE6HighOutput PushpullPull-up电机控制
K1PE14n/aInput moden/a按键K1
K2PE15n/aInput moden/a按键K2
WHITEPF7HighOutput PushpullPull-upLED白灯
BLUEPF8HighOutput PushpullPull-upLED蓝灯
GREENPF9HighOutput PushpullPull-upLED绿灯
SCLPF10HighOutput PushpullPull-upI2c时钟线
SDAPF11HighOutput PushpullPull-upI2c数据线
USART1_TXPA9n/aAlternate Function Pushpulln/aUSART1_TX
USART1_RXPA10n/aInput modePull-upUSART1_RX
USART3_TXPD8n/aAlternate Function Pushpulln/aUSART3_TX
USART3_RXPD9n/aInput modePull-upUSART3_RX

3.2 创建工程

打开STM32CubdeMX,点击New Project创建新工程

image-20240519214220349

选择 STM32F103 ZET6

image-20250113080012108

3.3 系统配置

点击左侧System Core,选择RCC,将HSE和LSE都设置为Crystal/Ceramic Resonator(晶体/陶瓷振荡器)

image-20240604074221880

点击SYS,选择Debug功能为JTAG(5 pins),跟板子调试口对应

image-20240604075633710

3.4 USART串口配置

根据原理图,我们将USART1和USART3进行配置

选择左侧的Connecttivity选项,点击USART1,如下图所示,点击Mode开始配置

image-20240604080347571

STM32对USART模块提供了下面的这些模式,根据需求选择相应模式,本项目选择的是异步模式Asynchronous。

image-20240604080404318

下面我们来对USART进行配置,首先开发板上的串口对应的USART1串口,Mode配置为异步模式Asynchronous,STMCubeMX会自动分配引脚,目前分配的USART1_RX对于PA10,USART1_TX对于PA9,和我们开发板的引脚正好对应,如果不对应的话,可以根据芯片的data Sheet改成相应的引脚。

下面的参数配置Parameter Settings按照默认配置来,波特率为 115200 bit/s,这里确保主从机是一致的,才能通信成功,数据位 8,无校验位,停止位1,数据方向:Receive and Transmit,采样:16.

image-20240604080436567

点击下方的GPIO Settings,可以看到为USART1自动分配的默认引脚

image-20240604080454808

按照上面的配置过程,我们将USART1和USART3一起配置了。下面是配置完后GPIO选项下面的USART的配置:

image-20250113211921067

3.5 PORT口配置

按照3.1的硬件概览进行PORT口配置:

image-20250113212308568

3.6 时钟树配置

点击上方的Clock Configuration,开始配置时钟:

image-20240611074559483

下面我们来看一下时钟树的结构,如下图所示

image-20240604081134525

现在开始配置开发板相关的时钟频率,首先选择做左边的Input frequency,选择外部8M的晶振,选择HSE,选择PLLCLK,在HCLK处将时钟敲定为72MHz,即STM32F103可支持的最大时钟频率:

image-20250113212625664

3.7 工程导出设置

如下图所示,设置工程:

image-20250113213309510

代码生成设置

image-20240604214023852

点击右上角,生成代码GENERATE CODE:

image-20250113213412489

下面代码就生成完毕了,用Keil 5软件打开工程,进行编译:

image-20250113213512877

四、工程编译

打开Keil 5,设置编译器:

image-20250113213711649

下面进行编译,默认大家的Keil 5环境都是可以用的:

image-20250113213812701

编译OK。

image-20250113213851544

五、总结

至此,第二节STM32 物联网智能家居 (二)-开发环境及工程搭建(STM32CubeMX)就完成了,这里我们完成了软件环境的搭建,以及最小工程的设置,以及基本的外设硬件配置。后面就能够开始我们软件各子系统程序的编写了。

六、往期文章

STM32 物联网智能家居 (一) 方案设计STM32+ESP8266+TCP/UDP/MQTT

STM32 BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建

STM32 BootLoader 刷新项目 (二) 方案介绍

STM32 BootLoader 刷新项目 (三) 程序框架搭建及刷新演示

STM32 BootLoader 刷新项目 (四) 通信协议

STM32 BootLoader 刷新项目 (十三) Python上位机介绍

STM32 BootLoader 刷新项目 (十四) 所有源代码获取


原文地址:https://blog.csdn.net/qq_35057766/article/details/145128683

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!