PIC24F单片机定时器

2020-02-08 09:15发布

大家好,我最近在调PIC24FJ定时器,发现我往PR1寄存器写数,它是递减的,可是datasheet中写的是递增的,是不是哪里没有设置对?

下面是初始化程序:
void Timer1_Initialize(void)
{
T1CONbits.TCKPS1 = 0;   //Timer1 Input Clock Prescale
T1CONbits.TCKPS0 = 0;   //Timer1 Input Clock Prescale
T1CONbits.TCS = 1;      //External clock from T1CK pin
    //T1CONbits.TSYNC =1;
PR1 = 0x140;           //10ms  这里如果我写0x140的话,中断函数中的IO  10ms会改变一次状态
//PR1 = 0x280;           //20ms  如果写成0x280 ,中断函数中的IO  20ms会改变一次状态
T1CONbits.TSIDL = 0;    //Discontinue module operation when device enters Idle mode  
    IEC0bits.T1IE = 1;      //set the interrupt enable bit
    T1CONbits.TON = 1;      //Starts 16-bit Timer1
}


中断函数:
void __attribute__((__interrupt__, auto_psv)) _T1Interrupt(void)
{
    IFS0bits.T1IF = 0;

    LATFbits.LATF3 = ~(LATFbits.LATF3);
}

单片机型号是PIC24FJ256DA210      编译器  C30   用的是外部晶振32.768kHZ
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
millwood0
1楼-- · 2020-02-08 14:56
发现我往PR1寄存器写数,它是递减的,可是datasheet中写的是递增的,是不是哪里没有设置对?


you have a pic24f made by somebody else. :)


下面是初始化程序:


that should work.

单片机型号是PIC24FJ256DA210      编译器  C30   用的是外部晶振32.768kHZ


make sure that you have turned on sosc in the configuration words.
liuhongen
2楼-- · 2020-02-08 15:16
millwood0 发表于 2012-5-8 19:12
you have a pic24f made by somebody else. :)

晶振的配置位,我已经更改过,并且已经测试过波形,我相信,晶振的配置位是没有问题的
millwood0
3楼-- · 2020-02-08 17:22
 精彩回答 2  元偷偷看……
liuhongen
4楼-- · 2020-02-08 22:49
millwood0 发表于 2012-5-9 19:20
you probably misunderstood what PIRx is. PIRx is a period register that resets timer counters once t ...

原来是这样,谢谢你

一周热门 更多>