BearPi Std 板从入门到放弃 - 先天神魂篇(7)(RT-Thread 定时器-硬件定时器)

简介

BearPi IOT开发板 硬件定时器使用

步骤

创建项目

参考 BearPi RT-Thread项目创建

RT-Thread TIM2 设备注册

宏定义添加

rtconfig.h 中添加

#define RT_USING_HWTIMER
#define BSP_USING_TIM
#define BSP_USING_TIM2
生成支持TIM2的mdk5项目工程

env + 指令 scons --target=mdk5 -s
一样参考 参考 BearPi RT-Thread项目创建

STM32CubeMX 开启TIM2

board\CubeMX_Config\CubeMX_Config.ioc 双击打开, 设置TIM2, 如下
在这里插入图片描述

编译烧录

list device 就可以看到timer2设备了
在这里插入图片描述
这里会有两个报错
1) 其中一个就是TIM17, 目前我的芯片是没看到TIM17这个定时器, 所以报错注释掉就可以
2) tim_config.h 中缺少 TIM2_CONFIG
参考其他TIM配置, 加入如下代码

#ifdef BSP_USING_TIM2
#ifndef TIM2_CONFIG
#define TIM2_CONFIG                                        \{                                                      \.tim_handle.Instance     = TIM2,                    \.tim_irqn                = TIM2_IRQn,               \.name                    = "timer2",                \}
#endif /* TIM2_CONFIG */
#endif /* BSP_USING_TIM2 */
硬件定时器使用代码

接口参考 HWTIMER 设备

#include <board.h>
#include <rtthread.h>
#include <drv_gpio.h>
#include <rtdevice.h>#define HWTIMER_DEV_NAME   "timer2"     /* 定时器名称 */
rt_device_t hw_dev;                     /* 定时器设备句柄 */
rt_hwtimerval_t timeout_s;/* 定时器超时回调函数 */
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_hwtimer_mode_t  mode = HWTIMER_MODE_PERIOD;rt_uint32_t freq = 10000;               /* 计数频率 *//* 查找定时器设备 */hw_dev = rt_device_find(HWTIMER_DEV_NAME);if ( RT_NULL == hw_dev ){rt_kprintf("can't find device name %s!\n", HWTIMER_DEV_NAME);return -RT_ERROR;}/* 以读写方式打开设备 */if (RT_EOK != rt_device_open(hw_dev, RT_DEVICE_OFLAG_RDWR)){rt_kprintf("fail to open device name %s!\n", HWTIMER_DEV_NAME);return -RT_ERROR;}/* 设置超时回调函数 */if (RT_EOK != rt_device_set_rx_indicate(hw_dev, timeout_cb)){rt_kprintf("fail to set callback function!\n");return -RT_ERROR;}/* 设置计数频率(若未设置该项,默认为1Mhz 或 支持的最小计数频率) */rt_device_control(hw_dev, HWTIMER_CTRL_FREQ_SET, &freq);/* 设置模式为周期性定时器(若未设置,默认是HWTIMER_MODE_ONESHOT)*/mode = HWTIMER_MODE_PERIOD;if (RT_EOK != rt_device_control(hw_dev, HWTIMER_CTRL_MODE_SET, &mode)){rt_kprintf("set mode failed!\n");return -RT_ERROR;}/* 设置定时器超时值为1s并启动定时器 */timeout_s.sec = 1;      /* 秒 */timeout_s.usec = 0;     /* 微秒 */rt_device_write(hw_dev, 0, &timeout_s, sizeof(timeout_s));rt_kprintf("timer2 init succeed!\n");return RT_EOK;
}/* 导出到 msh 命令列表中 */
MSH_CMD_EXPORT(hwtimer_sample, timer sample);
编译烧录测试

list device ## 看到timer2设备
hwtimer_sample ## 执行指令,1s打印一次

代码

完整代码

参考

RT-Thread API参考手册 定时器管理

RT-Thread 时钟管理

RT-Thread 设备和驱动 - HWTIMER设备

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/224820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s中pod监控数据在grafana中展示

实现目标:将kubesphere[K8S]中运行的pod监控数据在grafana平台进行展示。 前提说明:需要在k8s每个集群中内置的prometheus配置中将pod指标数据远程写入到victoriametrics持久化数据库中。 实现效果如下: CPU使用量: round(sum by (namespace, pod) (irate(container_cpu…

Vue3-19-组件-定义和基本使用

组件的定义 个人理解 &#xff1a;1、组件&#xff0c;就是我们把某个功能模块进行封装&#xff0c;在使用时直接引入进行使用&#xff0c;极大的提高了代码的可复用性。2、在vue 中&#xff0c;一个 [.vue] 文件&#xff0c;就是一个组件。3、组件之间存在【引入】 与 【被引…

锁--07_2---- index merge(索引合并)引起的死锁

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 案例分析生产背景死锁日志表结构执行计划 EXPLAN为什么会用 index_merge&#xff08;索引合并&#xff09;为什么用了 index_merge就死锁了解决方案注&#xff1a;M…

【ArcGIS Pro二次开发】:CC工具箱1.1.5更新_免费_50+工具

CC工具箱1.1.5更新【2023.12.15】 使用环境要求&#xff1a;ArcGIS Pro 3.0 一、下载链接 工具安装文件及使用文档&#xff1a; https://pan.baidu.com/s/1OJmO6IPtMfX_vob3bMtvEg?pwduh5rhttps://pan.baidu.com/s/1OJmO6IPtMfX_vob3bMtvEg?pwduh5r 二、使用方法 1、在下…

k8s节点not ready

开发小伙伴反应&#xff0c;发布应用失败。检查后发现有个虚拟机挂掉了 启动后先重启服务&#xff1a;&#xff08;一般是自启动&#xff0c;自动拉起pod服务&#xff09; service docker restart docker ps |grep kube-apiserver|grep -v pause|awk ‘{print $1}’|xargs -i …

Appium 图像识别技术 OpenCV

在我们做App自动化测试的时候&#xff0c;会发现很多场景下元素没有id、content-desc、text等等属性&#xff0c;并且有可能也会碰到由于开发采用的是自定义View&#xff0c;View中的元素也无法识别到&#xff0c;很多的自动化测试框架对此类场景束手无策。Appium在V1.9.0中有给…

10个国内外素材网站,提供免费 Photoshop 素材下载资源

即时设计 被很多人视为免费的PS素材网站——即时设计提供了资源广场版块&#xff0c;方便用户查找材料。对于提供的PS材料&#xff0c;即时设计也做了详细的分类工作&#xff0c;用户可以根据不同的使用标签快速找到相应的PS材料。 进入资源广场&#xff0c;在搜索框中输入要…

Golang在 Docker 中交叉编译 Windows

前言&#xff1a; 前端时间把本地的 Golang 开发环境卸载了&#xff0c;如果编写代码的话就是启动一个 Golang 的 Docker 容器。这样做对于服务端开发本来也是没有问题的&#xff0c;但是有时候想要把程序放到 Windows 上面来执行&#xff0c;那就遇到麻烦了。因为 Docker 容器…

华为数通——网络参考模型

OSI参考模型 七层 应用层&#xff1a;最靠近用户的一层&#xff0c;为应用程序提供网络服务。 六层 表示层&#xff1a;数据格式转换编码格式UTF-8。 五层 会话层&#xff1a;双方之间建立、管理和终止会话。 四层 传输层&#xff1a;建立、维护和取消端到端的数据传输过…

verilog语法进阶-分布式ram

概述: FPGA的LUT查找表是用RAM设计的&#xff0c;所以LUT可以当成ram来使用&#xff0c;也并不是所有的LUT都可以当成ram来使用&#xff0c;sliceM的ram可以当成分布式ram来使用&#xff0c;而sliceL的ram只能当成rom来使用&#xff0c;也就是只能读&#xff0c;不能写&#x…

如何使用ArcGIS Pro裁剪影像

对影像进行裁剪是一项比较常规的操作&#xff0c;因为到手的影像可能是多种范围&#xff0c;需要根据自己需求进行裁剪&#xff0c;这里为大家介绍一下ArcGIS Pro中裁剪的方法&#xff0c;希望能对你有所帮助。 数据来源 本教程所使用的数据是从水经微图中下载的影像和行政区…

软件测试用例经典方法 | 单元测试法案例

单元测试又称模块测试&#xff0c;是对软件设计的最小单元的功能、性能、接口和设计约束等的正确性进行检验&#xff0c;检查程序在语法、格式和逻辑上的错误&#xff0c;并验证程序是否符合规范&#xff0c;以发现单元内部可能存在的各种缺陷。 单元测试的对象是软件设计的最…

hive的分区表和分桶表详解

分区表 Hive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录&#xff0c;每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择查询所需要的分区&#xff0c;这样的查询效率会提高很多。 静态分区表基本语法 创建分区表 create table dept_p…

HBase的安装与简单操作

文章目录 第1关&#xff1a;Hbase数据库的安装第2关&#xff1a;创建表第3关&#xff1a;添加数据、删除数据、删除表 第1关&#xff1a;Hbase数据库的安装 编程要求 根据上述步骤安装配置好HBase数据库&#xff0c;并启动成功。 测试说明 若安装配置成功&#xff0c;则程序会…

mfc配置halcon环境

新建mfc窗体 选择基于对话框 打开项目属性 1、附加包含目录添加&#xff1a; $(HALCONROOT)\include;$(HALCONROOT)\include\halconcpp 2、链接器->常规->附加库目录 $(HALCONROOT)\lib\x64-win64 3、链接器->输入->附加依赖项 halcon.lib;halconcpp.lib 在对话…

网络入门---守护进程

目录标题 什么是守护进程会话的理解setsid函数daemonSelf函数模拟实现测试 什么是守护进程 在前面的学习过程中我们知道了如何使用TCP协议和UDP协议来实现通信&#xff0c;比如说登录xshell运行了服务端&#xff1a; 然后再登录一个xshell运行客户端并向服务端发送信息&#…

基于若依搭建微服务nacos版本(ruoyi-Cloud前后端分离)

说明&#xff1a;本文介绍基于Ruoyi-Cloud前后端分离nacos版本的微服务从0到1的搭建过程&#xff0c;同时新增一个新的微服务模块。是基于官方文档的补充说明&#xff0c;需要结合Ruoyi-Cloud的官方文档 https://doc.ruoyi.vip/ruoyi-cloud/ 如果直接查看官方文档便可成功部署&…

Linux--权限问题(2)

目录 前文 前言 1. 文件的权限 1.1 文件的访问者分类 1.2 文件类型和访问权限&#xff08;事物属性&#xff09; 2. 如何修改文件的权限 3.对比权限有无的表现 4.修改用户角色 5.修改权限的第二种做法 6.目录的权限 7.默认权限 前文 Linux--权限问题&#xff08;1&#…

云原生之深入解析Kubernetes本地持久化存储方案OpenEBS LocalPV的最佳实践

一、K8s 本地存储 K8s 支持多达 20 种类型的持久化存储&#xff0c;如常见的 CephFS 、Glusterfs 等&#xff0c;不过这些大都是分布式存储&#xff0c;随着社区的发展&#xff0c;越来越多的用户期望将 K8s 集群中工作节点上挂载的数据盘利用起来&#xff0c;于是就有了 loca…

一种用于心音分类的轻量级1D-CNN+DWT网络

这是由National Institute of Technology Rourkela, Central University of Rajasthan发布在2022 ICETCI的论文&#xff0c;利用离散小波变换(DWT)得到的多分辨率域特征对1D-CNN模型进行心音分类训练。 预处理& DWT 由于FHS和各种病理声的频率范围在500hz以下[5]&#xff…