PLL是为了给高时钟的外设准备的,比如CAN,USB。
由于刚学还不可能涉及到那么深不过可以通过LED来使用它。
在时钟源选择控制寄存器0 (CLKSEL0)
有选择的定义
由于系统默认为外部的12MHZ晶振为系统时钟源,而这个时钟源正好能为PLL提供时钟输入,所以就不用改系统时钟而直接改HCLK_S的设置,只需一句就可实现PLL晶振。
那就是这句: SYSCLK->CLKSEL0.STCLK_S = 2;
以前的程序延时参数是1000,由于用PLL太快,下到板子上,LED一起亮。看不出运行没,所以我改为100000,这时可看出是依次亮灭。
#include <stdio.h>
#include "NUC1xx.h"
#include "DrvGPIO.h"
#include "DrvSYS.h"
int main (void)
{
UNLOCKREG();
SYSCLK->CLKSEL0.STCLK_S = 2;
DrvSYS_Delay(5000);
DrvGPIO_Open(E_GPB, 10, E_IO_OUTPUT); // 设置GPB10端口为输出模式
DrvGPIO_ClrBit(E_GPB, 10); // 清GPB10端口 蜂鸣器不叫唤
DrvGPIO_Open(E_GPA, 2, E_IO_OUTPUT);
DrvGPIO_Open(E_GPA, 3, E_IO_OUTPUT);
DrvGPIO_Open(E_GPA, 4, E_IO_OUTPUT);
DrvGPIO_Open(E_GPA, 5, E_IO_OUTPUT);
while(1)
{
DrvGPIO_SetPortBits(E_GPA,0xfb);
DrvSYS_Delay(100000);
DrvGPIO_SetPortBits(E_GPA,0xf7);
DrvSYS_Delay(100000);
DrvGPIO_SetPortBits(E_GPA,0xef);
DrvSYS_Delay(100000);
DrvGPIO_SetPortBits(E_GPA,0xdf);
DrvSYS_Delay(100000);
}
}
NUC test2.rar
(2.29 MB)
|