以下是新唐MINI51使用内置RC振荡的例程:
```
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "Mini51Series.h"
#define PLL_CLOCK 50000000
void CLK_Init(void)
{
/* Unlock protected registers */
SYS_UnlockReg();
/* Enable HIRC */
CLK_EnableXtalRC(CLK_PWRCON_OSC22M_EN_Msk);
/* Waiting for HIRC clock ready */
CLK_SysTickDelay(2000);
/* Set HCLK clock */
CLK_SetCoreClock(PLL_CLOCK);
/* Enable UART clock */
CLK_EnableModuleClock(UART0_MODULE);
/* Set UART clock */
CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0_S_HCLK, CLK_CLKDIV_UART(1));
/* Lock protected registers */
SYS_LockReg();
}
int main()
{
/* Init System, IP clock and multi-function I/Os */
SYS_Init();
/* Init UART to 115200-8n1 for print message */
UART_Open(UART0, 115200);
/* Enable FMC ISP */
FMC_Open();
/* Enable internal RC oscillator */
CLK->PWRCON |= CLK_PWRCON_IRC22M_EN_Msk;
/* Waiting for clock ready */
while(!(CLK->CLKSTATUS & CLK_CLKSTATUS_IRC22M_STB_Msk));
/* Switch to internal RC */
CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_IRC, CLK_CLKDIV_HCLK(1));
/* Output message */
printf("Welcome to use internal RC oscillator testn");
/* Output core clock rate */
printf("Core Clock Rate = %d Hzn", SystemCoreClock);
while(1);
}
```
在该例程中,我们使用了内置22.1184MHz的RC振荡器作为时钟源,并将系统时钟设置为PLL输出频率50MHz。在启用内部RC之后,我们使用了 `CLK_SetHCLK()` 函数将系统时钟切换为内部RC,并输出一条欢迎消息和当前系统时钟频率的消息。
如果仍然无法正常运行程序,请确保您的硬件连接正确并且您的开发板能够正常工作。
以下是新唐MINI51使用内置RC振荡的例程:
```
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "Mini51Series.h"
#define PLL_CLOCK 50000000
void CLK_Init(void)
{
/* Unlock protected registers */
SYS_UnlockReg();
/* Enable HIRC */
CLK_EnableXtalRC(CLK_PWRCON_OSC22M_EN_Msk);
/* Waiting for HIRC clock ready */
CLK_SysTickDelay(2000);
/* Set HCLK clock */
CLK_SetCoreClock(PLL_CLOCK);
/* Enable UART clock */
CLK_EnableModuleClock(UART0_MODULE);
/* Set UART clock */
CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0_S_HCLK, CLK_CLKDIV_UART(1));
/* Lock protected registers */
SYS_LockReg();
}
int main()
{
/* Init System, IP clock and multi-function I/Os */
SYS_Init();
/* Init UART to 115200-8n1 for print message */
UART_Open(UART0, 115200);
/* Enable FMC ISP */
FMC_Open();
/* Enable internal RC oscillator */
CLK->PWRCON |= CLK_PWRCON_IRC22M_EN_Msk;
/* Waiting for clock ready */
while(!(CLK->CLKSTATUS & CLK_CLKSTATUS_IRC22M_STB_Msk));
/* Switch to internal RC */
CLK_SetHCLK(CLK_CLKSEL0_HCLK_S_IRC, CLK_CLKDIV_HCLK(1));
/* Output message */
printf("Welcome to use internal RC oscillator testn");
/* Output core clock rate */
printf("Core Clock Rate = %d Hzn", SystemCoreClock);
while(1);
}
```
在该例程中,我们使用了内置22.1184MHz的RC振荡器作为时钟源,并将系统时钟设置为PLL输出频率50MHz。在启用内部RC之后,我们使用了 `CLK_SetHCLK()` 函数将系统时钟切换为内部RC,并输出一条欢迎消息和当前系统时钟频率的消息。
如果仍然无法正常运行程序,请确保您的硬件连接正确并且您的开发板能够正常工作。
举报