STM32MP157A-DK1 点亮LED
STM32MP157A-DK1 是一款基于 STM32MP157AAC3 MPU 芯片的开发板。这是一款 MPU 芯片,它和传统的 STM32 系列 MCU 不同,其开发方式有很大的区别。下面讲解如何点亮板载的 LED 灯。
一、系统安装
需要做的准备工作是
- 安装 STM32CubeProgrammer 这款软件
- 下载系统文件,例如:en.flash-stm32mp1-openstlinux-6-1-yocto-mickledore-mp1-v23-06-21
- 插入 SD 卡,并把两个拨码开关调整至 off 状态已进入烧录模式
- 插入电源,串口线,烧录线
- 打开 STM32CureProgrammer,选择 USB 设备进行连接,此时可以找到一个 DFU 的设备
- 打开 tsv 文件
FlashLayout_sdcard_stm32mp157a-dk1-optee.tsv
,路径是.\en.flash-stm32mp1-openstlinux-6-1-yocto-mickledore-mp1-v23-06-21\stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21\images\stm32mp1\flashlayout_st-image-weston\optee
- 选择镜像文件路径为
.\en.flash-stm32mp1-openstlinux-6-1-yocto-mickledore-mp1-v23-06-21\stm32mp1-openstlinux-6.1-yocto-mickledore-mp1-v23.06.21\images\stm32mp1
- 开始烧录,大约耗时 15 分钟,此时可以从串口看到打印
二、点亮 LED 灯
完成系统安装后,便可以 boot 进系统了。
两个拨码开关调整至 on 状态已从 SD Card 启动
等待蓝灯闪烁表示 Linux 系统已经启动,同时也可以看串口的输出内容
插入网线,使用
ifconfig
获取 IP 地址使用
date -s MM/DD/YY
和date -s HH:MM:SS
修改日期和时间安装 SSH 并登录
方式一
- 使用如下指令点亮 LED 灯
1
2
3gpioset -c gpiochip0 14=0 -->get GPIO PA14 and set it low (green led on)
pioset -c gpiochip0 14=1 -->get GPIO PA14 and set it high (green led off)
gpioset -t 500ms -c gpiochip0 14=active -->get GPIO PA14 and toogle it every 500ms (green led blink)
- 使用如下指令点亮 LED 灯
方式二
- 编译一个小程序,首先需要搭建交叉编译环境,参考博客 《STM32MPU 开发环境搭建》。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
int main(int argc, char **argv)
{
struct gpiohandle_request req;
struct gpiohandle_data data;
char chrdev_name[20];
int fd, ret;
strcpy(chrdev_name, "/dev/gpiochip0");
/* Open device: gpiochip0 for GPIO bank A */
fd = open(chrdev_name, 0);
if (fd == -1) {
ret = -errno;
fprintf(stderr, "Failed to open %s\n", chrdev_name);
return ret;
}
/* request GPIO line: GPIO_A_14 */
req.lineoffsets[0] = 14;
req.flags = GPIOHANDLE_REQUEST_OUTPUT;
memcpy(req.default_values, &data, sizeof(req.default_values));
strcpy(req.consumer_label, "led_gpio_a_14");
req.lines = 1;
ret = ioctl(fd, GPIO_GET_LINEHANDLE_IOCTL, &req);
if (ret == -1) {
ret = -errno;
fprintf(stderr, "Failed to issue GET LINEHANDLE IOCTL (%d)\n",
ret);
}
if (close(fd) == -1)
perror("Failed to close GPIO character device file");
/* Start led blinking */
while(1) {
data.values[0] = !data.values[0];
ret = ioctl(req.fd, GPIOHANDLE_SET_LINE_VALUES_IOCTL, &data);
if (ret == -1) {
ret = -errno;
fprintf(stderr, "Failed to issue %s (%d)\n",
"GPIOHANDLE_SET_LINE_VALUES_IOCTL", ret);
}
sleep(1);
}
/* release line */
ret = close(req.fd);
if (ret == -1) {
perror("Failed to close GPIO LINEHANDLE device file");
ret = -errno;
}
return ret;
}
- 编译一个小程序,首先需要搭建交叉编译环境,参考博客 《STM32MPU 开发环境搭建》。
三、参考链接
- 标题: STM32MP157A-DK1 点亮LED
- 作者: The Redefine Team
- 创建于 : 2024-03-25 21:53:26
- 更新于 : 2024-03-25 21:53:26
- 链接: https://redefine.ohevan.com/2024/03/25/STM32MP157A-DK1 点亮LED/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论