微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PIC16位单片机CAN(7)定时器

PIC16位单片机CAN(7)定时器

时间:11-13 来源:互联网 点击:
定时器相对来说是最简单的了,也没有什么说的,

每个定时器模块都是 16 位定时器 / 计数器,由以下可读 / 写寄存器组成:

? TMRx:16 位定时器计数寄存器

? PRx:与定时器相关的 16 位定时器周期寄存器

? TxCON:与定时器相关的 16 位定时器控制寄存器

需要注意的是:

1:定时器是16位了,也可以配置为32位的,具体看文档,这里使用16位的定时器。

2:PRx:与定时器相关的 16 位定时器周期寄存器。也就是TMRx的值和PRx值相等时产生中断。】

下面看程序:

/******************************************************************

初始化Time1为定时器模式

参数:

******************************************************************/

void Time1Init(void)

{

T1CONbits.TON = 0; // Disable Timer

T1CONbits.TCS = 0; // Select internal instruction cycle clock

T1CONbits.TGATE = 0; // Disable Gated Timer mode

T1CONbits.TCKPS = 0b11; // Select 1:256 Prescaler

TMR1 = 0x00; // Clear timer register

PR1 =46875; // Load the period value 相当于1秒产生一次中断

T1CONbits.TON = 1; // Enable Timer

}

中断处理函数为

/******************************************************************

定时器1中断 1s中断一次 发送一次CAN数据

参数:

******************************************************************/

void __attribute__((__interrupt__, no_auto_psv)) _T1Interrupt(void)

{

IFS0bits.T1IF = 0; //Clear Timer1 interrupt flag

Ecan1_WriteMessage(AD_Data);//CAN发送数据

}


上一篇:STM32通用定时器TIMx
下一篇:STM32之DMA

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top