Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
DIY综合交流区
[RealTouch例程]定时器控制
发布于 2012-11-09 08:46:09 浏览:3742
订阅该版
实验目的 ? 快速熟悉了解定时器相关的API 硬件说明 本实验使用RT-Thread官方的Realtouch开发板作为实验平台。涉及到的硬件主要为 ? 串口3,作为rt_kprintf输出,需要连接JTAG扩展板 具体请参见《Realtouch开发板使用手册》 实验原理及程序结构 实验设计 本实验的主要设计目的是帮助读者了解定时器控制API的相关用法。请读者注意,本实验本身不具有实际的工程参考价值,只是帮助读者快速了解相关API的用法。 源程序说明 本实验对应1_kernel_timer_control 系统依赖 在rtconfig.h中需要开启 ? #define RT_USING_HEAP 此项可选,开启此项可以创建动态线程和动态信号量,如果使用静态线程和静态信号量,则此项不是必要的 ? #define RT_USING_CONSOLE 此项必须,本实验使用rt_kprintf向串口打印按键信息,因此需要开启此项 ? #define RT_USING_TIMER_SOFT 此项必须,本实验使用软件定时器,因此必须开启此项 主程序说明 这个例程会初始化两个静态定时器对象,一个是单次定时,一个是周期性的定时,与上节内容区别较小。 定时器创建 ```timer1 = rt_timer_create("timer1", /* 定时器名字是 timer1 */ timeout1, /* 超时时回调的处理函数 */ RT_NULL, /* 超时函数的入口参数 */ 100, /* 定时长度,以OS Tick为单位,即10个OS Tick */ RT_TIMER_FLAG_PERIODIC); /* 周期性定时器 */ /* 启动定时器 */ if (timer1 != RT_NULL) rt_timer_start(timer1);``` 另外,我们为了更明显的看到定时周期的改变将定时周期通过前后tick相减算了出来,当然开始的定时值为0.1s,后来的定时值改为3s,你应该没有理由感觉不出来的。 超时函数 ```rt_tick_t timeout = 3000; rt_kprintf("periodic timer is timeout "); rt_kprintf("the time set is %d ",(rt_tick_get()-tick)); tick = rt_tick_get(); count ++; if (count >= 8) { rt_timer_control(timer1, RT_TIMER_CTRL_SET_ONESHOT, (void *)&timeout); /* 控制定时器然后更改超时时间长度 */ rt_timer_control(timer1, RT_TIMER_CTRL_SET_TIME, (void *)&timeout); count = 0; }``` 编译调试及观察输出信息 编译请参见《RT-Thread配置开发环境指南》完成编译烧录,参考《Realtouch开发板使用手册》完成硬件连接,连接扩展板上的串口和jlink。 运行后可以看到如下信息: | / - RT - Thread Operating System / | 1.1.0 build Aug 14 2012 2006 - 2012 Copyright by rt-thread team periodic timer is timeout the time set is 100 periodic timer is timeout the time set is 100 periodic timer is timeout the time set is 100 periodic timer is timeout the time set is 100 periodic timer is timeout the time set is 100 periodic timer is timeout the time set is 100 periodic timer is timeout the time set is 100 periodic timer is timeout the time set is 100 periodic timer is timeout the time set is 3000 periodic timer is timeout the time set is 3000 periodic timer is timeout the time set is 3000 periodic timer is timeout the time set is 3000 ... 结果分析 本例程主要展示的就是动态改变定时周期,定时器创建之初周期为100ms,在第八个周期通过控制函数将其周期变为3000ms。从打印的速度我们可以明显发现周期变长了。此外,通过打印两次tick之差,也能获得定时周期,知道在第八个周期以后周期发生了变化。 ![实验4_4定时器控制.pdf](/uploads/88_bb873e470ce40320fe6c363f53aea86e.pdf)
查看更多
1
个回答
默认排序
按发布时间排序
撰写答案
登录
注册新账号
关注者
0
被浏览
3.7k
关于作者
shaolin
这家伙很懒,什么也没写!
提问
115
回答
444
被采纳
0
关注TA
发私信
相关问题
1
[项目]搞个开源的硬件项目
2
硬件计划贴,及时更新,欢迎提意见
3
软件计划贴,及时更新,欢迎提意见::WMA,MOUNT,LWIP等问题急需解决.
4
MMS协议
5
定点的wma解压库-libwma
6
QQ群记录 [20090821]
7
STM32网络收音机PCB报名征集
8
第一版调试记录
9
第二版硬件讨论
10
RADIO项目相关模块规格--欢迎大家自己做板时规格与此兼容,减少重复劳动
推荐文章
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组件
最新文章
1
开源共生 商业共赢 | RT-Thread 2024开发者大会议程正式发布!
2
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
3
RT-Thread EtherKit开源以太网硬件正式发布
4
如何在master上的BSP中添加配置yml文件
5
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
热门标签
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
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
19
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
6
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
RTT_逍遥
1
篇文章
5
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部