Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
HWTIMER_硬件定时器
硬件定时器
定时器未进入超时回调函数
发布于 2024-09-27 10:53:20 浏览:228
订阅该版
新人想做一个硬件定时器的实验,跟着网上的配置做完之后,发现没有进入超时回调函数,但是能够正常的写入和读取我我设置的超时值,怀疑是初始化配置有问题,但又找不到哪里配置有问题 ![f475a0a08258c1741f5172af5ff615b.png](https://oss-club.rt-thread.org/uploads/20240927/65b1f4aef51104d9518a093ab4a5357b.png)
查看更多
miandain_7
2024-09-29
这家伙很懒,什么也没写!
hw定时器的操作,我没有认真研究过,根据现象感觉是定时器没有生成中断,所以也就不会回调中断函数。我把我用硬件定时的操作步骤写下来,供你参考。我使用的STM32F407。 1. 采用RTT内置的HWTIMER驱动框架。 2. 在RTthread_Setting里面打开HWTIMER驱动开关。 3. 在board.h里面打开BSP_USING_TIM的预定义开关,启动相关硬件定时器编译 4. 在board.h里面打开BSP_USING_TIM2的预定义开关,采用TIM2的硬件定时器。主要原因是TIM1为增强型定时器,中断较为复杂,项目紧急,以快速实施为标准,TIM2为通用定时器,可以借用官方标准配置改写。 5 在drivers➡include➡config➡tim_config.h新增TIM2_CONFIG配置,因为TIM2和TIM3一致,可以根据TIM3的改写。 6. 统一风格,在board.c文件内新增HAL_TIM_Base_MspInit函数,这个函数用cubemx生成。这个函数实际上就是使能了TIM2的时钟 7. 在stm32f4xx_hal_conf.h中开启HAL_TIM_MODULE_ENABLED。
3
个回答
默认排序
按发布时间排序
oxlm
2024-09-27
这家伙很懒,什么也没写!
没有源码,期望和实际的描述,都是无效的描述。没这些信息,谁都没法给你解答
Jack_____
2024-09-28
纸上得来终觉浅,绝知此事要躬行。
没看明白你的问题出在哪🤔 这是我测试的程序没问题啊,也是官方例程。 ```c /* * 程序清单:这是一个 hwtimer 设备使用例程 * 例程导出了 hwtimer_sample 命令到控制终端 * 命令调用格式:hwtimer_sample * 程序功能:硬件定时器超时回调函数周期性的打印当前tick值,2次tick值之差换算为时间等同于定时时间值。 */ #include
#include
#define HWTIMER_DEV_NAME "timer3" /* 定时器名称 */ /* 定时器超时回调函数 */ static rt_err_t timeout_cb(rt_device_t dev, rt_size_t size) { rt_kprintf("this is hwtimer timeout callback fucntion!\n"); rt_kprintf("tick is :%d !\n", rt_tick_get()); return 0; } static int hwtimer_sample(int argc, char *argv[]) { rt_err_t ret = RT_EOK; rt_hwtimerval_t timeout_s; /* 定时器超时值 */ rt_device_t hw_dev = RT_NULL; /* 定时器设备句柄 */ rt_hwtimer_mode_t mode; /* 定时器模式 */ rt_uint32_t freq = 10000; /* 计数频率 */ /* 查找定时器设备 */ hw_dev = rt_device_find(HWTIMER_DEV_NAME); if (hw_dev == RT_NULL) { rt_kprintf("hwtimer sample run failed! can't find %s device!\n", HWTIMER_DEV_NAME); return RT_ERROR; } /* 以读写方式打开设备 */ ret = rt_device_open(hw_dev, RT_DEVICE_OFLAG_RDWR); if (ret != RT_EOK) { rt_kprintf("open %s device failed!\n", HWTIMER_DEV_NAME); return ret; } /* 设置超时回调函数 */ rt_device_set_rx_indicate(hw_dev, timeout_cb); /* 设置计数频率(若未设置该项,默认为1Mhz 或 支持的最小计数频率) */ rt_device_control(hw_dev, HWTIMER_CTRL_FREQ_SET, &freq); /* 设置模式为周期性定时器(若未设置,默认是HWTIMER_MODE_ONESHOT)*/ mode = HWTIMER_MODE_PERIOD; ret = rt_device_control(hw_dev, HWTIMER_CTRL_MODE_SET, &mode); if (ret != RT_EOK) { rt_kprintf("set mode failed! ret is :%d\n", ret); return ret; } /* 设置定时器超时值为5s并启动定时器 */ timeout_s.sec = 5; /* 秒 */ timeout_s.usec = 0; /* 微秒 */ if (rt_device_write(hw_dev, 0, &timeout_s, sizeof(timeout_s)) != sizeof(timeout_s)) { rt_kprintf("set timeout value failed\n"); return RT_ERROR; } /* 延时3500ms */ rt_thread_mdelay(3500); /* 读取定时器当前值 */ rt_device_read(hw_dev, 0, &timeout_s, sizeof(timeout_s)); rt_kprintf("Read: Sec = %d, Usec = %d\n", timeout_s.sec, timeout_s.usec); return ret; } /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(hwtimer_sample, hwtimer sample); ``` 打印日志如下 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240928/cd2a755376d9d3ca1e9ba2bbb694aa6c.png.webp)
撰写答案
登录
注册新账号
关注者
0
被浏览
228
关于作者
cccc12234
这家伙很懒,什么也没写!
提问
6
回答
0
被采纳
0
关注TA
发私信
相关问题
1
rt-thread 任务调度使用的是stm32的哪个硬件定时器作为心跳
2
官方的定时器案例死机
3
硬件定时器hwtimer的CNT值出现问题
4
STM32F407VG启动硬件定时器系统忙类死机
5
硬件定时器是否会影响任务切换?
6
RT_TIMER里面分了HARD和SOFT类型,本质有啥区别
7
STM32H7打开硬件定时器后编译错误问题?
8
stm32硬件定时器,为什么只有tim3\11\13\14呢?
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组件
最新文章
1
TinyUSB Demo运行教程
2
RT-Thread学习大礼包一键带走!
3
freemodbus从机调试说明
4
【1024】瑞萨 RA 系列 BSP 制作与适配最新版本的 Keil 、 RSC、固件,较新的 FSP
5
基于 RT-Thread 星火一号开发板的俄罗斯方块
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
cubemx
PWM
flash
packages_软件包
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
用户名由3_15位
10
个答案
1
次被采纳
KunYi
4
个答案
1
次被采纳
踩姑娘的小蘑菇
2
个答案
1
次被采纳
bernard
1
个答案
1
次被采纳
rv666
1
个答案
1
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
4
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部