21ic问答首页 - AT32F421K8U7怎么配置HSI为48MHz???
AT32F421K8U7怎么配置HSI为48MHz???
7947555962021-01-29
我直接在固件库里做了修改,不知道为何不行
static void SetSysClockTo48M(void)
{
__IO uint32_t StartUpCounter = 0, HSEStatus = 0;
// 把RCC外设初始化成复位状态,这句是必须的
RCC_Reset();
//使能HSI
RCC_HSICmd(ENABLE);
// 只有 HSI就绪之后则继续往下执行
if (RCC_GetFlagStatus(RCC_FLAG_HSISTBL ))
{
//----------------------------------------------------------------------//
FLASH->ACR = FLASH_ACR_DEFAULT(FLASH_ACR_LATENCY_1);
//----------------------------------------------------------------------//
// AHB预分频因子设置为1分频,HCLK = SYSCLK
RCC_AHBCLKConfig(RCC_SYSCLK_Div1);
// APB2预分频因子设置为1分频,PCLK2 = HCLK
RCC_APB2CLKConfig(RCC_AHBCLK_Div1);
// APB1预分频因子设置为1分频,PCLK1 = HCLK
RCC_APB1CLKConfig(RCC_AHBCLK_Div1);
// 设置PLL时钟来源为HSE,设置PLL倍频因子
// PLLCLK = 4MHz * pllmul
RCC_PLLConfig(RCC_PLLRefClk_HSI_Div2, 12,RCC_Range_LessEqual_72Mhz);
//------------------------------------------------------------------//
// 开启PLL
RCC_PLLCmd(ENABLE);
// 等待 PLL稳定
while (RCC_GetFlagStatus(RCC_FLAG_PLLSTBL) == RESET)
{
}
// 当PLL稳定之后,把PLL时钟切换为系统时钟SYSCLK
RCC_SYSCLKConfig(RCC_SYSCLKSelction_HSI);
// 读取时钟切换状态位,确保PLLCLK被选为系统时钟
while (RCC_GetSYSCLKSelction() != 0x08)
{
}
}
else
{
while (1)
{
}
}
static void SetSysClockTo48M(void)
{
__IO uint32_t StartUpCounter = 0, HSEStatus = 0;
// 把RCC外设初始化成复位状态,这句是必须的
RCC_Reset();
//使能HSI
RCC_HSICmd(ENABLE);
// 只有 HSI就绪之后则继续往下执行
if (RCC_GetFlagStatus(RCC_FLAG_HSISTBL ))
{
//----------------------------------------------------------------------//
FLASH->ACR = FLASH_ACR_DEFAULT(FLASH_ACR_LATENCY_1);
//----------------------------------------------------------------------//
// AHB预分频因子设置为1分频,HCLK = SYSCLK
RCC_AHBCLKConfig(RCC_SYSCLK_Div1);
// APB2预分频因子设置为1分频,PCLK2 = HCLK
RCC_APB2CLKConfig(RCC_AHBCLK_Div1);
// APB1预分频因子设置为1分频,PCLK1 = HCLK
RCC_APB1CLKConfig(RCC_AHBCLK_Div1);
// 设置PLL时钟来源为HSE,设置PLL倍频因子
// PLLCLK = 4MHz * pllmul
RCC_PLLConfig(RCC_PLLRefClk_HSI_Div2, 12,RCC_Range_LessEqual_72Mhz);
//------------------------------------------------------------------//
// 开启PLL
RCC_PLLCmd(ENABLE);
// 等待 PLL稳定
while (RCC_GetFlagStatus(RCC_FLAG_PLLSTBL) == RESET)
{
}
// 当PLL稳定之后,把PLL时钟切换为系统时钟SYSCLK
RCC_SYSCLKConfig(RCC_SYSCLKSelction_HSI);
// 读取时钟切换状态位,确保PLLCLK被选为系统时钟
while (RCC_GetSYSCLKSelction() != 0x08)
{
}
}
else
{
while (1)
{
}
}
赞0
评论
2021-01-29
赞0
评论
2021-01-29
您需要登录后才可以回复 登录 | 注册