查看: 388|回复: 6

[已解决] PWM波形时段时续?HAL库生产代码有问题? 没改任何地方

[复制链接]

该用户从未签到

1

主题

4

帖子

0

蝴蝶豆

初级会员

最后登录
2019-2-11
发表于 2019-2-10 11:54:49 | 显示全部楼层 |阅读模式
  1. static void MX_TIM2_Init(void)
  2. {

  3.   /* USER CODE BEGIN TIM2_Init 0 */

  4.   /* USER CODE END TIM2_Init 0 */

  5.   TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  6.   TIM_MasterConfigTypeDef sMasterConfig = {0};
  7.   TIM_OC_InitTypeDef sConfigOC = {0};

  8.   /* USER CODE BEGIN TIM2_Init 1 */

  9.   /* USER CODE END TIM2_Init 1 */
  10.   htim2.Instance = TIM2;
  11. htim2.Init.Prescaler = 29;
  12.   htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  13. htim2.Init.Period = 999;
  14.   htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  15.   htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  16.   if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  17.   {
  18.     Error_Handler();
  19.   }
  20.   sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  21.   if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  22.   {
  23.     Error_Handler();
  24.   }
  25.   if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
  26.   {
  27.     Error_Handler();
  28.   }
  29.   sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  30.   sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  31.   if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  32.   {
  33.     Error_Handler();
  34.   }
  35.   sConfigOC.OCMode = TIM_OCMODE_PWM1;
  36. sConfigOC.Pulse = 980;
  37.   sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
  38.   sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  39.   if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  40.   {
  41.     Error_Handler();
  42.   }
  43.   /* USER CODE BEGIN TIM2_Init 2 */

  44.         HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
  45.         
  46.         
  47.   /* USER CODE END TIM2_Init 2 */
  48.   HAL_TIM_MspPostInit(&htim2);

  49. }
复制代码
QQ图片20190210115526.jpg 2019-2-10 12-07-38.png

回复

使用道具 举报

该用户从未签到

1

主题

4

帖子

0

蝴蝶豆

初级会员

最后登录
2019-2-11
 楼主| 发表于 2019-2-10 12:06:07 | 显示全部楼层
使用的是战舰版V3 STM32F103ZET6 MCU
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

4

帖子

0

蝴蝶豆

初级会员

最后登录
2019-2-11
 楼主| 发表于 2019-2-10 12:07:04 | 显示全部楼层
把Pluse值设置的小一些,比如800,这个波形就是连续的了。非常奇怪,第一次用。
回复 支持 反对

使用道具 举报

该用户从未签到

67

主题

2566

帖子

1006

蝴蝶豆

社区小助手

最后登录
2019-4-24
发表于 2019-2-10 14:37:40 | 显示全部楼层
1、pluse的值必须比Period的值小才满足PWM输出条件的。
2、貌似未使能PWM输出:HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

39

主题

247

帖子

92

蝴蝶豆

金牌会员

最后登录
2019-4-24
发表于 2019-2-10 18:20:58 | 显示全部楼层
wenyangzeng 发表于 2019-2-10 14:37
1、pluse的值必须比Period的值小才满足PWM输出条件的。
2、貌似未使能PWM输出:HAL_TIM_PWM_Start(&htim2,  ...

50行有  HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
他这个问题 可能是你的第一句话
定时器的2个参数
回复 支持 反对

使用道具 举报

该用户从未签到

39

主题

247

帖子

92

蝴蝶豆

金牌会员

最后登录
2019-4-24
发表于 2019-2-10 18:26:23 | 显示全部楼层
weesky07 发表于 2019-2-10 12:07
把Pluse值设置的小一些,比如800,这个波形就是连续的了。非常奇怪,第一次用。 ...

我一直是默认的 0
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

4

帖子

0

蝴蝶豆

初级会员

最后登录
2019-2-11
 楼主| 发表于 2019-2-11 09:55:49 | 显示全部楼层
问题解决了,HAL库没问题,我用软件仿真模拟都正常,是示波器的问题。示波器时间开的太长了。所以会这样。我用其他频率源试验了,也是这样。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2019-4-24 17:46 , Processed in 0.126889 second(s), 24 queries , MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表