DSP28335模块配置模板系列——定时器中断配置模板
一、配置步骤:
1.使能定时器时钟
EALLOW;SysCtrlRegs.PCLKCR3.bit.CPUTIMER2ENCLK = 1; // CPU Timer 2EDIS;
2.设置定时器的中断向量
EALLOW;PieVectTable.TINT2 = &TIM2_IRQn;EDIS;
其中TIM2_IRQn时定时器中断服务程序的名称 ,将中断服务函数的地址赋给PIE向量表中的TINT2指针。
3.初始化定时器寄存器地址指针
CpuTimer2.RegsAddr = &CpuTimer2Regs;
CpuTimer2Regs是定时器2寄存器的结构体,将该结构体的地址赋给CpuTimer2结构体中的RegsAddr,后续可以用 CpuTimer2Regs访问RegsAddr中的成员。
4.设置定时器周期寄存器
CpuTimer2Regs.PRD.all = 0xFFFFFFFF;
PRD寄存器里面的数据代表定时器计时一个周期所计数的次数,如果知道定时器计数一次所需时间为TIMCLK,则定时器计时一个周期时间为:
至于TIMCLK为多少则需要根据预分频数来确定。
5.设置预分频计数器
CpuTimer2Regs.TPR.all = 0;CpuTimer2Regs.TPRH.all = 0;
TPR是16位的定时器预定标计数器低位寄存器,它的低八位是TDDR为定时器分频器。高八位是PSC位定时器预定标计数器,当定时器开启时,TDDR的值会装载到PSC上,每当经过一个系统时钟周期,PSC的值会减1,直到PSC的值位0时,产生一个定时器时钟,这是定时器计数一次。所以TIMCLK的值为:
其中SYSCLK为系统时钟周期。
6.停止定时器以及重载周期值到计数器寄存器
CpuTimer2Regs.TCR.bit.TSS = 1;CpuTimer2Regs.TCR.bit.TRB = 1;
TCR是定时器控制寄存器,其中的TSS位是定时器的停止状态位,当TSS值为1时,定时器停止;TSS值为0时,定时器开启。TRB位是定时器的重装位,当TRB为1时,PRD和TDDR的值会装入TIM和PSC。
7.重置中断计数器
CpuTimer2.InterruptCount = 0;
8.配置定时器的周期
ConfigCpuTimer(&CpuTimer2, Freq, Period);
直接调用TI官方源文件内提供配置定时器周期的函数,该函数输入为:定时器的地址、系统时钟的频率单位为Mhz以及定时器的计时周期单位为微秒。
9.启动定时器并使能定时器中断及全局中断
CpuTimer2Regs.TCR.bit.TSS=0;IER |= M_INT14;EINT;ERTM;
给TSS位赋0,开启定时器。使能中断组14。
10.定时器中断服务程序
interrupt void TIM2_IRQn(void)
{EALLOW;LED4_TOGGLE;EDIS;}
当定时器计时到达预设的周期时,会向CPU发送一次中断申请并继续计时,当CPU处理完其他级别更高的中断请求时会暂时挂起低级别的中断请求,等待CPU处理完后响应定时器2的中断申请并进入定时器中断服务函数。所以这里有一个需要注意的点:当定时器向CPU发送中断申请后会继续计时,而此时CPU不一定能及时响应中断请求,所以当CPU响应中断请求进入中断函数时定时器的计时并一定是0,所以中断函数的执行的周期有可能会大于所设定的定时器周期,这就是中断响应延迟问题。
二、完整的定时器配置模板
void TIM2_Init(float Freq,float Period)
{EALLOW;SysCtrlRegs.PCLKCR3.bit.CPUTIMER2ENCLK = 1; EDIS;EALLOW;PieVectTable.TINT2 = &TIM2_IRQn;EDIS;CpuTimer2.RegsAddr = &CpuTimer2Regs;CpuTimer2Regs.PRD.all = 0xFFFFFFFF;CpuTimer2Regs.TPR.all = 0;CpuTimer2Regs.TPRH.all = 0;CpuTimer2Regs.TCR.bit.TSS = 1;CpuTimer2Regs.TCR.bit.TRB = 1;CpuTimer2.InterruptCount = 0;ConfigCpuTimer(&CpuTimer2, Freq, Period);CpuTimer2Regs.TCR.bit.TSS=0;IER |= M_INT14;EINT;ERTM;
}
interrupt void TIM2_IRQn(void)
{}
相关文章:
DSP28335模块配置模板系列——定时器中断配置模板
一、配置步骤: 1.使能定时器时钟 EALLOW;SysCtrlRegs.PCLKCR3.bit.CPUTIMER2ENCLK 1; // CPU Timer 2EDIS; 2.设置定时器的中断向量 EALLOW;PieVectTable.TINT2 &TIM2_IRQn;EDIS;其中TIM2_IRQn时定时器中断服务程序的名称 ,将中断服务函数的地址…...
使用 Apache Commons Exec 自动化脚本执行实现 MySQL 数据库备份
😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…...
【中间件系列】浅析redis是否适合做消息队列
文章目录 一、简单的list消息队列1.命令示例2.伪代码示例3.方案优劣 二、Pub/Sub发布订阅1.消息丢失2.消息堆积 三、相对成熟的Stream1.redis命令介绍2.多消费者组测试3.Stream会持久化吗?4.消息堆积如何解决? 总结 用redis也是比较久了,并且…...
[NOVATEK] NT96580行车记录仪功能学习笔记
一、u-Boot升级灯 运行u-Boot程序时LED灯闪烁,找到运行过程中一直在运行的函数在里面进行LED引脚电平的翻转 宏定义 Z:\SunFan\AHD580\pip\na51055_PIP\BSP\u-boot\include\configs\nvt-na51055-evb.h Z:\SunFan\AHD580\pip\na51055_PIP\BSP\u-boot\drivers\mtd\nvt_flash_…...
创新案例 | AI数据驱动下的全域数字化转型的五大关键洞见
近年来通过全域数字化转型在竞争激烈的市场中脱颖而出。传统零食行业面临市场竞争加剧和消费者需求多样化的挑战,如何利用数据驱动和AI技术,能更好地实现会员运营效率和用户满意度的显著提升呢?本文将探讨全域数字化转型的五大关键洞见&#…...
学习笔记——网络参考模型——TCP/IP模型(网络层)
三、TCP/IP模型-网络层 1、IPV4报头 (1)IPV4报文格式 IP Packet(IP数据包),其包头主要内容如下∶ Version版本∶4 bit,4∶表示为IPv4; 6∶表示为IPv6。 Header Length首部长度∶4 bit,代表IP报头的长度(首部长度),如果不带Opt…...
AI初识--LLM、ollama、llama都是些个啥?
LLM全称(large language model)也就是大语言模型 什么是Ollama,它与Llama是什么关系? Ollama是一个开源的 LLM(大型语言模型)服务工具,用于简化在本地运行大语言模型,降低使用大语…...
【全开源】JAVA打车小程序APP打车顺风车滴滴车跑腿源码微信小程序打车源码
:构建便捷出行新体验 一、引言:探索打车系统小程序源码的重要性 在数字化快速发展的今天,打车系统小程序已成为我们日常生活中不可或缺的一部分。它以其便捷、高效的特点,极大地改变了我们的出行方式。而背后的关键,…...
LeetCode 两数之和 + 三数之和
两数之和 简单题 思路:一个Map,key是数值,value是该数值对应的下标,遍历的时候判断一下当前数组下标对应的值在map里有没有可组合成target的(具体体现为在map里找target-nums【i】),如果有,直接…...
Switch刷机:安装Android系统和Linux系统
文章目录 Switch刷机解锁SwitchSwitchroot重要提示 安装Android系统安装Linux系统(Ubuntu)安装Lakka系统安装多系统(和大气层系统、官方原生系统并存) Switch刷机 解锁Switch 刷机的前提是要解锁bootloader,早期的NS…...
DeepDriving | 多目标跟踪算法之SORT
本文来源公众号“DeepDriving”,仅用于学术分享,侵权删,干货满满。 原文链接:多目标跟踪算法之SORT 1 简介 SORT是2016年发表的一篇文章《Simple Online and Realtime Tracking》中提出的一个经典的多目标跟踪算法,…...
实验演示方波是由正弦波叠加而成的
方波可以看成是由N个正弦波叠加而成,在数学上,方波可以写成这个式子,大家可以看到这个式子里面包含了无数个奇数次的正弦波。 下面通过运放构成的反相求和电路来看一下,正弦波叠加成方波 对于这个反相求和电路: Ui1是…...
进口电动流量调节阀的选型-美国品牌
进口电动流量调节阀的选型需要综合考虑多个因素,以确保所选阀门能够满足实际应用需求。以下是选型时需要考虑的主要方面: 一、明确应用需求 工作介质:了解介质的性质,包括流体类型、温度、压力以及是否具有腐蚀性或特殊性质。流…...
【人工智能】流行且重要的智能算法整理
✍🏻记录学习过程中的输出,坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞👍🏻收藏⭐评论✍🏻指点🙏 小记: 今天在看之前写的文档时,发现有人工智能十大算法的内容…...
webrtc客户端测试和arm平台测试(待补充)
一、关于API的使用研究 二、遇到的一些问题 1、snd_write Broken pipe 写音频数据到缓存不及时导致,codec没有数据可以播放。 alsa总结 WebRTC源码研究(1)WebRTC架构 WebRTC 中的基本音频处理操作...
Unity ShaderGraph 扭曲
需要注意的是: HDRP ShaderGraph中 你不能扭曲UI,所以假如你要扭曲视频,请把视频在材质上渲染 播放,这样就可以扭曲视频了喔, ShaderGraph扭曲...
鸿蒙Ability Kit(程序框架服务)【应用启动框架AppStartup】
应用启动框架AppStartup 概述 AppStartup提供了一种更加简单高效的初始化组件的方式,支持异步初始化组件加速应用的启动时间。使用启动框架应用开发者只需要分别为待初始化的组件实现AppStartup提供的[StartupTask]接口,并在[startup_config]中配置App…...
DBeaver添加DM8驱动(maven下载和jar包下载配置)
DBeaver 24.0.3添加DM8驱动 下载DBeaver下载DM达梦驱动下载 安装配置使用自带Dameng自行添加达梦驱动 因为最近公司项目有信创要求,所以下载了达梦数据库。使用自带的达梦管理工具不是很方便,于是换了DBeaver。 哼哧哼哧安装好后,创建数据库连…...
EXCEL多sheet添加目录跳转
EXCEL多sheet添加目录跳转 背景 excel中有几十个sheet,点下方左右切换sheet太耗时,希望可以有根据sheet名超链接跳转相应sheet,处理完后再跳回原sheet。 方案一 新建目录sheet,在A1写sheet名,右键选择最下方超链接…...
MySQL之查询性能优化(十)
查询性能优化 MySQL查询优化器的局限性 松散索引扫描 由于历史原因,MySQL并不支持松散索引扫描,也就无法按照不连续的方式扫描一个索引。通常,MySQL的索引扫描需要先定义一个起点和终点,即使需要的数据只是这段索引中很少数的几…...
如何快速掌握WarcraftHelper:魔兽争霸III终极辅助工具完整指南
如何快速掌握WarcraftHelper:魔兽争霸III终极辅助工具完整指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸III的画面拉…...
5分钟快速上手:XUnity.AutoTranslator游戏翻译插件完整教程
5分钟快速上手:XUnity.AutoTranslator游戏翻译插件完整教程 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为外语游戏的语言障碍而烦恼吗?XUnity.AutoTranslator是一款强大的…...
CocoaPods终极版本管理指南:掌握语义化版本控制与依赖锁定策略
CocoaPods终极版本管理指南:掌握语义化版本控制与依赖锁定策略 【免费下载链接】CocoaPods The Cocoa Dependency Manager. 项目地址: https://gitcode.com/gh_mirrors/co/CocoaPods CocoaPods是iOS和macOS开发中最受欢迎的依赖管理器,它通过智能…...
LLM RAG还值得做吗?今天一下就顿悟了
在企业级AI应用领域,RAG(检索增强生成)不仅值得深耕,更是当前唯一能站稳脚跟的核心护城河。曾有人断言长上下文窗口(Long Context)会取代RAG,但这一说法早在2024年就被彻底证伪,进入…...
Docker Compose 镜像检测脚本(支持自动扫描 + 手动输入 YAML)
在日常运维中,经常会遇到这样一个问题: docker-compose 文件里定义了很多镜像,但本地是否已经存在不清楚 如果一个个 docker pull 或 docker images 去对比,会非常低效。 因此我们可以写一个脚本,自动解析 docker-com…...
Maya-glTF插件深度解析:现代3D工作流中的glTF 2.0导出技术内幕
Maya-glTF插件深度解析:现代3D工作流中的glTF 2.0导出技术内幕 【免费下载链接】maya-glTF glTF 2.0 exporter for Autodesk Maya 项目地址: https://gitcode.com/gh_mirrors/ma/maya-glTF 在当今3D内容创作领域,Maya作为行业标准工具,…...
硬件工程师显示器选购指南:从垂直分辨率到IPS面板的实战经验
1. 从“够用”到“爽用”:一个硬件工程师的显示器升级心路作为一名整天和代码、电路图、数据手册打交道的硬件工程师,我的工作台就是我的战场。而这块战场上最核心的装备,除了键盘鼠标,就是那块每天要盯着看至少八小时的显示器。几…...
基于Godot与Roslyn构建现代化.NET IDE:SharpIDE架构解析与实践
1. 项目概述:一个为.NET开发者打造的现代IDE如果你是一个.NET开发者,尤其是长期使用C#进行开发,那么你肯定对Visual Studio和Visual Studio Code这两款工具又爱又恨。Visual Studio功能强大但略显笨重,VS Code轻快但针对.NET的原生…...
别再死记硬背了!用Python和C语言手把手带你理解CRC32查表法的实现原理
从数学到代码:用Python和C语言彻底搞懂CRC32查表法的实现 在数据传输和存储过程中,错误检测是确保数据完整性的关键环节。CRC32作为一种广泛应用的校验算法,从网络协议到压缩工具,再到文件系统,几乎无处不在。但很多开…...
3分钟掌握Windows安装APK:告别复杂模拟器的终极方案
3分钟掌握Windows安装APK:告别复杂模拟器的终极方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经遇到过这样的场景?同事发来一个实…...
