PIC24HJ单片机时钟

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,将生成的代码复制到编辑框内。


// PIC24HJ128GP506A Configuration Bit Settings

// 'C' source line config statements

// FBS
#pragma config BWRP = WRPROTECT_OFF     // Boot Segment Write Protect (Boot Segment may be written)
#pragma config BSS = NO_FLASH           // Boot Segment Program Flash Code Protection (No Boot program Flash segment)
#pragma config RBS = NO_RAM             // Boot Segment RAM Protection (No Boot RAM)

// FSS
#pragma config SWRP = WRPROTECT_OFF     // Secure Segment Program Write Protect (Secure segment may be written)
#pragma config SSS = NO_FLASH           // Secure Segment Program Flash Code Protection (No Secure Segment)
#pragma config RSS = NO_RAM             // Secure Segment Data RAM Protection (No Secure RAM)

// FGS
#pragma config GWRP = OFF               // General Code Segment Write Protect (User program memory is not write-protected)
#pragma config GSS = OFF                // General Segment Code Protection (User program memory is not code-protected)

// FOSCSEL
#pragma config FNOSC = PRIPLL           // Oscillator Mode (Primary Oscillator (XT, HS, EC) w/ PLL)
#pragma config IESO = ON                // Two-speed Oscillator Start-Up Enable (Start up with FRC, then switch)

// FOSC
#pragma config POSCMD = HS              // Primary Oscillator Source (HS Oscillator Mode)
#pragma config OSCIOFNC = OFF           // OSC2 Pin Function (OSC2 pin has clock out function)
#pragma config FCKSM = CSDCMD           // Clock Switching and Monitor (Both Clock Switching and Fail-Safe Clock Monitor are disabled)

// FWDT
#pragma config WDTPOST = PS32768        // Watchdog Timer Postscaler (1:32,768)
#pragma config WDTPRE = PR128           // WDT Prescaler (1:128)
#pragma config WINDIS = OFF             // Watchdog Timer Window (Watchdog Timer in Non-Window mode)
#pragma config FWDTEN = ON              // Watchdog Timer Enable (Watchdog timer always enabled)

// FPOR
#pragma config FPWRT = PWR128           // POR Timer Value (128ms)

// FICD
#pragma config ICS = PGD1               // Comm Channel Select (Communicate on PGC1/EMUC1 and PGD1/EMUD1)
#pragma config JTAGEN = OFF             // JTAG Port Enable (JTAG is Disabled)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>

int main(void){
    return 0;
}

以上#progma …都是对PIC24HJ的配置,可以在上面找到时钟源的配置。分别是FOSCSEL和FOSC两块。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值