ATxmage入门应用之时钟模块和GPIO模块的介绍

描述

1,时钟系统

任何嵌入式系统要正常运行都必须需要一个稳定的时钟系统。下面简单介绍一下xmega的时钟系统及初始化过程。

Xmega时钟系统时钟源包括内部时钟源和外部时钟源。

内部时钟源有:

32MHz内部RC振荡器;

2MHZ内部RC振荡器;

32768kHz内部RC振荡器;

32Khz内部ULP低功耗振荡器;

外部时钟源:

0.4~16MHZ晶体振荡器;引脚XTAL1和XTAL2;

32.768kHZ晶体振荡器;引脚为TOSC1和TOSC2;

还可以从外部直接接入时钟。

通过上述时钟源通过锁相环(PLL)可以倍频到32MHz。

时钟分系统时钟、CPU时钟、外设时钟、外设分频时钟,同步时钟。

系统时钟选择与分频:所有时钟源及PLL都可以作为系统时钟CLK(sys),选择时钟源后,进入分频器进行分频。分频后作为各种外设时钟频率。

下面说一下PLL的倍频配置:

F(pll)=F(in)*PLL_FAC

下面4个时钟源可以作为锁相环的输入时钟:

MHz internal oscillator ,

32 MHz internal oscillator divided by 4

0.4 - 16 MHz Crystal Oscillator

External clock

要使用PLL,必须遵循下面几个步骤:

1,使能输入时钟源;

2,选择输入时钟源和设置倍频因子;

3,等待时钟源稳定;

4,使能PLL;

相关操作参见相关寄存器操作。具体的寄存器请到官网下载数据手册和用户手册查阅。下面我在Atmel Studio 6.2的基础上举例初始化时钟,初始化使用PLL到32MHz。参照上一章节的介绍在项目中添加时钟系统的驱动模块。

在系统时钟模块中的配置文件conf_clock.h中定义宏定义:

GPIO

GPIO

GPIO

GPIO

初始化后可以通过sysclk_get_main_hz这个函数读取系统时钟,该函数返回的就是系统时钟频率,看是否与初始化是否成功。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分