F429 流水灯为什么只点亮了红灯

2019-07-20 19:15发布

我自己重新建了一个工程,source和include还有main,led都是拷贝的例程一的,只是工程是我自己重新建的而已,编译没错没警告,怎么流水灯只亮了一个呢,单独点亮每个灯都是亮的呀?
有遇到过类似情况吗,求解答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
马小跳
1楼-- · 2019-07-22 10:18
正点原子 发表于 2016-10-27 20:53
仿真跟踪下就知道了。

原子哥,建工程时我是在Manage Run-Time Environment 对话框里添加的组件,启动文件,没有像你一样添加.c文件,工程编译通过了,但是仿真时红灯亮时就卡住sys.c中的delay_ms中,然后我把延时改用hal_delay()来做,结果运行到那keil直接报错闪退了。
是不是你们对core里的一些程序做了修改呀,我就这一步没有按照你们的做,直接在Manage Run-Time Environment 里勾选的,图片在下面
马小跳
2楼-- · 2019-07-22 14:41
 精彩回答 2  元偷偷看……
初学者要变大师
3楼-- · 2019-07-22 18:53
帮不了你了  但我发现你的文件里少了一个 cmsis_armcc.h 这个在你勾选的内核文件中没有
马小跳
4楼-- · 2019-07-22 21:43
 精彩回答 2  元偷偷看……
初学者要变大师
5楼-- · 2019-07-23 01:38
代码在system_stm32f4xx.c中  

static void SetSysClock(void)
{
/******************************************************************************/
/*            PLL (clocked by HSE) used as System clock source                */
/******************************************************************************/
  __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
  
  /* 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 != HSE_STARTUP_TIMEOUT));

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

  if (HSEStatus == (uint32_t)0x01)
  {
    /* Select regulator voltage output Scale 1 mode */
    RCC->APB1ENR |= RCC_APB1ENR_PWREN;
    PWR->CR |= PWR_CR_VOS;

    /* HCLK = SYSCLK / 1*/
    RCC->CFGR |= RCC_CFGR_HPRE_DIV1;

#if defined (STM32F40_41xxx) || defined (STM32F427_437xx) || defined (STM32F429_439xx)      
    /* PCLK2 = HCLK / 2*/
    RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;
   
    /* PCLK1 = HCLK / 4*/
    RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;
#endif /* STM32F40_41xxx || STM32F427_437x || STM32F429_439xx */

#if defined (STM32F401xx)
    /* PCLK2 = HCLK / 2*/
    RCC->CFGR |= RCC_CFGR_PPRE2_DIV1;
   
    /* PCLK1 = HCLK / 4*/
    RCC->CFGR |= RCC_CFGR_PPRE1_DIV2;
#endif /* STM32F401xx */
   
    /* Configure the main PLL */
    RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |
                   (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);

    /* Enable the main PLL */
    RCC->CR |= RCC_CR_PLLON;

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

这段代码就是开启HSE  然后开启PLL的
马小跳
6楼-- · 2019-07-23 02:47
初学者要变大师 发表于 2016-10-27 21:35
帮不了你了  但我发现你的文件里少了一个 cmsis_armcc.h 这个在你勾选的内核文件中没有

这个也是有的。已经很感谢你了

一周热门 更多>