Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
软件定时器
RT -Thread 使用心得系列2 - SoftTimer
发布于 2022-06-08 15:34:48 浏览:641
订阅该版
[tocm] # Rr-thread studio 学习与使用 ## RT -Thread 使用心得系列2 - SoftTimer 软件定时器是由操作系统提供的一类系统接口,它构建在硬件定时器基础之上,使系统能够提供不受数目限制的定时器服务。 在开始使用stm32硬件设备之前,先使用下系统软件定时器,功能还是比较强大的,可以没有个数限制,对于处理一些定时任务,十分方便。这次只写一个简单demo,参照是官网的demo。只是做了些可以批量使用的处理。 - 因为RT-Thread Studio 没有官方的详细使用说明,所以有些需要自己摸索设置软件,今天关于系统提示“可以修改硬件复位为系统复位”,意思就是可以不用手动复位,这个配置我找了一会才找到,记录如下。 ![set1.jpg](https://oss-club.rt-thread.org/uploads/20220608/7e336175269b6143b554c586b1401026.jpg.webp) 按照图示的步骤可以完成操作。 - 为了便于使用定时器,重新定义了结构体 ```C typedef struct { char *name; void (*timeout)(void *parameter); void *parameter; rt_tick_t time; rt_uint8_t flag; }SoftTimerStruct; ``` 利用数组对结构体赋值 ```C SoftTimerStruct sfTimer[]={ {"timer1", Time1_Callback,RT_NULL, 1000, RT_TIMER_FLAG_PERIODIC}, {"timer2", Time2_Callback,RT_NULL, 3000, RT_TIMER_FLAG_PERIODIC}, }; ``` 这样可以方便的增加软件定时器。这样可以方便的增加定时器。 创建一个测试demo ```C int timer_sample(void) { rt_uint8_t SoftTimerIndex = 0; while(1) { if(strcmp(sfTimer[SoftTimerIndex].name,"") != 0) { soft_timer[SoftTimerIndex] = rt_timer_create(sfTimer[SoftTimerIndex].name, sfTimer[SoftTimerIndex].timeout, sfTimer[SoftTimerIndex].parameter, sfTimer[SoftTimerIndex].time, sfTimer[SoftTimerIndex].flag ); if (soft_timer[SoftTimerIndex] != 0) { rt_timer_start(soft_timer[SoftTimerIndex]); rt_kprintf("soft_timer %d creat success!\n",SoftTimerIndex); } SoftTimerIndex++; if(SoftTimerIndex==2)break; } else { break; } } return 0; } ``` 以上测试结果如下: ![res1.jpg](https://oss-club.rt-thread.org/uploads/20220608/27e83a6c146ac3f305a76c46309cf5b6.jpg.webp) 后续会将led的驱动加入到软件定时器中做一个led闪烁。 ## 总结: - 1. 设置复位模式,这个官方应该给个更详细的配置说明,实在要吐槽下。这样的摸索太费时间。 - 2.debug的配置说明,还没有特别会使用,后续会测试下,这个需要测试下。 - 3.项目的保存,必须没有空格和中文,项目直接使用重命名来进行更换名称。 - 4.创建软件定时器需要做个上限判断不然会系统死机。 ![res1.jpg](https://oss-club.rt-thread.org/uploads/20220608/27e83a6c146ac3f305a76c46309cf5b6.jpg.webp)
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
cgh198510
这家伙很懒,什么也没写!
文章
3
回答
6
被采纳
0
关注TA
发私信
相关文章
1
软件定时器反复启动,会怎样?
2
软件定时器有没有定时器复位功能
3
软件定时器的回调函数里可以挂起或解挂另一个线程吗?
4
RT_TIMER里面分了HARD和SOFT类型,本质有啥区别
5
定时器不准及定时器冲突问题
6
RT_Thread nano开启软件定时器后线程卡死
7
在软件定时器还在运行的时候,调用rt_timer_start函数会怎么样?
8
软件定时器线程优先级怎么通过代码设置?
9
软件定时器优先级问题导致系统重启?
10
线程调度的问题,线程无法被及时抢占
推荐文章
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在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部