基于rt-thread studio的STM32裸机开发第一节:点亮一个LED

基于rt-thread studio的STM32裸机开发第一节:点亮一个LED

前言

RT-Thread Studio团队在2019年末推出了本土化的中文免费RT-Thread Studio集成开发环境。在推出V1.0.0短短半年时间里,国内注册使用用户已达到10000+,Studio社区非常活跃,大家对自主国产化集成开发环境热情度极高。

RT-Thread Studio 主要包括工程创建和管理,代码编辑,SDK管理,RT-Thread配置,构建配置,调试配置,程序下载和调试等功能,结合图形化配置系统以及软件包和组件资源,减少重复工作,提高开发效率。

介于此,我们开始试着使用RT-Thread Studio先进行STM32的裸机开发。

20fa6700330c241aa4ed4232649b9029.png

工程创建

「步骤一:新建工程」

RT-Thread版本不仅仅是一个实时内核,还包含了丰富的中间层组件

9016ea39dc0257c0ed2348a2a43f7e8e.png

RT-Thread Nano是RT-Thread之上进行剪裁后形成的精简版,去掉了一些组件和各种开发板的BSP,仅保留了最核心的实时内核。

这里选择RT-Thread进行创建

c70c2d8580053b0483f3a921914aa61d.png

这里采用STM32F103RCT6作为主控,故做出如图的设置。需根据实际情况选择对应的芯片型号, 工程建立完成,如图所示。

7c83ca42fe94e1cad7ddc74899858ba2.png

先进行调试查看程序是否存在错误。 如图所示

「步骤二:点灯准备工作」 对于点灯,需要确定IO口的程序命名,以及其是高或低电平点亮。这里确定的电路图对应的LED接口为PA8,低电平点亮,高电平熄灭。

1a7574b9c2c8de2425f3c9137d07546d.png

对于RT-Thread Studio生成的工作区间IO口定义文件在drv_gpio.c中。 可见PA8端口对应为数字8。 对于IO端口的高低电平,输入输出模式在如图所示的文件中。 对于此处LED的IO口相关配置函数如下

//定义LED为输出
rt_pin_mode(LED, PIN_MODE_OUTPUT);
//定义LED端口为低电平
rt_pin_write(LED, PIN_LOW);

「步骤三:点灯」 这里使用#define定义LED端口8,特别的,也可以采用GET_PIN(A,8)来替代这里的8。

#include <rtthread.h>
#include <rtdevice.h>

#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>

/* 引脚编号,通过查看驱动文件drv_gpio.c确定 */
#define LED 8

int main(void)
{
    int count = 1;
    //定义LED为输出
    rt_pin_mode(LED, PIN_MODE_OUTPUT);
    while (count++)
    {
        //定义LED端口为低电平
        rt_pin_write(LED, PIN_LOW);
//        LOG_D("Hello RT-Thread!");
        rt_thread_mdelay(1000);
    }

    return RT_EOK;
}

源码说明,先定义号LED端口,再对其端口模式进行配置,再接着在主循环中进行配置LED端口为低电平进行点亮。

「步骤三:点灯源码改进」

上述采用点灯,单纯实现点亮,无法实现闪烁功能。

//定义LED端口为低电平
rt_pin_write(LED, count % 2);

这里采用取余,进行LED灯闪烁功能的实现。

「步骤四:下载及实验现象」

LED灯点亮实验:

e63ffcc7c40194cfc15d2d1a85e1fddb.gif

LED灯闪烁实验:

以上就是本次使用基于rt-thread studio的STM32裸机开发第一节:点亮一个LED。

8e49593ebe735059249139c6dd169c9b.png

 

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是基于 RT-Threadstm32 风速检测程序,使用 RS485 风速传感器通信: 1. 首先需要在 RT-Thread Studio 中创建一个新项目,选择 STM32 的板子类型,然后在 BSP 中选择对应的开发板。 2. 在项目中添加 RS485 驱动,方法如下: a. 打开 BSP 配置文件,找到 "Hardware Drivers Config" -> "Serial Drivers Config" -> "RS485 Config",勾选 "Enable RS485 support"。 b. 在 "RS485 Config" 中配置 RS485 相关参数,如 UART 端口、波特率等。 c. 在 "Hardware Drivers Config" -> "Serial Drivers Config" -> "Serial Driver for USART" 中选择对应的串口驱动。 3. 安装风速传感器,并将其连接到 STM32 开发板上。 4. 编写风速检测的应用程序,可以参考以下代码: ``` #include <rtthread.h> #include <rtdevice.h> /* 定义 RS485 设备名称 */ #define RS485_DEVICE_NAME "rs485" /* 定义风速检测任务的栈大小和优先级 */ #define WIND_TASK_STACK_SIZE 512 #define WIND_TASK_PRIORITY 5 /* 风速检测任务入口函数 */ static void wind_task_entry(void* parameter) { rt_device_t dev; rt_uint8_t buf[8]; rt_size_t len; rt_uint16_t wind_speed; /* 查找 RS485 设备 */ dev = rt_device_find(RS485_DEVICE_NAME); if (dev == RT_NULL) { rt_kprintf("find device %s failed!\n", RS485_DEVICE_NAME); return; } /* 打开 RS485 设备 */ if (rt_device_open(dev, RT_DEVICE_OFLAG_RDWR) != RT_EOK) { rt_kprintf("open device %s failed!\n", RS485_DEVICE_NAME); return; } /* 循环读取风速传感器数据 */ while (1) { /* 发送读取指令 */ rt_device_write(dev, "RD", 2); /* 等待数据返回 */ len = rt_device_read(dev, buf, sizeof(buf), RT_WAITING_FOREVER); if (len != 6) { rt_kprintf("read data failed!\n"); continue; } /* 解析风速数据 */ wind_speed = (buf[4] << 8) | buf[5]; /* 打印风速数据 */ rt_kprintf("wind speed: %d\n", wind_speed); /* 休眠 1 秒 */ rt_thread_mdelay(1000); } } /* 风速检测任务控制块 */ static struct rt_thread wind_task; int main(void) { /* 创建风速检测任务 */ rt_thread_init(&wind_task, "wind_task", wind_task_entry, RT_NULL, (char*)malloc(WIND_TASK_STACK_SIZE), WIND_TASK_STACK_SIZE, WIND_TASK_PRIORITY, 10); rt_thread_startup(&wind_task); return 0; } ``` 5. 编译、下载程序到 STM32 开发板上,并运行程序,即可实现基于 RT-Thread 的风速检测功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值