打印

帮我看下程序为什么会死在这。

[复制链接]
5035|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
伊泽瑞拉|  楼主 | 2014-5-20 09:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
rc, se, ui, ST, PLL
static void SetSysClockTo72(void)
{
  __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
  
  /*!< SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/   
  /*!< Enable HSE */   
  RCC->CR |= ((uint32_t)RCC_CR_HSEON);

  /*!< Wait till HSE is ready and if Time out is reached exit */
  do
  {
    HSEStatus = RCC->CR & RCC_CR_HSERDY;
    StartUpCounter++;  
  } while((HSEStatus == 0) && (StartUpCounter != HSEStartUp_TimeOut));

  if ((RCC->CR & RCC_CR_HSERDY) != RESET)
  {
    HSEStatus = (uint32_t)0x01;
  }
  else
  {
    HSEStatus = (uint32_t)0x00;
  }  

  if (HSEStatus == (uint32_t)0x01)
  {
    /*!< Enable Prefetch Buffer */
    FLASH->ACR |= FLASH_ACR_PRFTBE;

    /*!< Flash 2 wait state */
    FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
    FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2;   

    /*!< HCLK = SYSCLK */
    RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
      
    /*!< PCLK2 = HCLK */
    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
   
    /*!< PCLK1 = HCLK */
    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
   
    /*!< PLLCLK = 8MHz * 9 = 72 MHz */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL9);

    /*!< Enable PLL */
    RCC->CR |= RCC_CR_PLLON;

    /*!< Wait till PLL is ready */
    while((RCC->CR & RCC_CR_PLLRDY) == 0)
    {
    }

    /*!< Select PLL as system clock source */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
    RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;   

    /*!< Wait till PLL is used as system clock source */
    while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
    {
    }
  }
  else
  { /*!< If HSE fails to start-up, the application will have wrong clock
         configuration. User can add here some code to deal with this error */   

    /*!< Go to infinite loop */
    while (1)
    {
    }
  }
}
#endif

相关帖子

沙发
伊泽瑞拉|  楼主 | 2014-5-20 09:49 | 只看该作者
程序卡在最后一个while里面了    这是因为什么原因

使用特权

评论回复
板凳
伊泽瑞拉|  楼主 | 2014-5-20 14:25 | 只看该作者
yyy71cj 发表于 2014-5-20 10:10
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
    {
    }

虽然不是这个原因  但还是谢谢你

使用特权

评论回复
地板
伊泽瑞拉|  楼主 | 2014-5-20 14:28 | 只看该作者
yyy71cj 发表于 2014-5-20 10:10
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
    {
    }

我想问一下 你知道MPU6050 读出来的加速度    怎么转换成和重力加速度对应的数据吗?

使用特权

评论回复
5
伊泽瑞拉|  楼主 | 2014-5-21 09:12 | 只看该作者
yyy71cj 发表于 2014-5-20 17:08
这个MPU6050的资料里应该有吧,应该不是什么难事

int main(void)
{

  I2C_Config();

  InitMPU6050();
   while(1)
   {
                 
    data_x=getdate(ACCEL_XOUT_H)/16384.0;       
    data_y=((getdate(ACCEL_YOUT_H)/16384.0)*9.8);
    data_z=getdate(ACCEL_ZOUT_H)/16384.0;
                 
                data_xl=getdate(GYRO_XOUT_H);
    data_yl=getdate(GYRO_YOUT_H);
    data_zl=getdate(GYRO_ZOUT_H);
   
                JK_FLAG++;
   }
}




加粗的这两个值   变化幅度太大     是什么情况

使用特权

评论回复
6
伊泽瑞拉|  楼主 | 2014-5-21 16:06 | 只看该作者
yyy71cj 发表于 2014-5-21 11:49
这两个值来历不明,从软件上看是不是读出的原始值?如果是,则有可能是灵敏度很高,加速度变化在这两个方 ...

程序就这个  



读出来的值不正常    不知道哪出问题了

I2C.rar

863.18 KB

使用特权

评论回复
7
LOVE_ELEC| | 2014-9-28 11:40 | 只看该作者
请问你这个卡死在最后一条语句是由什么引起的?

使用特权

评论回复
8
2342341234| | 2016-11-4 15:44 | 只看该作者
我也卡在哪里了,唉!有时候好,有时候坏。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

227

帖子

0

粉丝