4073|6

2943

帖子

4

TA的资源

五彩晶圆(中级)

楼主
 

STM32G的定时器设置问题 [复制链接]

使用STM32CUBE开发STM32G431的实验程序,我感觉设置的是1K赫兹,感觉TIM6的时钟非常的慢,大概50个中断周期也就是1S的时间,整整差了10倍。因为前面的实验是成功的,后来工程删掉了没有保存也就无从考证了,问题描述

1、时钟树的设置如图

2、根据设置TIM6的时钟源应该是APB1、APB2、外设的时钟都是168M。所以设置TIM6如下:

PreScale =168-1;//应该基频为1M

Counter Period = 1000;//应该是中断间隔为1K

3、低速和高速晶振都是打开的。

目测应该是没有什么问题,可就是慢了10倍。

问题是TIM6的参数到底怎么设置,我错到哪里了?

我以前一直用NXP的lpc系列的单片机,很少用STM32的单片机,所以不怎么熟悉STM32。有朋友推荐了STM32的单片机,就弄了STM32的开发板来学习STM32。但是近几天老是出现一些让我郁闷的问题!

此帖出自stm32/stm8论坛

最新回复

主频期望168M ,实质16 M,确实是近十倍啊。   详情 回复 发表于 2019-12-21 10:25
点赞 关注
 

回复
举报

9805

帖子

24

TA的资源

版主

沙发
 
先确定一下主时钟的频率和设置的是否一致 调试模式下查看SystemCoreClock
此帖出自stm32/stm8论坛

点评

谢谢兄弟,SysClock=16000000,系统时钟为16M,看时钟树的设置是没有问题的呀,肯请给与进一步的解答!再次感谢。  详情 回复 发表于 2019-12-6 09:48
 
 

回复

2943

帖子

4

TA的资源

五彩晶圆(中级)

板凳
 
littleshrimp 发表于 2019-12-6 09:28 先确定一下主时钟的频率和设置的是否一致 调试模式下查看SystemCoreClock

谢谢兄弟,SysClock=16000000,系统时钟为16M,看时钟树的设置是没有问题的呀,肯请给与进一步的解答!再次感谢。

此帖出自stm32/stm8论坛

点评

和实际设置不符吗 使用外部晶振? 晶振内问题更新一下cubemx到最新版本试试  详情 回复 发表于 2019-12-6 10:16
 
 

回复

9805

帖子

24

TA的资源

版主

4
 
bigbat 发表于 2019-12-6 09:48
谢谢兄弟,SysClock=16000000,系统时钟为16M,看时钟树的设置是没有问题的呀,肯请给与进一步的解答!再 ...

和实际设置不符吗
使用外部晶振?
晶振内问题更新一下cubemx到最新版本试试
此帖出自stm32/stm8论坛

点评

时钟设置的代码好象是正确的。   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; 也是与设置一样的。感觉时钟一直是HSI|HSE。16M的时钟一直没有变化过。外部的晶振也打开了。 昨天碰到TI  详情 回复 发表于 2019-12-6 10:54
 
 
 

回复

2943

帖子

4

TA的资源

五彩晶圆(中级)

5
 
littleshrimp 发表于 2019-12-6 10:16 和实际设置不符吗 使用外部晶振? 晶振内问题更新一下cubemx到最新版本试试

时钟设置的代码好象是正确的。

  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;

也是与设置一样的。感觉时钟一直是HSI|HSE。16M的时钟一直没有变化过。外部的晶振也打开了。

昨天碰到TIM7和TIM6定时器的问题,也是很奇怪。一样的设置一样的代码,TIM6就工作,TIM7就死机!感觉STM32G431的HAL库代码应该有问题。

void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};

  /** Configure the main internal regulator output voltage 
  */
  HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1_BOOST);
  /** Configure LSE Drive Capability 
  */
  __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW);
  /** Initializes the CPU, AHB and APB busses clocks 
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.LSEState = RCC_LSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1;
  RCC_OscInitStruct.PLL.PLLN = 42;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
  RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }
  /** Initializes the CPU, AHB and APB busses clocks 
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_8) != HAL_OK)
  {
    Error_Handler();
  }
  /** Initializes the peripherals clocks 
  */
  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_LPUART1
                              |RCC_PERIPHCLK_ADC12;
  PeriphClkInit.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PCLK1;
  PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK;
  PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;

  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  {
    Error_Handler();
  }
}

 

此帖出自stm32/stm8论坛

点评

有这种可能,我以前使用L系列也遇到过主频和实际设计的频率不符的问题,后来新更CubeMX后正常 如果是时钟问题可以试试使用例程库里的SystemClock_Config代码替换CubeMX生成的SystemClock_Config  详情 回复 发表于 2019-12-6 11:01
 
 
 

回复

9805

帖子

24

TA的资源

版主

6
 
bigbat 发表于 2019-12-6 10:54 时钟设置的代码好象是正确的。   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; ...

有这种可能,我以前使用L系列也遇到过主频和实际设计的频率不符的问题,后来新更CubeMX后正常

如果是时钟问题可以试试使用例程库里的SystemClock_Config代码替换CubeMX生成的SystemClock_Config

此帖出自stm32/stm8论坛
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

7
 

主频期望168M ,实质16 M,确实是近十倍啊。

此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表