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

STM32F103的定时器时钟频率的问题,困扰了我5年,至今搞不透

[复制链接]
张亚飞 提问时间:2017-7-13 11:15 /
阅读主题, 点击返回1楼
收藏 3 评论21 发布时间:2017-7-13 11:15
21个回答
toofree 回答时间:2017-7-14 12:01:41
算你狠,用的3.0.0的库,建的uv5.0的工程

时钟初始化部分有错误。
  1. void init_rcc(void)
  2. {
  3.    ErrorStatus         HSEStrartUpStatus;
  4.    RCC_DeInit();        //³õʼ»¯
  5.    RCC_HSEConfig(RCC_HSE_ON) ;
  6.    HSEStrartUpStatus =RCC_WaitForHSEStartUp();

  7.    if(HSEStrartUpStatus ==SUCCESS)
  8.    {
  9.           RCC_HCLKConfig(RCC_SYSCLK_Div1);
  10.           RCC_PCLK2Config(RCC_SYSCLK_Div1);
  11.           RCC_PCLK1Config(RCC_SYSCLK_Div2);
复制代码


RCC_PCLK2Config、RCC_PCLK1Config不能用RCC_SYSCLK_Div1的参数。
进去函数看一下说明,要用对应的,RCC_HCLK_Div2。

RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);


另外你这程序能跑吗?时钟不对,跑不动吧。
建议升级库。
张亚飞 回答时间:2017-7-14 12:10:23
toofree 发表于 2017-7-14 12:01
算你狠,用的3.0.0的库,建的uv5.0的工程

时钟初始化部分有错误。

改过来确实好了,这个工程用了很久,没注意到这个问题。
张亚飞 回答时间:2017-7-14 12:24:25
toofree 发表于 2017-7-14 12:01
算你狠,用的3.0.0的库,建的uv5.0的工程

时钟初始化部分有错误。

void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource)  这个函数不调用就可以默认用PLL作为system clock了吗
zhao.zhao 回答时间:2017-7-14 13:33:27

用Cube吧,去年我把外部时钟改成内部时钟,看参考手册,小心翼翼的,花了一上午。一气之下,今年改Cube了,点点鼠标,花了5分钟,这个就是效率。
张亚飞 回答时间:2017-7-14 13:45:27
zhao.zhao 发表于 2017-7-14 13:33
用Cube吧,去年我把外部时钟改成内部时钟,看参考手册,小心翼翼的,花了一上午。一气之下,今年改Cube了 ...

cube的串口定长接收太操蛋,DMA中断接收按照网上的帖子弄了两回没弄成。 关键现在的一个项目用cube的串口接收数据时不定时会停止接收了,仿真的时候进不了中断,比较烦。
zhao.zhao 回答时间:2017-7-14 15:04:52
你可以设置成接收一个字节中断一次,剩下的处理就和库函数一样了,相比,效率稍低点,我就是这么干的
张亚飞 回答时间:2017-7-14 15:54:20
zhao.zhao 发表于 2017-7-14 15:04
你可以设置成接收一个字节中断一次,剩下的处理就和库函数一样了,相比,效率稍低点,我就是这么干的 ...

我用HAL_UART_Receive_IT开启下一次中断时把参数size设置成1,是这么做吗?我这样做在串口助手上发送大于一个字节时程序就死了。
zhao.zhao 回答时间:2017-7-14 17:34:18
我就是这么做的,我系统运行的频率只有16MHz,中断抢先优先级设为最高,其他的中断优先级低一点,判断每个字节的意义计算量也不算少。
toofree 回答时间:2017-7-16 00:06:22
张亚飞 发表于 2017-7-14 12:24
void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource)  这个函数不调用就可以默认用PLL作为system clock了 ...

不要用默认的,默认是内部8MHz RC时钟源。最高主频是64M,支持不了72M。
要用外部时钟的话,还是乖乖的按套路来吧。建议使用3.1.2或3.5.0的库。你这个3.0.0的,我还没有找到详细出处,函数库我有,但是缺少详细的外设样例程序。
张亚飞 回答时间:2017-8-21 14:49:04
感谢 zhao.zhao 大神的帮忙,问题解决了,问题出在时钟分频上用串了。

所属标签

相似问题

官网相关资源

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