zzzzzx 发表于 2018-7-25 10:30:21

各位大神帮帮忙, STM32L151修改MSI频率程序跑飞

本帖最后由 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

data:image/png;base64,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

MSI设置为RANGE 3即以上时,程序就能正常运行



废鱼 发表于 2018-7-25 14:03:45

我不是修改system_stm32l1xx.c,我是单独写的配置函数。进入main后调用。
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);
}

zzzzzx 发表于 2018-7-25 11:42:45

安 发表于 2018-7-25 11:18
我看了一下代码,我猜测是波特率太高了吧,你把串口波特率往小调一下。调到4800或者9600试试。我当时测试不 ...

不是串口波特率的问题,在设置系统时钟修改MSI的频率,调试时一运行到RCC_SYSCLKConfig(RCC_SYSCLKSource_MSI);这条语句就飞掉了,设置为range 3以上就没有问题,是不是降低频率还有其他地方需要注意的。

zzzzzx 发表于 2018-7-26 14:39:09

butterflyspring 发表于 2018-7-25 14:20
你的主频大于了131kHz,你可以测试一下,小于131时,range1应该没有问题..

系统复位就是MSI 2.097Mhz的主频,如果修改AHB的分配,使CPU时钟低于131,程序也会飞掉。但从2M切换到524是可以的,感觉要让系统工作在低频还需要其他配置,我使用标准库里的low power rum例程也是同样要跑飞。

废鱼 发表于 2018-7-25 10:32:29

楼主方便把工程传上来吗?我用的时候,RANGE 3以下发现串口波特率会出现问题。楼主是否还使用其他的外设资源呢?

zzzzzx 发表于 2018-7-25 10:58:20

安 发表于 2018-7-25 10:32
楼主方便把工程传上来吗?我用的时候,RANGE 3以下发现串口波特率会出现问题。楼主是否还使用其他的外设资 ...

已上传附件了,你的程序修改到range 1可以运行吗

废鱼 发表于 2018-7-25 11:18:04

我看了一下代码,我猜测是波特率太高了吧,你把串口波特率往小调一下。调到4800或者9600试试。我当时测试不光影响这个,ADC都无法工作,还是放弃使用了。

butterflyspring 发表于 2018-7-25 11:59:27

你的主频是?

zzzzzx 发表于 2018-7-25 12:05:02

butterflyspring 发表于 2018-7-25 11:59
你的主频是?

我希望使用MSI做系统时钟,运行在131.072 KHz 上

butterflyspring 发表于 2018-7-25 14:20:06

你的主频大于了131kHz,你可以测试一下,小于131时,range1应该没有问题..

zzzzzx 发表于 2018-7-26 15:10:47

安 发表于 2018-7-25 14:03
我不是修改system_stm32l1xx.c,我是单独写的配置函数。进入main后调用。
void RCC_Config(void)
{


你将range6改为range1能不能正常运行啊

废鱼 发表于 2018-7-26 15:47:56

我试过是可以的,但是波特率就不对了。

zzzzzx 发表于 2018-7-26 16:03:34

安 发表于 2018-7-26 15:47
我试过是可以的,但是波特率就不对了。

我试了你的代码,不知道为什么我的就不行,感谢你的帮助!!!
我再想想是哪里的问题。

zzzzzx 发表于 2018-7-26 16:04:13

安 发表于 2018-7-26 15:47
我试过是可以的,但是波特率就不对了。

不知能否将你的工程发给我,我试下。

废鱼 发表于 2018-7-26 16:19:36

zzzzzx 发表于 2018-7-26 16:04
不知能否将你的工程发给我,我试下。

不好意思,工程发不了。
页: [1] 2
查看完整版本: 各位大神帮帮忙, STM32L151修改MSI频率程序跑飞