TMS570-5-RTI精准延时
之前工程中用的延时函数都是2个for嵌套,不是很准确,既然学习HET和RTI可以做一个精
确的延时函数,找到一篇参考文章:IAR For Arm 的精确定时及延时等_jayacham的专栏-CSDN博客,
文章中写得很清楚了不再赘述。为了便于观察延时时间是否准确,还是用了gioa0的电平来查
看。
HCG配置gioa0为输出,RTI不用设置,时钟默认,其他默认即可。
先看下delay函数:
/*
* rti_delay.c
*
* Created on: 2021年7月4日
* Author:
*/
#include "rti_delay.h"uint32 rtiGetMyTick(uint32 compare)
{uint32 tick;uint32 counter = ((rtiREG1->COMPCTRL & (1U << (compare << 2U))) !=0U ) ? 1U : 0U;/* USER CODE BEGIN (27) */tick = rtiREG1->CNT[counter].FRCx;/* USER CODE END */return tick;
}void rtiDelay_ms(uint32_t msec)
{uint32_t curTick = rtiGetMyTick(rtiCOMPARE0);uint32_t endTick = curTick + msec * 1000 * 10; /* *1000 means 1ms */while( curTick < endTick){curTick = rtiGetMyTick(rtiCOMPARE0);}
}void rtiDelay_us(uint32_t msec)
{uint32_t curTick = rtiGetMyTick(rtiCOMPARE0);uint32_t endTick = curTick + msec * 1 * 10; /* *1 means 1us */while( curTick < endTick){curTick = rtiGetMyTick(rtiCOMPARE0);}
}
/** rti_delay.h** Created on: 2021年9月27日* Author: */#ifndef INCLUDE_RTI_DELAY_H_
#define INCLUDE_RTI_DELAY_H_#include "rti.h"uint32 rtiGetMyTick(uint32 compare);
void rtiDelay_ms(uint32_t msec);
void rtiDelay_us(uint32_t msec);#endif /* INCLUDE_RTI_DELAY_H_ */
涉及的几个寄存器看下:
1、RTI Compare Control Register (RTICOMPCTRL),对应rtiREG1->COMPCTRL,用来确定具体哪个寄存器;
2、RTI Free Running Counter 0 Register (RTIFRC0),对应rtiREG1->CNT[counter].FRCx,This registers holds the current value of the free running counter 0。
#include "system.h"
#include "gio.h"
#include "sys_vim.h"
#include "rti.h"
#include "delay.h"
#include "rti_delay.h"int main(void)
{/* USER CODE BEGIN (2) */gioInit();rtiInit();rtiStartCounter(rtiCOUNTER_BLOCK0);while (1){rtiDelay_us(500);gioSetBit(gioPORTA, 0, 0);rtiDelay_ms(10);gioSetBit(gioPORTA, 0, 1);}/* USER CODE END */return 0;
}
波形:
TMS570-5-RTI精准延时相关推荐
- STM32外设驱动---SysTick精准延时
单片机:STM32F103 库函数:V3.5 描述:利用系统内核文件core_cm3.c内部SysTick实现1ms,1us的精准延时,时钟72MHz,涉及中断服务SysTick_Handler的 ...
- 【STM32/FreeRTOS】精准延时的实现
目录 前言 SysTick定时器寄存器 裸机编程下实现 FreeRTOS中实现 前言 在使用通讯协议来驱动外设的时候需要遵循严格的时序逻辑,往往用到微秒(us)级别的延时,在裸机编程中可以使用SysT ...
- NXP JN5169使用滴答定时器进行精准延时
NXP JN5169使用滴答定时器进行精准延时(us.ms) 一.滴答定时器介绍 二.滴答定时器系统图 1.系统图介绍 2.单次触发模式 3.可重启模式 4.连续运行模式 三.系统时钟 1.系统时钟域 ...
- MSP430 精准延时之定时器 TIMERA 0.5实现LED闪烁
在经历过上一章的粗暴for()循环进行延时和简单的delay_ms(),delay_us()精准延时之后,本章介绍另一种精准延时定时器 定时器基本可以分为四种定时器 本章为大家着重介绍定时器timer ...
- STM32 精准延时
延时,就是停在那,啥都不干,发呆.精准延时,就是发呆多长时间,是精确的. 比如,要求某个IO口维持低电平1毫秒后,再维持高电平3毫秒,就需要把IO口拉高,然后延时1毫秒,再拉低,再维持3毫秒. 类似这 ...
- MSP430杂谈--delay_cycles的精准延时
在这里, 我来讨论一下关于MSP430单片机使用__delay_cycles延时的问题. IAR for MSP430编译器提供了一个编译器内联的精确延时函数(并非真正的函数)以提供用户精确延时使用, ...
- 51单片机应用定时器实现精准延时函数的封装
#include <STC89C5xRC.H>typedef unsigned char u8; typedef unsigned int u16; sbit led = P2^0; bi ...
- 关于STM32的延时问题
最近一直在搞一辆智能小车,用STM32单片机驱动,往上面加了很多外设,外型如下: 今天下午打算在LCD显示一个温度,却发现怎么都显示不了,也找不出原因,还好我们公司的郑工帮我看出了问题,让我顺利改过来 ...
- zynq网络时钟控制寄存器_ZYNQ笔记(6):普通自定义IP封装实现PL精准定时中断...
软件的定时中断很难控制精准触发沿的位置,可以通过 PL-PS 的中断完成精准的定时中断.PL 的中断通过 Verilog 代码产生,这样紧密结合 PS-PL 的处理,发挥各自的优势. 一.PL 侧定时 ...
- c语言延时函数delay_STM32中精确延时函数的实现
在与传感器或者模块的总线进行通信的时候,常常需要使用到精确延时,一般我们会封装几个常用延时函数,下面我们以STM32F103芯片为例,详细介绍一下STM32下一种精确延时函数的实现: 时钟树 下图中紫 ...
最新文章
- 西部985,进军北京!
- 独家|让你的GPU为深度学习做好准备(附代码)
- exchange 2010 指定用户邮箱连接CAS服务器
- 计算机视觉与深度学习 | TensorMask: A Foundation for Dense Object Segmentation(何凯明团队新作)近5年目标检测综述
- 它来了,它来了,最强目标检测算法YOLO v4,它真的来了!!!
- [转]内存泄漏简单检测
- TCP协议——三次握手与四次关闭
- 【HDU - 1254 】推箱子 (双bfs)
- php html script,html script标签怎么用
- 集训8.21树状数组讲解
- TransE算法原理与案例
- Adobe Premiere(Pr视频剪辑)下载安装
- EXCEL数组公式(3)---数组公式的基础应用,理解数组公式
- 编程求一元二次方程的解
- 一只小白,在学习delphi.感觉很吃力。。
- 碎石生产线在丽江市的生产厂家在哪里
- 3D设计软件中怎么画锥齿轮?浩辰3D设计实例
- [时间序列分析][1]--平稳性,白噪声的检验
- Vue3-浏览器兼容性 IE篇
- 良知VS野心,苹果为何要翻新手机?
热门文章
- 国家对五险一金的交纳说明
- HOI BMVC2018| iCAN: Instance-Centric Attention Network for Human-Object Interaction Detection论文阅读笔记
- node.js 在 Express4.0 框架使用 Connect-Busboy 实现文件上传
- 大胜凭德--入行选领导(转载分析)
- 通过一个大型项目来学习分布式算法(3)
- 当心!你的NAS设备正成为勒索软件攻击的目标
- VMware虚拟机安装黑苹果步骤与常见问题,VMware16,MacOS12.01(Moterey)
- css3ps插件,CSS3Ps(PS图层转换插件) V1.0 官方版
- 你眼里的废品也许就是别人眼里的宝贝(生意)
- sam卡和sim卡区别_PSAM卡、SAM卡与SIM卡