你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F100C8T6B的时钟问题

[复制链接]
ligongxiaobie 提问时间:2015-9-19 18:15 /
阅读主题, 点击返回1楼
收藏 评论21 发布时间:2015-9-19 18:15
21个回答
chifen 回答时间:2015-9-20 10:58:50
你是 F100最大只有24M你就没有什么倍频了, 如果你超出正常频率就是使用内部8M晶振的
24-1.png
24-2.png
ligongxiaobie 回答时间:2015-9-20 12:34:00
chifen 发表于 2015-9-20 10:58
你是 F100最大只有24M你就没有什么倍频了, 如果你超出正常频率就是使用内部8M晶振的

...

前辈,这个图我看得懂,我个人的想法就是认为应该是图上的那个流程运行的程序,
但是如果两分频然后再两倍频的话,用TIM3和SYSTICK定时器去验证主频,这个时候会是8MHZ,所以才有这样的疑问!
何解?
chifen 回答时间:2015-9-20 13:12:29

    RCC_PLLConfig(RCC_PLLSource_HSE_Div2, RCC_PLLMul_2);//两分频, 再2倍 ,24M只能这一种,其它都是出错的, 就是 24/2 ,最后再2倍频=24M,倍频最低是2倍频,如果这里出错,系统就会自动更换成内部时钟,你的 RCC_PLLConfig(RCC_PREDIV1_Div2, RCC_PLLMul_6);是错误的
ligongxiaobie 回答时间:2015-9-20 15:30:51
chifen 发表于 2015-9-20 13:12
RCC_PLLConfig(RCC_PLLSource_HSE_Div2, RCC_PLLMul_2);//两分频, 再2倍 ,24M只能这一种,其它都是 ...

前面已经说过这里了,如果我写两倍频 用TIM3和SYSTICK验证主频,就是8MHZ。
对自己位数不多的自信就是TIM3和SYSTICK还是会用的。
ligongxiaobie 回答时间:2015-9-20 15:44:07
本帖最后由 ligongxiaobie 于 2015-9-20 17:01 编辑
chifen 发表于 2015-9-20 13:12
RCC_PLLConfig(RCC_PLLSource_HSE_Div2, RCC_PLLMul_2);//两分频, 再2倍 ,24M只能这一种,其它都是 ...

前辈 不如咱们换个角度去想这个问题,
//                                RCC_PLLConfig(RCC_PREDIV1_Div2, RCC_PLLMul_6);
//                                RCC_PLLCmd(ENABLE);
//                while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ;
//                RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK );
//                while(RCC_GetSYSCLKSource() != 0x08);
                        RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);        

如果我这样注释掉这几段代码 即为不适用PLL,然后直接应用HSE为主频时钟,这个时候主频确实是24MHZ,
即为应用了外部晶振。
但是这个时候串口发送数据就不对了!! 高四位在几个固定数据上有乱码。
这个 时候如果换成16MHZ的外部晶振,则主频即为16MHZ。但是串口依然有部分乱码!!
我修改了这个HSE_VALUE宏定义的值,在24MHZ的晶振下改为24000000,串口就正确了。        同样,在16MHZ的晶振下改为16000000,就也正确了。

但是这是在我直接应用HSE为系统时钟的时候这样可以,但是如果我还是想用PLL,则还是出现应用内部8MHZ的HSI,这个时候如果我更改#define HSI_VALUE    ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/

比如改为24,那么串口就不好使了,而且系统时钟也紊乱了。。。

不过还是很开心,起码终于用上了外部时钟,而且一切正常了。

但是最开始的问题还是没解决,比如用外部时钟倍频到24MHZ,因为这次我用的是外部晶振24MHZ, 那么以后如果我用其他频率的改怎么办呢??


chifen 回答时间:2015-9-20 19:16:41
串口用的是 RCC_PCLK2Config(RCC_HCLK_Div1); 时钟源, 定时器是 RCC_PCLK1Config(RCC_HCLK_Div2);做为时间源,这个都是主频进行分频过来的,如果主频正常,串口和定时器应该不会出问题,除非你源头就有问题
chifen 回答时间:2015-9-20 19:37:14
我没有 24M晶源做实验,我用8M晶振做的, 我把主频倍频到72M不变, HCLK 为2分频,APB2和APB1 用的是4分频, 还分别做了 2分频做了对比, 串口波特用的是115200, 两种分频都串口正常,只有定时器2 的时间 变慢了
guiyi 回答时间:2015-9-21 08:56:03
同意,好好检查一下时钟的设置
ligongxiaobie 回答时间:2015-9-21 16:56:23
chifen 发表于 2015-9-20 19:37
我没有 24M晶源做实验,我用8M晶振做的, 我把主频倍频到72M不变, HCLK 为2分频,APB2和APB1 用的是4分频 ...

前辈,问一个事情,Bootloader.SUBLIME-PROJECT 能打开这个工程文件的软件前辈你用过吗,
里边的头文件都是 #include <libopencm3/stm32/f1/rcc.h>
#include <libopencm3/stm32/f1/gpio.h>
#include <libopencm3/stm32/f1/flash.h>
#include <libopencm3/stm32/usart.h>
#include <libopencm3/stm32/systick.h>
这样的,很是苦恼,能介绍一款软件吗?
回答时间:2015-9-21 17:54:46
头文件的引用,如果在工程中加入了对应的头文件路径,可以不用加路径。如果没有,可以加路径实现。
对应时钟配置,要保证不会超出频率,通过配置芯片类型、时钟频率。这个在100.h中有。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版