在B-L475E-IOT01A和B-U585I-IOT02A

上使用传感器60分钟
目标描述
本教程的目的是说明如何使用STM32L4Discovery套件和B-U585I-IOT02ADiscovery套件中的传感器进行测量。可对温度传感器进行分步配置。
完成本教程后,您将能够使用B-L475E-IOT01A板和B-U585I-IOT02A板上的传感器收集值。
本教程的附录提供了有关如何将AC6示例移植到STM32CubeIDE的指南。
先决条件
您已经遵循了:
第1步:工具安装和首次测试
Step3:UART和新板介绍
硬件
STM32L4DiscoverykitIoT节点[1](B-L475E-IOT01A)
B-U585I-IOT02A探索套件物联网节点[2](B-U585I-IOT02A)
USB数据线Type-A转Micro-B
文献
UM2153型物联网节点探索套件,与STM32L4进行多通道通信
UM1884型STM32L4/L4+HAL和低层驱动程序的描述
UM2839型用于STM32U5系列物联网节点的探索套件
UM2911型STM32U5HAL和低层驱动程序的说明
UM1859型开始使用STM32Cube的X-CUBE-MEMS1运动MEMS和环境传感器软件扩展
UM2579型从SystemWorkbench到STM32CubeIDE的迁移指南
STM32L4DiscoveryKitIoT节点入门
了解全新STM32U5IoT节点B-U585-IOT02A探索套件
内容↑[隐藏]
1在B-L475E-IOT01A上使用传感器1.1硬件说明1.2示例:使用HTS221传感器获取温度值并将其显示在终端上1.2.1使用STM32CubeMX创建工作项目1.2.2将BSP驱动程序复制到您的项目中1.2.3在STM32CubeIDE工作区中支持更新包含路径1.2.5更新源文件1.2.6编译并运行示例
2在B-U585-IOT02A中使用传感器2.1硬件说明2.2示例:使用HTS221传感器获取温度值并将其显示在终端上2.2.1使用STM32CubeMX创建工作项目2.2.2将BSP驱动程序复制到您的项目中2.2.3在STM32CubeIDE工作区中支持更新包含路径2.2.5更新源文件2.2.6编译并运行示例
3附录:将AC6示例移植到硬件说明3.2示例:使用HTS221传感器获取温度值并将其显示在终端上(从AC6移植到STM32CubeIDE)3.2.1硬件设置3.2.2示例详细信息3.2.3将示例移植到编译和运行示例
4引用
1使用传感器B-L475E-IOT01A↑1.1硬件说明↑STM32L4探索套件物联网节点(B-L475E-IOT01A)中提供的主要传感器包括:
用于相对湿度和温度的电容式数字传感器(HTS221)
260-1260hPa绝对数字输出气压计(LPS22HB)
3D加速度计和3D陀螺仪(LSM6DSL)
高性能3轴磁力计(LIS3MDL)。

本节的目的是逐步说明如何与HTS221传感器连接以获取温度值并将其显示在终端上。
1.2.1使用STM32CubeMX创建工作项目↑起点是使用STM32CubeMX生成的项目,如Step3教程:B-L475E-IOT01A上的UARTI/F简介中所述。
按照教程中的步骤操作。
将生成的项目命名为L4_IOT_Sensors。
1.2.2将BSP驱动程序复制到您的项目中↑BSP(板级支持包)驱动程序采用STM32CubeL4封装。这提供了与主板的硬件组件相对应的API。
默认情况下,STM32CubeL4软件包的最新版本下载在STM32CubeMX存储库中:
C:\Users\user_name\STM32Cube\Repository\STM32Cube_FW_L4_。
下图显示了BSP位置及其内容:


信息
在本例中,使用的STM32CubeL4版本为1.11.0。版本可能会随着时间的推移而增加。
按照以下步骤将BSP驱动程序复制到您的项目:
在生成的项目中,创建一个文件夹L4_IOT_Sensors/Drivers/BSP。
复制STM32CubeL4/Drivers/BSP/B-L475E-IOT01文件夹,并将其粘贴到L4_IOT_Sensors/Drivers/BSP文件夹中。
复制STM32CubeL4/Drivers/BSP/Components文件夹并将其粘贴到L4_IOT_Sensors/Drivers/BSP/Components下。
仅使用HTS221温度传感器。因此,可以删除复制到工作目录的任何其他文件和文件夹。此步骤是可选的:
*KeeponlythefollowingfilesunderL4_IOT_Sensors\Drivers\BSP\B-L475E-IOT01:

*KeeponlythefollowingfilesunderL4_IOT_Sensors\Drivers\BSP\Components:

添加的文件夹会自动显示在STM32CubeIDE工作区中:

更新路径以支持新的头文件:
从ProjectExplorer视角选择相关项目:

从“项目”菜单或“文件”菜单中,转到“属性”“C/C++构建设置”“工具设置”“MCUGCC编译器”“包含路径”。
单击以包含新路径。
添加../drivers/BSP/B-L475E-IOT01和../Drivers/BSP/Components/hts221路径。
以下屏幕截图总结了要遵循的步骤:

编辑,如下所示:
包括头文件:stm32l475e_、stm32l475e_iot01_和
/*USERCODEBEGINIncludes*/include"stm32l475e_iot01_"include"b_u585i_"/*USERCODEENDIncludes*/
添加私有值。这些值用于在终端上显示温度和消息:
/*USERCODEBEGINPV*//*Privatevariables-------------------------------------------------------*/floattemp_value=0;//Measuredtemperaturevaluecharstr_tmp[100]="";//Formattedmessagetodisplaythetemperaturevalueuint8_tmsg1[]="******Temperaturevaluesmeasurement******\n\n\r";uint8_tmsg2[]="=====InitializeTemperaturesensorHTS221\r\n";uint8_tmsg3[]="=====TemperaturesensorHTS221initialized\r\n";/*USERCODEENDPV*/
在终端上显示消息并初始化HTS221温度传感器:
/*USERCODEBEGIN2*/HAL_UART_Transmit(huart1,msg1,sizeof(msg1),1000);HAL_UART_Transmit(huart1,msg2,sizeof(msg2),1000);BSP_ENV_SENSOR_Init(0,ENV_TEMPERATURE);BSP_ENV_SENSOR_Enable(0,ENV_TEMPERATURE);HAL_UART_Transmit(huart1,msg3,sizeof(msg3),1000);/*USERCODEEND2*//
在while(1)循环中,读取温度值,格式化,然后在终端上显示带有测量值的消息:
/*USERCODEBEGIN3*/BSP_ENV_SENSOR_GetValue(0,ENV_TEMPERATURE,temp_value);inttmpInt1=temp_value;floattmpFrac=temp_value-tmpInt1;inttmpInt2=trunc(tmpFrac*100);snprintf(str_tmp,100,"TEMPERATURE=%d.%02d\n\r",tmpInt1,tmpInt2);HAL_UART_Transmit(huart1,(uint8_t*)str_tmp,sizeof(str_tmp),1000);HAL_Delay(1000);/*USERCODEEND3*/

信息
只能对所需的USERCODE部分进行更新,以避免使用新的STM32CubeMX代码生成覆盖所有内容。
2.2.6编译运行示例↑单击“生成”按钮以编译项目。
单击“调试”按钮以运行软件。
打开控制台模拟器,例如TeraTerm[3].要配置控制台波特率,请选择数据位:8,然后单击确定。端口名称可能因您的计算机而异。
STM32CubeIDE打开Debug透视图。单击“恢复”按钮以执行代码。
Tera术语[3]在测量的温度值之前显示初始化消息:

现在,您可以:
构建您自己的项目,使用B-U585I-IOT02A中的嵌入式传感器测量温度值。
将BSP组件添加到STM32CubeMx生成的项目中。
将该板的使用范围扩展到HTS221以外的传感器,以进行环境测量。
3附录:将AC6示例移植到STM32CubeIDE↑DataLogTerminal是本附录中使用的示例。它位于:STM32CubeExpansion_MEMS1_\Projects\STM32L476RG-Nucleo\Examples\IKS01A2\DataLogTerminal

信息
STM32CubeExpansion_MEMS1_是X-CUBE-MEMS的提取物。随着时间的推移,可以从同一链接获得此包的最新版本。

警告
为了防止将来由于路径过长而导致的编译错误,建议将软件包放在C:下。
3.1硬件说明↑TheX-NUCLEO-IKS01A2[4]是用于STM3264引脚Nucleo的运动MEMS和环境传感器扩展板。它通过I²C总线引脚与NUCLEO-L476RG连接。

本节的目的是逐步说明如何连接X-NUCLEOIKS01A2HTS221传感器和NUCLEO-L476RG板,以获得温度值并将其显示在终端上。
3.2.1硬件设置↑使用Arduino连接器用X-NUCLEO-IKS01A2扩展板扩展您的Nucleo板。
将带有扩展板的板连接到您的计算机。
3.2.2示例详情↑文件中的STM32CubeExpansion_MEMS1_\Projects\STM32L476RG-Nucleo\Examples\IKS01A2\DataLogTerminal下提供了DataLogTerminal示例的描述:
@parExampleDescriptionMainfunctionistoshowhowtousesensorexpansionboardtossensordatafromaNucleoboardusingUARTtoaconnectedPCordesktop,:-Theusercanviewthedatafromvariouson-boardenvironmentsensorssuchastemperature,humidity,andpressure-Theusercanalsoviewdatafromvariouson-boardMEMSsensorssuchasaccelerometer,gyroscope,andmagnetometer.3.2.3将示例移植到STM32CubeIDE↑
将基于SW4STM32的DataLogTerminal示例导入STM32CubeIDE:STM32CubeExpansion_MEMS1_\Projects\STM32L476RG-Nucleo\Examples\IKS01A2\DataLogTerminal
必须转换项目,并显示以下消息:

单击“确定”时,会弹出以下消息:

单击“确定”。
从ProjectExplorer视角选择相关项目:

单击“生成”按钮以编译项目。
单击“调试”箭头,然后选择“调试配置”。
在弹出的DebugConfiguration窗口中,确保所选的Debug探测器是ST-LINK:

在同一窗口中,单击“调试”,或单击“调试”按钮以运行软件。
打开控制台模拟器,例如TeraTerm[3].配置控制台波特率,选择数据位:8,然后单击确定。端口名称可能因您的计算机而异。
单击“恢复”按钮以执行代码。Tera术语[3]使用扩展板X-NUCLEO-IKS01A2中可用的传感器显示测量值。
X-NUCLEO-IKS01A2传感器测量的值显示在TeraTerm窗口中,如下所示:

Jumpup↑STM32L4DiscoverykitIoT节点
Jumpup↑B-U585I-IOT02A探索套件物联网节点
↑Jumpupto:3.03.13.23.33.43.5Tera术语
Jumpup↑X-核-IKS01A2