• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

当STM32的晶振不是8Mhz?

fb4b43ef0e26d840 2018-07-03 浏览量:1669
当STM32的外部晶振不是8Mhz,而是12Mhz?我需要修改程序中哪些地方啊,我只知道修改倍频为6倍,可是这样修改,但是延时函数不准确啊,请问在程序还需要修改哪些地方?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 捕获.JPG

    在这个位置修改宏定义,同时你还得去修改分频或者倍频的那个参数在下图的位置

    捕获4.JPG

    • 发布于 2018-07-04
    • 举报
    • 评论 0
    • 2
    • 0

其他答案 数量:9
  • 需要修改倍频参数,让锁相环最后能输出需要的频率。

    比如原来的程序里用的8M输入HSE,9倍频到72MHz,AHB总线和系统定时器都是72MHz。

    当使用12M晶振时,锁相环输出改成6倍频到72MHz。延时函数不用变。

    • 发布于2018-07-04
    • 举报
    • 评论 0
    • 2
    • 0

  • 如果你用CubeMX肯定就不会问这个问题了,在CubeMX里面这个直接设置你的时钟的。

    另外一种方式:

    1、打开stm32f10x.h文件,修改#define HSE_VALUE    ((uint32_t)8000000)为#define HSE_VALUE    ((uint32_t)12000000)

    2、在system_stm32f10x.c文件找到void SetSysClockTo72(void)函数,修改下图红色位置就可以了

    QQ截图20180704145428.jpg

    • 发布于2018-07-04
    • 举报
    • 评论 0
    • 1
    • 0

  • 使用stm cube 里面有所有配置的时钟而且都给计算出每个地方的时钟频率。图像画界面看着明了
    • 发布于2018-07-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果是用HAL库配合cubeMX软件使用改时钟还是很好改的,只需要用cubeMX生成基础文件,然后根据自己的需要改几个寄存器的值就好了,我用stm32f1超频到96M就是这么做的。如果是使用标准库的话就比较难改了,直道对我来说比较麻烦
    • 发布于2018-07-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 用stmcubeMx就方便了,直接修改了,然后生成代码
    • 发布于2018-07-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 首先要看一下延时函数的时基是哪个定时器,然后将那个定时器的分频值改一下就行
    • 发布于2018-07-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 需要更改config的晶振参数进行重新配置
    • 发布于2018-07-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 1)修改HSE_VALUE的值

    将#define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */

    修改为 #define HSE_VALUE ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */

    2)修改PLL_M的值

    将#define PLL_M 8修改为 #define PLL_M 12

    3)修改STM32F407工程的Options设置

    在Option for target"Flash"窗口中,选择Target页面,修改STMicroelectronics 栏中Xtal(MHz)的值为12.0
    • 发布于2018-07-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 在conf.h的HSE_VALUE里面要改,PLL倍频数也要改为6.

    • 发布于2018-07-28
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

当STM32的晶振不是8Mhz?