Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ART-Pi Smart
开发板评测
【开发板评测】2 ART-Pi Smart 点亮第一个 LED
发布于 2022-04-15 20:53:57 浏览:1153
订阅该版
文章目录 [toc] ------------- 官方资料链接 ART-Pi Smart 活动地址:[https://club.rt-thread.org/ask/article/3624.html](https://club.rt-thread.org/ask/article/3624.html) ART-Pi Smart 开发板介绍:[https://club.rt-thread.org/ask/article/3174.html](https://club.rt-thread.org/ask/article/3174.html) ART-Pi Smart 开发文档:[https://art-pi.gitee.io/smart-website/docs/#/user_manual/user_manual](https://art-pi.gitee.io/smart-website/docs/#/user_manual/user_manual) ART-Pi Smart SDK 软件包:[https://gitee.com/rtthread/ART-Pi-smart](https://gitee.com/rtthread/ART-Pi-smart) ART-Pi Smart 交叉编译工具链官方网盘链接: [https://pan.baidu.com/s/1p7PRhV3dTGIb7hxv34YWYw](https://pan.baidu.com/s/1p7PRhV3dTGIb7hxv34YWYw) 提取码: ndxq RT-Thread Smart 入门指南:[https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-smart/rt-smart-quickstart/rt-smart-quickstart](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-smart/rt-smart-quickstart/rt-smart-quickstart) --------- 评测文章 1. [ART-Pi Smart 开箱体验](https://club.rt-thread.org/ask/article/3695.html) 2. [ART-Pi Smart 点亮第一个 LED](https://club.rt-thread.org/ask/article/3698.html) --------- 本文主要讲述在 windows 使用 vscode 作为开发环境,点亮 LED 的过程。 # 1 工程的构建 在 windows 下构建工程的详细步骤在 RTT 官方已经给出了详细的步骤,本人参考 RTT 官方文档进行工程的构建,官方文档为 [vscode 插件体验](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-smart/application-note/quick_start/quick_start?id=vscode-%e6%8f%92%e4%bb%b6%e4%bd%93%e9%aa%8c)。 在构建工程的过程中主要遇到了如下几个问题: 1. 在 vscode 中执行快捷键 `ctrl + shift + p` 没有响应,这种情况大概率是这个快捷键和其他软件的快捷键冲突了,可以点击标题栏中的 “帮助——显示所有命令” 代替。 ![image.png](https://oss-club.rt-thread.org/uploads/20220415/c66bc0293a360ce12da4204c9cf86ad5.png) 2. 构建工程后点击编译按钮时出现了没有找到 `scons` 的错误提示,按照文档提示需要安装 `scons`,命令如下 ``` pip install scons // 安装 scons 工具 // 安装过程中如果提示如下错误 failed to create process ... ... // 使用下面的命令进行安装 python -m pip install scons ``` 3. 可以通过修改 RT-Thread Smart 设置来修改生成的可执行文件的名字,开发板的 IP,可执行文件下载到开发板上的路径等信息,如下图所示。 ![image.png](https://oss-club.rt-thread.org/uploads/20220415/5c91367d9b67e6b3996475033ea644c2.png.webp) 构建完成的工程如下图所示,点击 vscode 最下方的**编译**按钮科一编译整个工程,点击编译旁边的**下载**按钮可将编译好的可执行文件下载到开发板的指定目录中,本工程设置的下载路径为 `/root/bin/` (需要设置好开发板的IP,且编译没有错误)。 ![image.png](https://oss-club.rt-thread.org/uploads/20220415/93691886a95262ba1827fea97211dc7e.png) # 2 LED 应用的测试 将编译好的可执行文件 `led_demo.elf` 成功下载到开发板上后,在开发板的 `/root/bin/` 目录下可以找到该文件,运行该可执行文件后,可以看到控制台交替打印 LED 的状态,同时开发板上的 LED2 闪烁,表示程序运行成功。 ![image.png](https://oss-club.rt-thread.org/uploads/20220415/e0579af7c5ae092699399650fcc5596d.png.webp) 设置应用开机自启动(待补充) # 3 代码分析 查阅原理图找到 LED2,可以看到 LED2 使用的是 GPIO5_3 进行控制,如下图所示。(原理图在文件夹 `ART-Pi-smart\documents\hardware\ART-Pi Smart 硬件原理图` 下) ![image.png](https://oss-club.rt-thread.org/uploads/20220415/ff62e42ffb140a54db93700c10098928.png) 代码部分参考了官方 SDK 中 ART-Pi-smart\userapps\apps\gpio 目录下的文件,从代码看 led 的控制和 RT-Thread 中的 [IO 设备模型](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/device)的编写类似。main.c 的代码如下,主要调用了 led2 初始化的代码和控制 led 闪烁的代码。 ```c #include
#include
#include "led.h" int main(int argc, char **argv) { led2_init(); while(1) { led2_on(); //rt_kprintf("led2 on\n"); rt_thread_mdelay(500); led2_off(); //rt_kprintf("led2 off\n"); rt_thread_mdelay(100); } led2_device_close(); return 0; } ``` led.c 的代码如下,实现了 led2 初始化和亮灭的控制代码。 ```c #include
#include
#include "led.h" static rt_device_t pin_dev = RT_NULL; /** * @brief LED2 灭,高电平灭 * @param 无 * @return 无 */ void led2_off(void) { struct rt_device_pin_status pin_status; if (pin_dev == RT_NULL) { rt_kprintf("can not find pin device!\n"); return; } pin_status.pin = LED2_PIN; pin_status.status = 1; rt_device_write(pin_dev, 0, (void *)&pin_status, sizeof(pin_status)); } /** * @brief LED2 亮,低电平亮 * @param 无 * @return 无 */ void led2_on(void) { struct rt_device_pin_status pin_status; if (pin_dev == RT_NULL) { rt_kprintf("can not find pin device!\n"); return; } pin_status.pin = LED2_PIN; pin_status.status = 0; rt_device_write(pin_dev, 0, (void *)&pin_status, sizeof(pin_status)); } /** * @brief LED2 初始化 * @param 无 * @return 成功返回0,失败返回-1 */ int led2_init(void) { struct rt_device_pin_mode pin_mode; pin_dev = rt_device_find("pin"); if (pin_dev == RT_NULL) { rt_kprintf("can not find pin device!\n"); return -1; } rt_device_open(pin_dev, RT_DEVICE_OFLAG_RDWR); pin_mode.pin = LED2_PIN; pin_mode.mode = 0; rt_device_control(pin_dev, 0, (void *)&pin_mode); return 0; } /** * @brief 关闭 led2 设备 * @param 无 * @return 无 */ void led2_device_close(void) { rt_device_close(pin_dev); } ``` led.h 的代码如下,主要实现了 led2 的引脚的定义和声明了一些函数。 ```c #ifndef _LED_H_ #define _LED_H_ struct rt_device_pin_mode { rt_uint16_t pin; rt_uint16_t mode; }; struct rt_device_pin_status { rt_uint16_t pin; rt_uint16_t status; }; #define GET_PIN(PORTx, PIN) (32 * (PORTx - 1) + (PIN & 31)) #define LED2_PIN GET_PIN(5,3) // LED的引脚 GPIO5_3 int led2_init(void); void led2_off(void); void led2_on(void); void led2_device_close(void); #endif // led.h ```
4
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
crystal266
嵌入式
文章
14
回答
547
被采纳
161
关注TA
发私信
相关文章
1
求助vscode开发art-pi smart开发板的问题
2
vscode下载rt-smart用户态代码时udb有问题
3
RGB565 显示图片异常
4
浮点数打印,从内核态直接打印和从用户态访问设备再触发打印,效果不一致
5
csi 开启 DMA_REQ_EN_RFF 前提下,开启 CSI 就卡住无打印
6
求助如何移植rt-thread到野火imx6ull开发板上
7
RT-thread smart 用户态程序运行出错
8
art-pi-smart 编译报错
9
ART-PI Smart User 运行LED 程序崩溃
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
812
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部