[STM32MP1] 【STM32MP135F-DK测评】基于SDK创建图形应用

[复制链接]
958|1
 楼主| dql2015 发表于 2024-1-21 16:50 | 显示全部楼层 |阅读模式
在前面帖子的安装了SDK,下面基于SDK创建图形界面应用程序。

创建工程目录
  1. mkdir $HOME/STM32MPU_workspace/STM32MP1-Ecosystem-v5.0.0/Developer-Package/stm32mp1-openstlinux-23.06.21
  2. mkdir $HOME/STM32MPU_workspace/STM32MP1-Ecosystem-v5.0.0/Developer-Package/stm32mp1-openstlinux-23.06.21/sources
22.png
创建程序目录
  1. mkdir $HOME/STM32MPU_workspace/STM32MP1-Ecosystem-v5.0.0/Developer-Package/stm32mp1-openstlinux-23.06.21/sources/gtk_hello_world_example
  2. cd $HOME/STM32MPU_workspace/STM32MP1-Ecosystem-v5.0.0/Developer-Package/stm32mp1-openstlinux-23.06.21/sources/gtk_hello_world_example
创建程序gtk_hello_world.c
  1. #include <gtk/gtk.h>

  2. static void
  3. print_hello (GtkWidget *widget,
  4.              gpointer   data)
  5. {
  6.   g_print ("Hello World\n");
  7. }

  8. static void
  9. activate (GtkApplication *app,
  10.           gpointer        user_data)
  11. {
  12.   GtkWidget *window;
  13.   GtkWidget *button;
  14.   GtkWidget *button_box;

  15.   window = gtk_application_window_new (app);
  16.   gtk_window_set_title (GTK_WINDOW (window), "Window");
  17.   gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);

  18.   button_box = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
  19.   gtk_container_add (GTK_CONTAINER (window), button_box);

  20.   button = gtk_button_new_with_label ("Hello World");
  21.   g_signal_connect (button, "clicked", G_CALLBACK (print_hello), NULL);
  22.   g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), window);
  23.   gtk_container_add (GTK_CONTAINER (button_box), button);

  24.   gtk_widget_show_all (window);
  25. }

  26. int
  27. main (int    argc,
  28.       char **argv)
  29. {
  30.   GtkApplication *app;
  31.   int status;

  32.   app = gtk_application_new ("org.gtk.example", G_APPLICATION_DEFAULT_FLAGS);
  33.   g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
  34.   status = g_application_run (G_APPLICATION (app), argc, argv);
  35.   g_object_unref (app);

  36.   return status;
  37. }
33.png
创建Makefile脚本

  1. PROG = gtk_hello_world
  2. SRCS = gtk_hello_world.c

  3. CLEANFILES = $(PROG)

  4. # Add / change option in CFLAGS and LDFLAGS
  5. CFLAGS += -Wall $(shell pkg-config --cflags gtk+-3.0)
  6. LDFLAGS += $(shell pkg-config --libs gtk+-3.0)

  7. all: $(PROG)

  8. $(PROG): $(SRCS)
  9.         $(CC) -o $[url=home.php?mod=space&uid=72445]@[/url] $^ $(CFLAGS) $(LDFLAGS)

  10. clean:
  11.         rm -f $(CLEANFILES) $(patsubst %.c,%.o, $(SRCS))
交叉编译

  1. make
44.png
网线连接板卡,复制可执行程序到板卡,其中192.168.1.4是板卡的IP。

  1. scp gtk_hello_world root@192.168.1.4:/usr/local
55.png

在板卡上执行程序
  1. cd /usr/local/
  2. su -l weston -c "/usr/local/gtk_hello_world"


66.png
效果
11.jpg
点击按钮后,界面消失,终端打印Hello World
77.png

总结:ST提供的SDK十分完善,开发应用十分方便。
cr315 发表于 2024-1-22 16:51 | 显示全部楼层
支持一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

104

主题

384

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部