拿到论坛的f4开发板挺久了,欠了大表姐和女神好多贴,最近在鼓捣,用了cube的hal库,用hal_delay()延时点灯。用st的例程,延时正确,但是我自己搞了个工程,延时就不对,时钟配置代码都一样,把sysclk通过两分频输出到mco2来看是90M,说明工作的时钟是180MHz没问题,现在确定是软件的问题。
在想,因为hal_delay()用的是SysTick timer,是不是这个的时钟没搞对呢?求大神指点
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;
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);
此帖出自
小平头技术问答
报告队长,找到问题了。是stm32f4_hal_conf.h里面对hse晶振有个定义,默认是25M,需要把这个值相应做修改。因为建工程的时候用的是template改过来的,没有用实际例程的文件,所以被坑了。
#if !defined (HSE_VALUE)
#define HSE_VALUE ((uint32_t)10000000) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */
恭喜你找到问题了!
一周热门 更多>