Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
nuc980
定时器
Nuvoton_新唐mcu
NUC980测评——定时器Timer
发布于 2022-03-14 20:13:54 浏览:1375
订阅该版
开发板:新唐NK-980IOT V1.0 开发工具:RT-Thread Studio 2.21;NUWriter 1.18 RT-Thread版本:4.05 ![开发板.jpg](https://oss-club.rt-thread.org/uploads/20220314/8e77bb95add319ee607044c21357643e.jpg.webp) 二、NUC980定时器介绍 1、概述 NUC980定时器有六个32位定时器,Timer0~Timer5。该定时器具有多种功能,比如频率测量、延时、时钟产生,通过外部输入实现事件计数,并且利用外部捕捉引脚实现间隔测量。 2、特性 (1)6个32位定时器,每个定时器具有一个24位的增计数器和一个8位的预分配计数器; (2)每个定时器都有独立的时钟源; (3)具有单次、周期、反转输出和连续技术等操作模式; (4)通过CNT(TIMERx_CNT[23:0])可读取24位增计数器; (5)通过外部引脚TMx-ECNT(x=0~5)实现事件计数功能; (6)使引脚TMX_TGL(x=0~5)实现输出反转; (7)通过CAPDAT(TIMERx_CAP[23:0])读取24位捕捉值; (8)通过外部引脚TMx_EXT(x=0~5)实现外部时间捕捉,用于间隔测量; (9)支持用于RTC时钟校正的RTC 1Hz信号的时间捕捉; (10)支持利用外部引脚TMx_EXT(x=0~5)的时间捕捉实现24位增计数器复位; (11)支持利用定时器的中断信号将处理器从空闲/掉电模式唤醒; (12)支持利用超时中断和捕捉中断触发ADC和PDMA; (13)支持内部定时器触发,定时器0触发定时器1,定时器2触发定时器3,定时器4触发定时器5。 3、框图 每个定时器具有一个8位预分频计数器,一个24位增计数器,一个24位比较计数器和一个中断请求信号。参考计数器控制框图图6.9-1和图6.9-2。每个计数器具有6个可选时钟源,表明了时钟源控制功能。 ![6.9-1.png](https://oss-club.rt-thread.org/uploads/20220314/17609cf65ba95b7a4ad9acf55f8a0bd9.png.webp) ![6.9-2.png](https://oss-club.rt-thread.org/uploads/20220314/159846f5a42271f480647009468fe619.png.webp) ![6.9-3.png](https://oss-club.rt-thread.org/uploads/20220314/63a6ceb3746e9f9929fcfa42855876bd.png.webp) 三、定时器测试 1、软件编写 本程序使用RT-Thread Studio编写,创建流程如下: (1)创建项目 点击RT-Thread Studio的文件——新建——RT-Thread项目,选择新唐开发板,如下图所示 ![新建项目.png](https://oss-club.rt-thread.org/uploads/20220314/d60e26eeddf33bc819ffb67d5edffc77.png) (2)使能硬件定时器 双机“RT-Thread Settings”,打开“RT-Thread Settings”界面,点击界面中的右箭头,选择“硬件”,进入“ENable Timer COntroller(TIMER)”选项,如下如所示。 ![硬件使能界面.png](https://oss-club.rt-thread.org/uploads/20220314/1572fee47f738979ab3e9ebd79fbf25b.png.webp) 图中可以看到TIMER0~TIMER5,共五个定时器已经使能。点击“Enable TIMER0”左侧的箭头,可以对定时器的工作模式进行设置,如下图所示。 ![模式选择.png](https://oss-club.rt-thread.org/uploads/20220314/3a0967fb35dd2e9b2d4fbf313464e21e.png) 从图可以看出,定时器有“TIMER”和“TIMER CAPTURE”两种功能。本次测评主要对定时功能进行测试,故选择TIMER功能。 到此,硬件使能功能完成。 (3)定时器软件程序编写 通过上述步骤使能定时器功能后,开始对定时器进行软件编程。 首先查找定时器设备。代码如下: ``` hwtimer0 = rt_device_find(HWTIMER_DEV_NAME); ``` 这里要注意HWTIMER_DEV_NAME,一般的设备,其名称为“timer0”,但是对于该处理器,其名称为“etimer0”,一定要注意这个问题,其余的定时器名称类似。 然后打开设备,代码如下: ``` ret = rt_device_open(hwtimer0, RT_DEVICE_OFLAG_RDWR); ``` 再设置回调函数,代码如下: ``` rt_device_set_rx_indicate(hwtimer0, timeout_cb); ``` 此处的回调函数名称为timeout_cb。 设置定时器模式,代码如下: ``` mode = HWTIMER_MODE_PERIOD; ret = rt_device_control(hwtimer0, HWTIMER_CTRL_MODE_SET, &mode); ``` 最后设置超时时间,代码如下: ``` timeout_s.sec = 1; /* 秒 */ timeout_s.usec =0; /* 微秒 */ if (rt_device_write(hwtimer0, 0, &timeout_s, sizeof(timeout_s)) != sizeof(timeout_s)) { rt_kprintf("set timeout value failed\n"); return RT_ERROR; } ``` 该程序中,将超时时间设置为1s。 通过上述设置,便完成了定时器的设置。 (4)程序结构 本程序包括一个LED现成,用来指示工作状态,一个定时器回调函数,每次定时器中断,都会输出当前的Tick数值,一个按键回调函数,按下key1,将定时器的超时时间设置为1s,按下key2,将定时器的回调时间设置为2s。 2、程序运行 这是超时时间设置为1s时的显示数据。每次显示输出的时间间隔为1s。 ![显示界面1.png](https://oss-club.rt-thread.org/uploads/20220314/e512f2f9f7667a26076093918aa9f312.png) 这是超时时间设置为2s时显示数据,每次显示输出的时间间隔为2s。 ![显示界面2.png](https://oss-club.rt-thread.org/uploads/20220314/af6c10ac0ecf51201aabdb6a8b60d04c.png) 运行的视频和程序代码如下所示: [Bilibili程序运行视频](https://www.bilibili.com/video/BV1ka411b7sx?spm_id_from=333.999.0.0) [Gitee程序代码](https://gitee.com/pandw/RT-Thread-nuc980-HWTIMER) 四、测试总结 通过上述测试证明,利用RT-Thread编程定时器程序十分简单,只要正确输入定时器的名称,通过简单几个语句便可使实现定时器的配置,其配置和使用过程基本与设备硬件无关,凸显了RT-Thread操作系统的便捷性。
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
主战坦克
主战坦克
文章
5
回答
0
被采纳
0
关注TA
发私信
相关文章
1
定时器中要延时,用什么办法?
2
cubemx配置定时器PWM可以输出移到RT_stdio不能输出?
3
对源码中优先级处理和定时器的两个疑问?
4
关于定时器时钟,怎么定时一个1MHz时钟
5
rt_spi_send、rt_spi_recv不能放在定时器里进行使用
6
关闭定时器中断,再开启中断
7
关于在L4潘多拉上定时器TIM3跑hwtimer_sample例程出错的问题
8
rtthread studio里定时器倍频问题
9
rt-thread-studio开发潘多拉的定时器出现问题?
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
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部