简介
使用 BearPi IOT Std板, 开发板简单信息
主芯片: STM32L431RCT6
串口: Usart1
USER LED : PC13
E53_SC1 扩展板与主板连接:
I2C : I2C1 (光照强度传感器:BH1750)
LED: PB9
RT-Thread 创建线程
线程的管理方式
添加用户代码
main.c
#include <board.h>
#include <rtthread.h>
#include <drv_gpio.h>
#ifndef RT_USING_NANO
#include <rtdevice.h>
#endif /* RT_USING_NANO */
#define LED0_PIN GET_PIN(C, 13)
#define THREAD_PRIORITY 25
#define THREAD_STACK_SIZE 512
#define THREAD_TIMESLICE 5
static rt_thread_t tid1 = RT_NULL;
int main(void)
{
return 0;
}
static void led_thread_entry(void *parameter)
{
while (1)
{
rt_thread_mdelay(1000);
rt_pin_write(LED0_PIN, PIN_HIGH);
rt_thread_mdelay(1000);
rt_pin_write(LED0_PIN, PIN_LOW);
}
}
int led_test(void)
{
/* 引脚初始化 */
rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT);
tid1 = rt_thread_create("led_thread_name", // 线程名称
led_thread_entry, RT_NULL,
THREAD_STACK_SIZE,
THREAD_PRIORITY, THREAD_TIMESLICE);
if (tid1 != RT_NULL)
rt_thread_startup(tid1); // 启动线程
return 0;
}
MSH_CMD_EXPORT(led_test, led test desc.); //导出到 msh 命令列表中
编译和烧录
测试
a. 串口软件中看到如下
b. 输入指令 help
其中led_test 就是我们导出到msh命令列表中的函数名称, led test desc.就是描述信息
c. list thread 看看当前线程
d. 输入led_test 执行线程
此时看到灯在闪动了
d. list thread 看有哪些线程运行
虽然名字显示不全, 但是可以看到, 就是create函数中的第一个参数, 测试也可以将名字设置长些, 修改 rtconfig.h 中的 RT_NAME_MAX 宏定义即可
前言后说
1. MSH_CMD_EXPORT(thread_sample, thread sample); // 导出到 msh 命令列表中
thread_sample : 指令
thread sample : 说明
2. 线程的名称;线程名称的最大长度由 rtconfig.h 中定义的 RT_NAME_MAX 宏指定,多余部分会被自动截掉
#define RT_NAME_MAX 8 // 默认的就8个字节
参考:
RT-Thread 工程创建
RT-Thread 内部 - 线程