输入捕获有4级捕获,最多可以得到4个捕获时间,捕获记性可以任意配置

可用于测速,测脉冲周期,频率,占空比等

cap.c

#include "cap.h"

void InitCap(void)
{
   InitECap5Gpio();
   InitECap6Gpio();
   SetCap5();
   SetCap6();
}

void SetCap5(void)
{
  ECap5Regs.ECCTL1.bit.CAP1POL = EC_RISING;  
  ECap5Regs.ECCTL1.bit.CAP2POL = EC_FALLING; //EC_RISING;
  ECap5Regs.ECCTL1.bit.CAP3POL = EC_RISING;
  ECap5Regs.ECCTL1.bit.CAP4POL = EC_FALLING;
  ECap5Regs.ECCTL1.bit.CTRRST1 = EC_ABS_MODE;
  ECap5Regs.ECCTL1.bit.CTRRST2 = EC_ABS_MODE;
  ECap5Regs.ECCTL1.bit.CTRRST3 = EC_ABS_MODE;
  ECap5Regs.ECCTL1.bit.CTRRST4 = EC_ABS_MODE;
  ECap5Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE;
  ECap5Regs.ECCTL1.bit.PRESCALE = EC_DIV1;
  ECap5Regs.ECCTL2.bit.CAP_APWM = EC_CAP_MODE;
  ECap5Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUOUS;  //连续捕获
  ECap5Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS;
  ECap5Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE;
  ECap5Regs.ECEINT.all=0x0000;//stop all interrupt
  ECap5Regs.ECCLR.all=0xFFFF;//clare all flag
  ECap5Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN;// 启动
  ECap5Regs.ECEINT.bit.CEVT4=1;// Enable cevt4 interrupt  //第4个捕获事件发生时,产生中断
}

void SetCap6(void)
{
  ECap6Regs.ECCTL1.bit.CAP1POL = EC_FALLING;
  ECap6Regs.ECCTL1.bit.CAP2POL = EC_FALLING;
  ECap6Regs.ECCTL1.bit.CAP3POL = EC_FALLING;
  ECap6Regs.ECCTL1.bit.CAP4POL = EC_FALLING;
  ECap6Regs.ECCTL1.bit.CTRRST1 = EC_ABS_MODE;
  ECap6Regs.ECCTL1.bit.CTRRST2 = EC_ABS_MODE;
  ECap6Regs.ECCTL1.bit.CTRRST3 = EC_ABS_MODE;
  ECap6Regs.ECCTL1.bit.CTRRST4 = EC_ABS_MODE;
  ECap6Regs.ECCTL1.bit.CAPLDEN = EC_ENABLE;
  ECap6Regs.ECCTL1.bit.PRESCALE = EC_DIV1;
  ECap6Regs.ECCTL2.bit.CAP_APWM = EC_CAP_MODE;
  ECap6Regs.ECCTL2.bit.CONT_ONESHT = EC_CONTINUOUS;
  ECap6Regs.ECCTL2.bit.SYNCO_SEL = EC_SYNCO_DIS;
  ECap6Regs.ECCTL2.bit.SYNCI_EN = EC_DISABLE;
  ECap6Regs.ECEINT.all=0x0000;//stop all interrupt
  ECap6Regs.ECCLR.all=0xFFFF;//clare all flag
  ECap6Regs.ECCTL2.bit.TSCTRSTOP = EC_RUN;// 启动
  ECap6Regs.ECEINT.bit.CEVT4=1;// Enable cevt4 interrupt
}

Uint32 t1,t2,t3,t4,T1,T2;
interrupt void ISRCap5(void)
{
   // Acknowledge this interrupt to receive more interrupts from group 1
    PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
    ECap5Regs.ECCLR.all=0xFFFF;//clare all flag
t1= ECap5Regs.CAP1;
t2= ECap5Regs.CAP2;
t3= ECap5Regs.CAP3;
    t4= ECap5Regs.CAP4;
    T1=t2-t1;T2=t3-t1;
}

Uint32 t5,t6,t7,t8,T3,T4;
interrupt void ISRCap6(void)
{
   // Acknowledge this interrupt to receive more interrupts from group 1
    PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;
    ECap6Regs.ECCLR.all=0xFFFF;//clare all flag
t5= ECap6Regs.CAP1;
t6= ECap6Regs.CAP2;
t7= ECap6Regs.CAP3;
    t8= ECap6Regs.CAP4;
    T3=t6-t5;T4=t8-t7;

}

cap.h

#ifndef CAP_H_
#define CAP_H_

#include "main.h"

extern Uint32 t1,t2,t3,t4,T1,T2;
 extern Uint32 t5,t6,t7,t8,T3,T4;

void InitCap(void);
void SetCap5(void);
void SetCap6(void);

interrupt void ISRCap5(void);
interrupt void ISRCap6(void);

#endif /* CAP_H_ */

main函数中要调用的

InitCap(); //输入捕获初始化

PieVectTable. ECAP5_INT = &ISRCap5;  //输入捕获5

IER |= M_INT4;    //输入捕获
PieVectTable. ECAP6_INT = &ISRCap6;  //输入捕获6

PieCtrlRegs.PIEIER4.bit.INTx5 = 1;   //输入捕获5中断
  PieCtrlRegs.PIEIER4.bit.INTx6 = 1;   //输入捕获6中断

DSP28335 ecap使用相关推荐

  1. DSP28335学习之旅1-基础知识

    目录 1.1  DSP 是什么 1.2  DSP 与单片机的区别 1.3  DSP性能相关 1.4  DSP命名规则 1.5  DSP28335的常用资源 1.6  DSP28335的常用参考手册 1 ...

  2. DSP28335中断系统(一)

    1.什么是中断? 举个例子,你在吃饭的时候,突然觉得口渴,此时你就会去喝水,等喝完水你再继续吃饭.在这个例子中,吃饭为主程序运行,大脑觉着口渴就是发中断申请,喝水就是中断子程序.在DSP的中断概念也是 ...

  3. dsp呼吸灯C语言编程,DSP28335 呼吸灯程序

    DSP28335呼吸灯程序 //########################################################################### // // FI ...

  4. dsp28335电机控制板资料 永磁同步电机有传感器三闭环foc控制

    dsp28335电机控制板资料 1.永磁同步电机有传感器三闭环foc控制 2.永磁同步电机无传感器双闭环foc控制 3.无刷直流电机有传感器方波控制 4.异步电机V/F变频调速控制 5.电机状态量曲线 ...

  5. 全球及中国电解电容器(E-Cap)供给能力与竞争状况分析报告2022~2027年

    全球及中国电解电容器(E-Cap)供给能力与竞争状况分析报告2022-2027年  ************************************** [报告编号]: BG547526 [出 ...

  6. DSP28335入门教程:ADC的使用

    老笨来讲讲dsp28335的ADC的最基本用法. 先来看看硬件电路连接图: 程序 #include "DSP28x_Project.h"#define ADC_CKPS 0x1 / ...

  7. DSP28335笔记 ———— 中断系统 之 外部中断

    DSP28335笔记 ---- 中断系统 之 外部中断 我用的开发板是"硬汉DSP28335开发板",文中对于硬件的描述可以说是没有,而且我还没有附上电路图希望在看的朋友不要喷我. ...

  8. DSP28335入门教程:寄存器手册的下载

    2020.04.29更新 TI官方最近更新的TMS320F28335用户指导手册,已经将全部功能模块统一到单个文档中:TMS320x2833x, TMS320x2823x Technical Refe ...

  9. DSP28335的硬件SPI使用(无FIFO)总结

    目录 前言 问题的提出 问题的解决 说在最后 前言 这两天折腾了一个旋变器解算模块的使用,类似于这种器件一般都是使用通信的方式写入芯片对应的寄存器的数据从而初始化芯片或得到可编程的结果:反之,我们也需 ...

  10. DSP28335学习笔记-产生PWM波 ——从应用角度出发

    文章目录 前言 一.示波器检测PWM波 1.对应引脚说明 2.PWM波形 二.寄存器配置及代码实现 1.时基模块寄存器配置 2.计数比较模块和动作模块 3.死区产生模块 总结 前言 关于DSP2833 ...

最新文章

  1. 从LeNet到GoogLeNet:逐层详解,看卷积神经网络的进化
  2. 【Math】常见的几种最优化方法
  3. poj 1065 Wooden Sticks
  4. ubuntu系统阅读CHM文档的最终解决方案
  5. 【报错笔记】 启动tomcat服务器报错Context initialization failed
  6. Redis(八):Zset有序集合数据类型详解
  7. 优秀的云存储解决方案Dropbox,现在注册就有2G
  8. 小米“618”战报:全平台支付金额破190亿,同比增长90%
  9. 算法第五章上机实践报告
  10. linux route配置网关,Linux使用route配置路由
  11. php array函数 preg_match() 正则匹配
  12. 郭天祥 十天搞定单片机 (1)基础知识和点亮发光二极管
  13. python绘制缓和曲线_CAD绘制缓和曲线说明
  14. vs2017更新出错:The entire Box execution exiting with result code: 0x0
  15. java poi导出PPT格式
  16. 光猫批量自动化测试——交换机vlan划分
  17. Profiler Others占用时间过高的解决方法
  18. oracle采购操作手册,oracle-ebs采购功能点操作手册.doc
  19. git提交如何忽略某些文件
  20. 速卖通平台的未来在于走品牌化道路

热门文章

  1. Excel怎么将一列数据合并到一个单元格中
  2. java发送带图片的邮件_java项目如何发送带图片的邮件
  3. 去谷歌面试,竟让扔鸡蛋?
  4. ESP8266-Arduino杀手?
  5. Oracle删除数据消耗时间大吗,oracle 删除大量数据的方法
  6. 异常:No persister for的解决办法
  7. Qua Vadis Eclipse? 第一部分
  8. 拼音搜索 -- 自动解析拼音汉子组合(包含多音字,拼音缩写)
  9. Python使用Opencv打开笔记本电脑摄像头报错解决办法
  10. navicat导入sql文件时报错:mysql server has gone away