抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

misakivv的博客

霜蹄千里骏,风翮九霄鹏

基于MP157开发板的智能家居系统

STM32CubeProgrammer 安装

获得STM32CubeProgrammer压缩包,创建STM32CubeProgrammer文件夹,解压完成后获得如下文件

image-20231109113541270.png

双击“SetupSTM32CubeProgrammer-2.4.0.exe”允许安装向导。

点击“Next”

点击“Next”

点击“I accept the terms of this license agreement”

勾选 “I have read and understood the ST Privacy Policy and ST terms of Use”

这里选择安装路径,用户可以自行指定。点击 Next 之后会提示,将要创建一个安装目录。

勾选 STM32TrustePackageCreator 选项

Next 之后会进程序安装。

在安装的过程中会弹出如下界面,安装相关的驱动程序。点击“下一步”

程序将会自动安装所需的驱动程序,安装完成后会弹出如下界面。

点击“完成”

切换到“STM32CubeProgrammer”界面后点击“Next”,创建桌面快捷键。

安装完成界面

出现上述界面后点击“Done”。至此 STM32CubeProgrammer 就安装完成了。

镜像烧写

获取镜像系统

image-20231109114048410.png

镜像烧写

将拨码开关拨至【000】进行程序烧写

QQ图片20231109140642.jpg

打开【STM32CubeProgrammer】软件,点击【+】,点击【open file】

注:烧写脚本 Flashlayout 需要和 tf-a、u-boot、sdcard.img 在同一个文件夹下

找到存放镜像的文件夹

image-20231109114236164.png

检查路径是否为烧录配置文件所在的路径。需要再同一路径

image-20231109114528734.png

如果在打开软件之前开发板已经处于上电状则可以看到右上角的 USB 设备

image-20231109114658096.png

出现 USB1 端口后点击左上角的【Connect】按钮进行连接。 连接成功后上方原来为【Not connected】字样变为【Connect】

点击界面右上角的【Download】按钮进行烧录。

烧写成功后会出现如下提示

QQ图片20231109114844.png

启动系统

拨码选择

通过 STM32CubeProgrammer 方式烧录 emmc 镜像就完成后,就可以通过改变拨码开关为【010】来进 行系统的启动。

打开串口启动

win+r 输入devmgmt.msc打开设备管理器

打开串口工具选择自己电脑显示 COM 口连接启动开发板

打开shell7,连接协议选择SERIAL

image-20231109115743264.png

在串口中选择自己电脑上查到的串口号,波特率为115200,数据位为8,停止位为1保持默认。点击连接。

如果shell页面卡住,可以按主板电源附近的复位键即可继续

注意,由于显示屏为5寸,所以在Select the boot mode中选择5

启动登录密码为root,启动成功后会进入buildroot系统

取消默认桌面

因为我们生成的默认桌面会影响软键盘的使用,所以我们在做实验前先将默认桌面退出。

在/usr/share/applications/desktopsystem 路径下有一个 desktopstart.sh 的脚本文件,我们打开这个脚本文 件。

1
vi desktopstart.sh

将下图中的/usr/share/applications/desktopsystem/qt5desktop -platform linuxfb:rotation=0 这句代码用#注 释掉,然后保存退出。再次启动就不会有默认桌面了。

1
2
3
4
5
6
7
#!/bin/sh

export QTDIR=/usr/lib/qt
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export $(dbus-launch)

#/usr/share/applications/desktopsystem/qt5desktop -platform linuxfb:rotation=0

项目功能展示

系统启动成功后进入到应用程序目录

1
root@buildroot:# cd /usr/share/applications/qt5example

其中 qt5homeautomation 是 7 寸屏的可执行文件,qt5homeautomation-mipi050 是 5 寸屏的可执行文件

在五寸屏下命令rotation反转1并添加下面两个环境变量:

1
2
root@buildroot:# export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event2:rotate=270
root@buildroot:# export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/input/event2

最后执行

1
root@buildroot:#./qt5homeautomation-mipi050 -platform linuxfb:rotation=1
image-20231109140159987.png

效果展示

QQ图片20231109114905.jpg QQ图片20231109114910.jpg QQ图片20231109114916.jpg

部分代码

1
2
3
4
5
6
7
8
9
10
11
/* 读取湿度数据 */
read_sysfs_int(device1, "in_humidityrelative_raw", &hum_raw);
// 读取湿度原始值
read_sysfs_int(device1, "in_humidityrelative_offset", &hum_offset);
// 读取湿度偏移值
read_sysfs_float(device1, "in_humidityrelative_scale", &hum_scale);
// 读取湿度缩放系数
hum_float = (hum_raw + hum_offset) * hum_scale / 1000;
// 计算实际湿度值
hum = QString::number(hum_float, 'f', 2);
// 转换为字符串形式
1
2
3
4
5
6
7
8
9
10
11
12
(fscanf(sysfsfp, "%d\n", val) != 1)
{
ret = errno ? -errno : -ENODATA;
if (fclose(sysfsfp))
perror("read_sysfs_float(): Failed to close dir");
goto error;
}
if (fclose(sysfsfp))
ret = -errno;
error:
return ret;
}
1
2
connect(&thread_collentdata,SIGNAL(send(QString,QString,QString)),this,SLOT( set_humAdtemAdill(QString,QString,QString)));

1
2
3
4
5
6
[root@buildroot]:~# echo 1 > /sys/class/leds/user1/brightness //LED1灯亮
[root@buildroot]:~# echo 0 > /sys/class/leds/ user1/brightness //LED1灯灭
[root@buildroot]:~# echo 1 > /sys/class/leds/ user2/brightness //LED2灯亮
[root@buildroot]:~# echo 0 > /sys/class/leds/ user2/brightness //LED2灯灭
[root@buildroot]:~# echo 1 > /sys/class/leds/ user3/brightness //LED3灯亮
[root@buildroot]:~# echo 0 > /sys/class/leds/ user3/brightness //LED3灯灭
1
2
3
4
5
6
7
8
9
fd = open("/dev/input/by-path/platform-beeper-event", O_RDWR); // 打开设备
文件
"/dev/input/by-path/platform-beeper-event",以可读可写模式
event.type = EV_SND; // 设置事件类型为声音事件
event.code = SND_TONE; // 设置事件代码为音调事件
event.value = 1000; // 设置事件的值为1000(音调值)
time.tv_sec = 1; // 设置时间的秒数为1秒
time.tv_usec = 0; // 设置时间的微秒数为0
event.time = time; // 设置事件的时间为定义的时间结构体

评论