PIC32MX单片机外设库使用(Ⅲ)-- 定时器之输入捕捉功能

发布者:忠正最新更新时间:2016-11-02 来源: eefocus关键字:PIC32MX  单片机  外设库  定时器  输入捕捉 手机看文章 扫描二维码
随时随地手机看文章
1.如何使用定时器的捕捉功能。
简介:输入捕捉功能在频率(或周期)、脉冲宽度测量的应用中非常有用。
    #define FOSC 80E6 //定义主系统时钟为80M
    #define PB_DIV 8 //定义系统外设分频器为8
            #define PRESCALE 8        // 定义定时器分频器为256
            #define MSEC 10E-3
            #define T1_TICK (500 * MSEC * FOSC)/(PB_DIV * PRESCALE)
 
/**********************************************************************************************
*函数名 字: TIMER3_InputCapture_Config
*功能描 述: 定时器3用于输入捕捉功能
*输      入: 无
*输        出: 无
*返        回: 无
*全局变量: 无
*调用模块: 使用内部8M时钟,倍频到80M, 外设时钟为主时钟8分频,为10M
**-------------------------------------------------------------------------
***********************************************************************************************/
 void TIMER3_InputCapture_Config()
{
unsigned int CaptureTime;
//Clear interrupt flag
mIC1ClearIntFlag();
// 建立定时器3
OpenTimer3(T3_ON | T3_PS_1_1, T3_TICK);
//配置Capture1的中断(中断开启,中断优先级)
ConfigIntCapture1(IC_INT_ON | IC_INT_PRIOR_4 | IC_INT_SUB_PRIOR_3);
// 使能输入捕捉模块1
// 捕捉每个边沿
// 使能捕捉中断
// 使用定时器3作为测量基准
//第一次以扑捉下降沿开始
OpenCapture1( IC_SP_EVERY_EDGE | IC_INT_1CAPTURE | IC_TIMER3_SRC | IC_FEDGE_FALL | IC_ON ); INTEnableSystemMultiVectoredInt()
}
inputCapture配置说明:
          如图1所示,笔者需要测试的信号为从第一个下降沿开始之后每一个边沿的时间,这个设置可以通过写入“IC_FEDGE_FALL”关键字实现,问题就出在在,仅仅按照这个字面意思写入是不够的,仔细阅读数据手册时会发现,要实现这样的功能必须设置输入捕捉的工作模式为“ IC_SP_EVERY_EDGE”,如图2括号内说明,及图3模式说明。
PIC32MX单片机外设库使用(Ⅲ)-- 定时器之输入捕捉功能 - 虚室生白 - 虚室生白
 图 1
 PIC32MX单片机外设库使用(Ⅲ)-- 定时器之输入捕捉功能 - 虚室生白 - 虚室生白
图 2
 
PIC32MX单片机外设库使用(Ⅲ)-- 定时器之输入捕捉功能 - 虚室生白 - 虚室生白
        图 3
 
 
/**********************************************************************************************
*函数名 字:_InputCapture1(void)
*功能描 述: 输入捕捉1中断处理函数
*输      入: 无
*输        出: captime[10]:捕捉到的边沿时间值
*返        回: 无
*全局变量: 无
*调用模块: 
***********************************************************************************************/
void __ISR(5, ipl4) _InputCapture1(void)
{
int16u CaptureTime;
int8u time;
 
//读取IC1BUF内的数值
captime[captime_number++] = mIC1ReadCapture(); //IC1BUF;
 
//清除中断标志
mIC1ClearIntFlag();
}
说明:
1.中断函数怎么写,第一步在中断向量表(中断向量表在数据手册里有详细列出)里找到输入捕捉的中断号为“5”,
    第二步定义优先级为ipl4(注意是"L"的小写+4),第三部自定义函数名字 _InputCapture1(void),自己好记就行。
    void __ISR(5, ipl4) _InputCapture1(void)
    {
//things to do....
    }
2.中断内部处理
    经过笔者调试,应先读取IC1BUF内的数据,然后再清中断标志。如果先清中断标志再读ICBUF会产生读出的ICBUF与实际应该得到的数据对不上的情况,具体原因不知。
 
 
参考文献:①《C32 C Lib Guide》
    ②《C32 peripheral Lib Guide》
                      文档路径 -- MPLAB IDE v8.53 -->help--> Topics--> C32 Compiler -- >C32 C Lib Guide[PDF]
                                       -- MPLAB IDE v8.53 -->help--> Topics--> C32 Compiler -- >C32 peripheral Lib Guide
    ③《PIC32MX5XX6XX7XX-EN.PDF》-- microchip 官网

关键字:PIC32MX  单片机  外设库  定时器  输入捕捉 引用地址:PIC32MX单片机外设库使用(Ⅲ)-- 定时器之输入捕捉功能

上一篇:PIC内部EEPROM读写
下一篇:PIC单片机12864汉字液晶模块显示文字

推荐阅读最新更新时间:2024-03-16 15:19

一种基于单片机的速度测量系统
1. 引言 在我室研制的某型测控系统中,遇到一弹丸状物体的初速测量要求,速度范围在0~150m/s,要求测速模块实现成本低、可靠性高,测速数据送上位机显示。 目前科研生产中采用的速度测量方法可分为两类;直接测量法和间接测量法两大类。直接测量法是通过某种测量原理或效应直接获得速度量, 如多普勒测速仪、空间滤波测速等。这种方法的最大优点是反应快、可测量瞬时速度,但设备成本高,且受到大气物理环境的限制。间接测量法是测量目标的移动距离和时间, 通过计算得到速度量, 如光电测速、光栅测速、磁栅测速和图像测速等,用于测量小型弹丸的天幕法和光幕法测速系统、用于车辆测速的激光测速仪,以及用于生产流水线上的光电脉冲测速方法等等。 根据本系统的特点,我
[测试测量]
一种基于<font color='red'>单片机</font>的速度测量系统
用多路复用器扩展MCU串口
多微控制器(MCU)/微机组成的分布式、主从式系统是现代复杂通信、控制系统的典型解决方案。分布式环境下的多机协同,要求系统状态和控制信息在多机间进行快速传递,这通常借助简单有效的串行通信方式。现有的微控制器一般所带的串行接口非常适用于点对点通信的场合;但对于实时性要求高的多机通信场合,这类接口必须在串口数量和功能上进行扩展,才能满足对实时性要求较高的应用场合的需要。 本文讨论了一种适用于多机实时环境下的、新的可重配置串口扩展方案。多路复用器是本方案的硬件核心。方案的要点是利用Mux动态地将MCU的串口在串行通道间切换,以达到串口扩展的目的。本文中MCU以89C51为例,Mux 以MAX353为例。 MAX353 是Maxim
[单片机]
PIC中档单片机的中断总结
与51或者其他系列的单片机相比,PIC 单片机的中断机制有其特殊之处,针对我们一些初学者存在的一些问题和疑惑,我在此做一个个人总结,不当的地方,请站友们指正。 先摘引三个对PIC中断理解的回帖,然后我再对中断活动的过程、应该注意的事项、及一个疑惑进行较详细的总结和解释。 --------------- john frank :关于pic中断有些不明白的地方 借用大虾的程序; ;******************** 中断服务代码 btfss INTCON,T0IE ; 判断是否为T0中断 goto other_int btfss INTCON,T0IF ; it ’s the t
[单片机]
使用单片机实现复位电路的资料详细说明
单片机现了“死机”、“程序跑飞”等现象,这主要是单片机复位电路设计不可靠引起的。图1是一个单片机与大功率LED八段显示器共享一个电源,并采用微分复位电路的实例。在这种情况下,系统有时会出现一些不可预料的现象,如无规律可循的“死机”、“程序走飞”等。而用仿真器调试时却无此现象发生或极少发生此现象。又如图2所示,在此图中单片机复位采用另外一种复位电路。在此电路的应用中,用户有时会发现在关闭电源后的短时间内再次开启电源,单片机可能会工作不正常。这些现象,都可认为是由于单片机复位电路的设计不当 影响单片机系统运行稳定性的因素可大体分为外因和内因两部分: 1、外因 射频干扰,它是以空间电磁场的形式传递 在机器内部的导体(引线或零件引脚)
[单片机]
使用<font color='red'>单片机</font>实现复位电路的资料详细说明
Holtek触控式Sub-GHz OOK/FSK RF MCU
Holtek 推出全新触控式 Sub-1GHz OOK/FSK RF 发射器 Flash MCU BC66F2235 / BC66F2245 / BC66F2255,整合射频发射 + 触控键 + A/D Flash MCU 为SoC 芯片。强大的功能满足 RF + Touch 产品应用需求,如无线门铃、墙壁触控开关、集成吊顶遥控、智能晾衣架遥控等产品。 BC66F22x5 系 列 的 MCU 资 源 为 2K/4K/8K×16 Flash ROM、352×8 RAM、2 组 10-bit CTM 及 1 组 10-bit PTM、1/4/4 通道 12-bit ADC、IAP 功能、SPI/I²C 及 UART 接口。提供 8
[单片机]
单片机硬件抗干扰经验总结
  在研制带处理器的电子产品时,如何提高抗干扰能力和电磁兼容性?   一、下面的一些系统要特别注意抗电磁干扰:   1、微控制器时钟频率特别高,总线周期特别快的系统。   2、系统含有大功率,大电流驱动电路,如产生火花的继电器,大电流开关等。   3、含微弱模拟信号电路以及高精度A/D变换电路的系统。   二、为增加系统的抗电磁干扰能力采取如下措施:   1、选用频率低的微控制器   选用外时钟频率低的微控制器可以有效降低噪声和提高系统的抗干扰能力。同样频率的方波和正弦波,方波中的高频成份比正弦波多得多。虽然方波的高频成份的波的幅度,比基波小,但频率越高越容易发射出成为噪声源,微控制器产生的最有影响的高频噪声大约是时
[单片机]
有关Keil软件仿真的51单片机串口调试技巧
引言   在单片机系统中,串口(UART,通用异步收发接口)是一个非常重要的组成部分。通常使用单片机串口通过RS232/RS485电平转换芯片与上位机连接,以进行上位机与下位机的数据交换、参数设置、组成网络以及各种外部设备的连接等。RS232/RS485串行接口总线具有成本低、简单可靠、容易使用等特点,加上其历史悠久,所以目前应用仍然非常广泛;特别对于数据量不是很大的场合,串口通信仍然是很好的选择,有着广阔的使用前景。   在单片机编程中,串口占了很重要的地位。传统方式串口程序的调试,往往是利用专用的单片机硬件仿真器。在编写好程序后,利用仿真器来设置断点,观察变量和程序的流程,逐步对程序进行调试,修正错误。使用硬件仿真器的确是很有
[单片机]
有关Keil软件仿真的51<font color='red'>单片机</font>串口调试技巧
基于STM8L15x单片机的串口printf输出程序分享
这里我们以STM8L15x系列单片机使用ADC内部参考电压测量VDD电压并将电压值value通过窗口打印为例编写程序,(STM8L使用ADC内部参考电压通道测量VDD电压) usart.h头文件: #ifndef _usart_H #define _usart_H #include “stm8l15x.h” void Usart_Init(void); #endif usart.c源文件: #include “usart.h” void Usart_Init(void) { CLK_PeripheralClockConfig (CLK_Peripheral_USART1,ENABLE); //开启USART1时钟 USART_
[单片机]
基于STM8L15x<font color='red'>单片机</font>的串口printf输出程序分享
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved