本帖最后由 zzzzzx 于 2018-7-25 10:57 编辑 各位大神帮帮忙!!! 想让芯片运行在low power run 模式,修改MSI频率为range 1,仿真时程序直接飞掉了,烧录程序直接运行出现Internel command error 程序代码: RCC->CR |= ((uint32_t)RCC_CR_MSION); if ((RCC->CR & RCC_CR_MSIRDY) != RESET) { MSIStatus = (uint32_t)0x01; } else { MSIStatus = (uint32_t)0x00; } if (MSIStatus == (uint32_t)0x01) { /* Flash 0 wait state */ FLASH->ACR &= ~FLASH_ACR_LATENCY; // /* Disable Prefetch Buffer */ FLASH->ACR &= ~FLASH_ACR_PRFTEN; // /* Disable 64-bit access */ FLASH->ACR &= ~FLASH_ACR_ACC64; /* Power enable */ // RCC->APB1ENR |= RCC_APB1ENR_PWREN; /* Select the Voltage Range 2 (1.5 V) */ PWR->CR = PWR_CR_VOS_1; /* Wait Until the Voltage Regulator is ready */ while((PWR->CSR & PWR_CSR_VOSF) != RESET) { } /* HCLK = SYSCLK /1*/ RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1; /* PCLK2 = HCLK /1*/ RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1; /* PCLK1 = HCLK /1*/ RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1; RCC->ICSCR &= (uint32_t)((uint32_t)~(RCC_ICSCR_MSIRANGE)); RCC->ICSCR |= (uint32_t)RCC_ICSCR_MSIRANGE_1; while((RCC->CR & RCC_CR_MSIRDY) == RESET) ; /* Select MSI as system clock source */ RCC_SYSCLKConfig(RCC_SYSCLKSource_MSI); /* Wait till MSI is used as system clock source */ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_MSI) { } 程序直接烧录运行出现的Internel command error MSI设置为RANGE 3即以上时,程序就能正常运行 |
PROJECT.rar
下载1.81 MB, 下载次数: 29, 下载积分: ST金币 -1
void RCC_Config(void)
{
RCC_ClocksTypeDef RCC_Clocks;
RCC_DeInit();
RCC_MSIRangeConfig(RCC_MSIRange_6);
RCC_AdjustMSICalibrationValue(0);
RCC_MSICmd(ENABLE);
RCC_SYSCLKConfig(RCC_SYSCLKSource_MSI);
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_GetClocksFreq(&RCC_Clocks);
SysTick_Config(RCC_Clocks.SYSCLK_Frequency / 1000);
}
评分
查看全部评分
不是串口波特率的问题,在设置系统时钟修改MSI的频率,调试时一运行到RCC_SYSCLKConfig(RCC_SYSCLKSource_MSI);这条语句就飞掉了,设置为range 3以上就没有问题,是不是降低频率还有其他地方需要注意的。
系统复位就是MSI 2.097Mhz的主频,如果修改AHB的分配,使CPU时钟低于131,程序也会飞掉。但从2M切换到524是可以的,感觉要让系统工作在低频还需要其他配置,我使用标准库里的low power rum例程也是同样要跑飞。
评分
查看全部评分
已上传附件了,你的程序修改到range 1可以运行吗
我希望使用MSI做系统时钟,运行在131.072 KHz 上
评分
查看全部评分
你将range6改为range1能不能正常运行啊
我试了你的代码,不知道为什么我的就不行,感谢你的帮助!!!
我再想想是哪里的问题。
不知能否将你的工程发给我,我试下。
不好意思,工程发不了。