关于我们
技术文章
产品开发 芯片销售 技术顾问 PCBA加工
消费类 民用类 工控类 汽车类 医疗类
栏目导航
内容搜索
联系我们

联系电话: 138O2559739刘生

电子邮件: lmserver@163.com

办公地址: 深圳市宝安区宝民二路25号


技术文章

dsPIC33系列的定时器使用方法

信息来源:lmserver   浏览次数:2050   更新时间:2013-3-31 13:06:12

//母体为DSPIC33FJ64GP206

//晶体为16M,PLL4,那么系统频率应该是16*4/2=32M,本例程可以产生1KHZ频率的中断,中断服务程序可自行添加,如果改定时时间可以修改预分频比和PR1

#include <p33FJ64GP206.h>

void timer1_init(void)
{
        T1CON = 0;              //确保T1关闭,再进行初始化 
        IFS0bits.T1IF = 0;     //清T1复位标志,使T1复位   
        IPC0bits.T1IP = 5;     //3个BIT,设置T1的中断优先级,0~7,7是做高优先级       
        IEC0bits.T1IE = 1;     //开T1中断
        T1CONbits.TCKPS = 1;   //设置T1的预分频比是8,即T1加一次需要的时间为1/(32M/8)秒,即0.25uS
                                          //2个bit,00--1:1,01--1:8,10--1:64,11--1:256
        PR1 = 4000;  //根据计算应该是从0开始计数,加到PR1时产生中断,跟以往的MCU溢出中断不同
                                          //这个寄存器的值计算结果为,400~40000分别对应10KHz到100Hz
        T1CONbits.TON = 1;     //打开T1并开始计数

}
//====================定时中断服务程序======================
void __attribute__((__interrupt__,no_auto_psv)) _T1Interrupt(void)
{       PR1=40320/Ftimer1;   //计算定时器的溢出值       
        IFS0bits.T1IF = 0;     //在软件里清中断标志

        // your ISR code


}

最新评论
 
请礼貌用语,文明留言!
昵称:   验证码:
邮箱:   QQ/MSN:
内容:
   

Copyright © 2007-2018 All Rights Reserved
粤ICP备18039308号
Powered By McuDesign