5250|3

2

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

stm32的时钟和can波特率的奇怪现象 [复制链接]

我用103开发一个can程序,板子上的晶振为16M,时钟配置用的是官方程序SystemInit(),也宏定义了SYSCLK_FREQ_72MHz,理论上系统时钟应该是72M,但实际上我查看SYSCLK寄存器,时钟为36M,此为怪事一;然后如果系统时钟是36M,那么我配置的波特率计算出来应该为125k,运行时在keil里查看can的控制面板,波特率也的确为125k,但实际上出来的波特率却为250k,与can分析仪用250k的速率可以正常通信。大家可以帮我想想问题所在么?
此帖出自stm32/stm8论坛

最新回复

这个问题解决了么  详情 回复 发表于 2016-11-4 15:31
点赞 关注
 

回复
举报

2

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
后来我自己写了个时钟配置程序,结果查看SYSCLK为72M,can波特率的配置按理论是125k,但实际上与分析仪要用250k才能通信,而且通信过程会出现丢失帧id的现象。代码如下:
============================
HSEStartUpStatus = RCC_WaitForHSEStartUp();
        //如果外部晶振启动成功,则进行下一步操作
        if (HSEStartUpStatus==SUCCESS)
        {
                //设置HCLK(AHB时钟)
                RCC_HCLKConfig(RCC_SYSCLK_Div2);

                //PCLK1(APB1) = HCLK/2
                RCC_PCLK1Config(RCC_HCLK_Div2);

                //PCLK2(APB2) = HCLK
                RCC_PCLK2Config(RCC_HCLK_Div2);         //         RCC_HCLK_Div1

                //FLASH时序控制
                //推荐值:SYSCLK = 0~24MHz   Latency=0
                //        SYSCLK = 24~48MHz  Latency=1
                //        SYSCLK = 48~72MHz  Latency=2
                FLASH_SetLatency(FLASH_Latency_2);
                //开启FLASH预取指功能
                FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

                //PLL设置 (最大72MHz?)
               RCC_PLLConfig(0x00010000, RCC_PLLMul_9);
                          //  RCC_PLLConfig(0x00000000, RCC_PLLMul_9);
                //启动PLL
                RCC_PLLCmd(ENABLE);
                //等待PLL稳定
                while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
                //系统时钟SYSCLK来自PLL输出
                RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
                //切换时钟后等待系统时钟稳定
                while (RCC_GetSYSCLKSource()!=0x08);
此帖出自stm32/stm8论坛
 
 

回复

6110

帖子

4

TA的资源

版主

板凳
 
如果晶体不是配置的8M 的话,调试和非调试运行估计是不同的,因为仿真调试的原因。
此帖出自stm32/stm8论坛
 
 

回复

1221

帖子

1

TA的资源

一粒金砂(高级)

4
 
这个问题解决了么
此帖出自stm32/stm8论坛
 
个人签名我爱着爱着我的人,朋友和家人。
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表