PIC24HJ时钟
1.时钟来源 PIC24HJ系列单片机的时钟来源有以下几个: a.主振荡器:EC,HS,XT,三个外部时钟源,这三个又有不同的频率范围,具体不赘述,可以在PIC24HJ数据手册中找到,这里有必要说明一下这三个时钟源的接法:EC高速晶振单脚接入单片机,它的特点是接电源自激振荡,并输出时钟信号至PIC24HJ,HS和XT都是通过PIC24HJ的OSC1和OSC2接入,需要单片机起振才能正常工作。 b.内部快速RC振荡器(FRC),它的标称值是7.37MHz。 c.辅助振荡器Socs,它的频率是32768KHz。
2.配置时钟 PIC24HJ的时钟源可以配置,如果我们写的代码里面没有设置时钟的话,PIC24HJ默认使用内部FRC晶振的。7.37MHz并不是直接作用于器件(外设)上的,如果使用带PLL锁相环的FRC,需要配置三个系数M,N1和N2。这里的FRC标称值7.37MHz就是Fosc,单片机的工作频率,它驱动PIC24HJ的定时器外设时,不是直接输出到定时器上的,PIC24HJ单片机有器件工作频率Fcy = Fosc / 2。 接上一篇文章配置TIMER定时1MS,在中断函数中设置一个计数器,累加1000,翻转LED状态。具体是修改上一篇代码中的PR1的值,修改为:3684,因为TIMER的工作频率是3.685MHz。根据Fcy = Fosc / 2得到。代码中设置的时钟分频是1分频。
使用MPLAB X IDE 自带的配置位设置时钟源为:外部时钟HS: 具体是修改图中红色箭头所指的这两部分。一个选择时钟源为带PLL锁相环的主振荡器PRIPLL,一个是选择主振荡器的类型为HS,由于我的外部晶振是接在PIC24HJ的OSC1和OSC2上所以不能选择EC,之前选择EC发现单片机不能工作,直接影响不能使用MPLAB X IDE 调试代码,调试代码出现:“Your Target could not ready to DEBUG”类似的话,问题就出现在这,这是因为DEBUG时时钟没有起振,PIC24HJ不工作。配置完成后,点击下面的Generate Source Code,将生成的代码复制到编辑框内。
#pragma config BWRP = WRPROTECT_OFF
#pragma config BSS = NO_FLASH
#pragma config RBS = NO_RAM
#pragma config SWRP = WRPROTECT_OFF
#pragma config SSS = NO_FLASH
#pragma config RSS = NO_RAM
#pragma config GWRP = OFF
#pragma config GSS = OFF
#pragma config FNOSC = PRIPLL
#pragma config IESO = ON
#pragma config POSCMD = HS
#pragma config OSCIOFNC = OFF
#pragma config FCKSM = CSDCMD
#pragma config WDTPOST = PS32768
#pragma config WDTPRE = PR128
#pragma config WINDIS = OFF
#pragma config FWDTEN = ON
#pragma config FPWRT = PWR128
#pragma config ICS = PGD1
#pragma config JTAGEN = OFF
#include <xc.h>
int main(void){
return 0;
}
以上#progma …都是对PIC24HJ的配置,可以在上面找到时钟源的配置。分别是FOSCSEL和FOSC两块。
|