本帖最后由 缥缈九哥 于 2012-9-14 12:10 编辑
新塘的NUC120有个CLKO输出功能,可以把几个时钟源(外部12M,外部32k,HCLK,内部22M)分频,从CLKO Pin输出
根据手册描述,CLKO输出在GPB12上,属于复用功能,所以使用前需要DrvGPIO_InitFunction(E_FUNC_CLKO); // 将GPB12 Pin设置为CLKO输出
看HOT的原理图发现如下所示:
上电了之后会将GPB12强行拉低,导致输出失效,所以要将R40断开
程序本身很简单,就不在上传工程文件了#include <stdio.h>
#include "NUC1xx.h"
#include "Driver\DrvGPIO.h"
#include "Driver\DrvSYS.h"
int main(void)
{
UNLOCKREG();
SYSCLK->WRCON.XTL12M_EN = 1;
DrvSYS_Delay(5000);
LOCKREG();
DrvGPIO_InitFunction(E_FUNC_CLKO); // 将GPB12 Pin设置为CLKO输出
DrvSYS_SelectIPClockSource(E_SYS_FRQDIV_CLKSRC,0x00); // 为CLKO选择时钟源,0-外部12M
// 1-外部32k,2-HCLK,3-内部22M
// 允许CLKO输出,分频数为6(可以设置的范围0-15). 输出频率 Fout = Fin / 2(n+1);
DrvSYS_SetFreqDividerOutput(1,6);
while(1);
}
运行后可以在GPB12测到93.74KHz的频率,调整不同的分频系数和时钟源可以获得不同的频率
附一张输出波形图
|