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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版