当前位置: 首页> 文旅> 旅游 > RT-Thread使用HAL库实现双线程控制LED交替闪烁

RT-Thread使用HAL库实现双线程控制LED交替闪烁

时间:2025/7/8 17:12:31来源:https://blog.csdn.net/qq_59527512/article/details/139998657 浏览次数:0次

如何创建工程我的其他文中你面有可以进去查看

1创建线程(以动态方式实现)

1-2创建函数入口

1-2启动函数

main.c文件源码

/** Copyright (c) 2006-2024, RT-Thread Development Team** SPDX-License-Identifier: Apache-2.0** Change Logs:* Date           Author       Notes* 2024-06-26     RT-Thread    first version*/#include <rtthread.h>#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>#include "main.h"
#include "usart.h"
#include "gpio.h"// 线程入口函数
static void thread1_entry(void *parameter)
{rt_uint32_t count = 0;while (1){// 线程执行的代码HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_3);rt_kprintf("Thread count: %d\n", count++);rt_thread_delay(500); // 线程延时,单位为毫秒}
}// 线程入口函数
static void thread2_entry(void *parameter)
{rt_uint32_t count = 0;while (1){// 线程执行的代码HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_5);rt_kprintf("Thread count: %d\n", count++);rt_thread_delay(1000); // 线程延时,单位为毫秒}
}int main(void)
{int count = 1;HAL_Init();MX_GPIO_Init();MX_USART1_UART_Init();//定义线程控制块rt_thread_t tid1 = RT_NULL;// 动态创建线程tid1 = rt_thread_create("dynamic1_thread",thread1_entry, // 线程入口函数RT_NULL,     // 线程入口参数512,         // 线程栈大小20,          // 线程优先级5);         // 线程时间片if (tid1 != RT_NULL)//判断是否成功创建{// 启动线程rt_thread_startup(tid1);}//定义线程控制块rt_thread_t tid2 = RT_NULL;// 动态创建线程tid2 = rt_thread_create("dynamic2_thread",thread2_entry, // 线程入口函数RT_NULL,     // 线程入口参数512,         // 线程栈大小25,          // 线程优先级5);         // 线程时间片if (tid2 != RT_NULL)//判断是否成功创建{// 启动线程rt_thread_startup(tid2);}while (count++){//串口输出LOG_D("Hello RT-Thread!");//延迟,在延迟期间使用权在内核,由内核分配rt_thread_mdelay(1000);}return RT_EOK;
}

效果

串口输出哪一个线程在运行

LED交替闪烁一个1秒闪烁,一个0.5秒闪烁

下面是串口的效果

关键字:RT-Thread使用HAL库实现双线程控制LED交替闪烁

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: