博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[笔记]STM32使用非8M晶振时如何修改代码
阅读量:5108 次
发布时间:2019-06-13

本文共 1447 字,大约阅读时间需要 4 分钟。

    目前能找到的大部分代码都是默认8M外部晶振的,若使用的晶振不是8M则需要作一些修改。例如这次我使用的外部晶振是12M的,作如下修改。

    1.首先需要修改"Option for target 'xxx'"中的Target -> Xtal(Mhz)处的值(改为12MHz)。此处修改影响Debug时观察到的时钟数值。

   

 

    2.在system_stm32f10x.c开头的注释里有:

* 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depedning on      *    the product used), refer to "HSE_VALUE" define in "stm32f10x.h" file.       *    When HSE is used as system clock source, directly or through PLL, and you      *    are using different crystal you have to adapt the HSE value to your own      *    configuration.

       根据描述,将stm32f10x.h中大约在0121行找到,修改掉。

#if !defined  HSE_VALUE    #ifdef STM32F10X_CL       #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */    #else     #define HSE_VALUE    ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */    #endif /* STM32F10X_CL */    #endif /* HSE_VALUE */

    不过很奇怪的是,即使修改了此处的值,PLL的时钟还是不正确(程序依旧讲PLL按9倍频配置)。此处有待进一步探究(目前暂时只知道编译的代码没有用到HSE_VALUE)。

 

    3.顺着代码寻找原因,最后发现真正起作用的部分在system_stm32f10x.c里的SetSysClockTo72(void)函数(0993行,这里假设我们希望MCU工作在72MHZ)。

        在1058行有这样一段代码:

#else        /*  PLL configuration: PLLCLK = HSE * 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_HSE | RCC_CFGR_PLLMULL9);

       注释部分是函数自带的,真正起作用的部分在这里,因此把RCC_CFGR_PLLMULL9改为RCC_CFGR_PLLMULL6。

转载于:https://www.cnblogs.com/Ilmen/p/3344726.html

你可能感兴趣的文章
ad logon hour
查看>>
获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
查看>>
证件照(1寸2寸)拍摄处理知识汇总
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
Python入门-函数
查看>>
[HDU5727]Necklace(二分图最大匹配,枚举)
查看>>
距离公式汇总以及Python实现
查看>>
设计模式之装饰者模式
查看>>
一道不知道哪里来的容斥题
查看>>
Blender Python UV 学习
查看>>
window添加右键菜单
查看>>
入手腾龙SP AF90mm MACRO
查看>>
Window7上搭建symfony开发环境(PEAR)
查看>>
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
一些方便系统诊断的bash函数
查看>>
jquery中ajax返回值无法传递到上层函数
查看>>
css3之transform-origin
查看>>