当前位置: 首页 > news >正文

《嵌入式硬件(十四):基于IMX6ULL的通用目的定时器(GPT)操作》

一、通用目的定时器概念

        32位,增定时器

        选ipg_clk,66m

        引脚电平捕获可以测俩个上升沿之间的时间

二、步骤

使用GPT实现高精度延时

        1.设定模式为自由

        2.设置时钟为1MHz

        3.实现延时

                溢出回滚的解决

三、原理

        1.CR(控制寄存器)

2.PR(分频寄存器)

        3.CNT(计数器寄存器)

四、代码

1.gpt.c

#include "gpt.h"
#include "MCIMX6Y2.h"void int_gpt1(void)
{GPT1->CR = 0;GPT1->CR |= (1 << 15);while((GPT1->CR & (1 << 15)) != 0);GPT1->CR |= (1 << 9) | (1 << 6);GPT1->PR |= 65;GPT1->CR |= (1 << 0);
}

2.gpt.h

#ifndef _GPT_H_
#define _GPT_H_extern void int_gpt1(void);#endif

3.delay.c

#include "delay.h"
#include "MCIMX6Y2.h"void delay(unsigned int n)
{while(n--){}
}void delayus(unsigned int n)
{unsigned int counter = 0;unsigned int new_counter, old_counter;old_counter = GPT1->CNT;while(1){new_counter = GPT1->CNT;if(new_counter != old_counter){if(new_counter > old_counter){counter += new_counter - old_counter; }else{counter += 0xFFFFFFFF - old_counter + new_counter;}if(counter >= n){return;}old_counter = new_counter;}}
}void delayms(unsigned int n)
{while(n--){delayus(1000);}
}

4.delay.h

#ifndef _DELAY_H_
#define _DELAY_H_extern void delay(unsigned int n);
extern void delayus(unsigned int n);
extern void delayms(unsigned int n);#endif

5.main.c

#include "beep.h"
#include "led.h"
#include "key.h"
#include "MCIMX6Y2.h" 
#include "core_ca7.h"
#include "gpio.h"
#include "interrupt.h"
#include "clock.h"
#include "epit.h"#include "gpt.h"
#include "delay.h"int main(void)
{init_clock();system_interrupt_init();init_led();init_beep();init_epit();int_gpt1();   while(1){led_nor();delayms(1000);}return 0;
}

文章转载自:

http://Lo4EgvaK.qgLqb.cn
http://99ACqiJ0.qgLqb.cn
http://BocYMWlA.qgLqb.cn
http://Dp2c4DLm.qgLqb.cn
http://IIL6MlAn.qgLqb.cn
http://R1wdyr07.qgLqb.cn
http://Ke91h4Tc.qgLqb.cn
http://M1GiwiRa.qgLqb.cn
http://XbUcC9MW.qgLqb.cn
http://La63HDNl.qgLqb.cn
http://W4iKWLaN.qgLqb.cn
http://2sKQ59CU.qgLqb.cn
http://kANsWKZ9.qgLqb.cn
http://uMarwd2W.qgLqb.cn
http://xZ1udFAs.qgLqb.cn
http://1ttOdOyG.qgLqb.cn
http://6cjn3HCp.qgLqb.cn
http://6fvMMiSi.qgLqb.cn
http://GKPTGoiu.qgLqb.cn
http://PoLs912Y.qgLqb.cn
http://N1eDaSFS.qgLqb.cn
http://3LXjpwiP.qgLqb.cn
http://osh8szA7.qgLqb.cn
http://RoPTB0oa.qgLqb.cn
http://vNcx9upD.qgLqb.cn
http://9hx7K6Qy.qgLqb.cn
http://MNMISDmh.qgLqb.cn
http://UOjlMtXy.qgLqb.cn
http://lbkyWvO5.qgLqb.cn
http://s6I01MWc.qgLqb.cn
http://www.dtcms.com/a/387338.html

相关文章:

  • 鸿蒙Next Web调试与维测全攻略:从DevTools到专项测试
  • 基于运行设计域(ODD)的安全论证方法
  • 鸿蒙HarmonyOS界面开发-组件动态创建(一)
  • 网络安全风险评估中元模型构建与实例应用
  • 鸿蒙5.0应用开发——V2装饰器@ObservedV2和@Trace的使用
  • xkInfoScan 是一款集成化的网络信息收集与安全扫描工具,支持 IP / 域名 / URL /信息追踪多维度目标探测
  • 解决 Windows 系统下 TDengine 数据恢复及迁移问题
  • PocketBase 是一个‌开源的轻量级后端框架‌,基于 Go 语言开发
  • 苹果新手机和旧手机怎么传输数据?新手避坑指南
  • Maven 只打包部分模块,跳过单元测试... 常用打包参数
  • 【maven01】依赖管理的工具
  • BP神经网络多输入多输出回归预测+SHAP可解释分析+新数据预测(MATLAB完整源码)
  • MATLAB 时间序列小波周期分析
  • 计算机视觉进阶教学之DNN模块
  • 大模型无需懂MCP:工具调用范式的架构革命与实践指南
  • 剑指offer题单 9.14
  • IIS 站点 http 请求412问题解决
  • Web前端入门:从零开始做网站(视频教程)
  • 本地--Oracle表被锁了该如何处理
  • Doris与Clickhouse分析
  • ByteDance字节前端一面
  • 卫星通信+AI双核驱动,遨游智能三防手机连得上、会思考
  • 云手机通道具有哪些方面的优势
  • 前端实验(二)初识Vue
  • html.
  • 【人工智能与机器人研究】基于多模态的管道非接触式磁记忆检测方法研究
  • DIY Linux 桌面:让电脑再次快速运行
  • MySQL基础入门:开启数据库之旅
  • C++开发者如何开发自己的第一个mac应用(xcode + XIB + Objective-C C++)
  • LabVIEW风洞测试系统稳定性措施