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

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扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版