用原子哥的f7ucosiii历程 滴答定时器慢了三倍

2019-07-20 14:33发布

求助啊 合适为什么,我只是把767的程序下载到746中 并且启动文件啥都改了,不知道为啥。有没有大神回答我
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
李志猛
1楼-- · 2019-07-20 17:17
难道是767和746的内核时钟不一样???
taizonglai
2楼-- · 2019-07-20 18:19
 精彩回答 2  元偷偷看……
李志猛
3楼-- · 2019-07-20 19:02
zuozhongkai 发表于 2017-5-15 17:47
检查你的时钟配置,滴答定时器的时钟源选择!

__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
  if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk)
  {
    return (1UL);                                                   /* Reload value impossible */
  }

  SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
  NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
  SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                   SysTick_CTRL_TICKINT_Msk   |
                   SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
  return (0UL);                                                     /* Function successful */
}

以上是滴答定时器的配置
Function Name: SystemClock_Config
Author       :
Date         : 2017-04-02
Description  : System Clock Configuration
Inputs       : None
Outputs      : None
Notes        :
Revision     :
           The system Clock is configured as follow :
              System Clock source            = PLL (HSE)
              SYSCLK(Hz)                     = 216000000
              HCLK(Hz)                       = 216000000
              AHB Prescaler                  = 1
              APB1 Prescaler                 = 4
              APB2 Prescaler                 = 2
              HSE Frequency(Hz)              = 25000000
              PLL_M                          = 25
              PLL_N                          = 432
              PLL_P                          = 2
              PLL_Q                          = 9
              VDD(V)                         = 3.3
              Main regulator output voltage  = Scale1 mode
              Flash Latency(WS)              = 7
********************************************************************************************************/
void SystemClock_Config(void)
{
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
  RCC_OscInitTypeDef RCC_OscInitStruct;
  HAL_StatusTypeDef ret = HAL_OK;
  /* Enable HSE Oscillator and activate PLL with HSE as source */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLM = 25;
  RCC_OscInitStruct.PLL.PLLN = 432;  
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = 9;
  
  ret = HAL_RCC_OscConfig(&RCC_OscInitStruct);
  if(ret != HAL_OK)
  {
    while(1) { ; }
  }
  /* Activate the OverDrive to reach the 216 MHz Frequency */  
  ret = HAL_PWREx_EnableOverDrive();
  if(ret != HAL_OK)
  {
    while(1) { ; }
  }
  /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 clocks dividers */
  RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;  
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
  
  ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_7);
  if(ret != HAL_OK)
  {
    while(1) { ; }
  }  
}以上是时钟的配置

一周热门 更多>