微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > SAM4E单片机之旅——9、UART与MCK之MAINCK

SAM4E单片机之旅——9、UART与MCK之MAINCK

时间:02-21 来源:互联网 点击:

振启动时间参数。需要制定一个16位的值(MOSCXTST)来表明晶振启动的时间,具体计算方法为:启动时间 = MOSCXTST * 8 * SLCK周期。

uint32_t slowck_freq = CHIP_FREQ_SLCK_RC;

volatile uint32_t xt_start =

(BOARD_OSC_STARTUP_US * slowck_freq / 8 / 1000000);

if (xt_start > 0xFF)

xt_start = 0xFF;

使能晶振,并等待其运行稳定。使能晶振时,必须同时使用旁路模式。

PMC->CKGR_MOR = CKGR_MOR_KEY_PASSWD

| (PMC->CKGR_MOR & ~CKGR_MOR_MOSCXTBY)

| CKGR_MOR_MOSCXTEN

| CKGR_MOR_MOSCXTST(xt_start)

;

/* 等待晶振运行稳定 */

while (!(PMC->PMC_SR & PMC_SR_MOSCXTS))

;

让MAINCK切换为晶振时钟源,并等其运行稳定。

/* 切换至晶振 */

PMC->CKGR_MOR |= CKGR_MOR_KEY_PASSWD

| CKGR_MOR_MOSCSEL ;

/* 等待切换完成 */

while (!(PMC->PMC_SR & PMC_SR_MOSCSELS))

;

由于MCK的时钟并未改变,均是12 MHz,所以不用修改UART的设置,就可以正常通信了。

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

网站地图

Top