请选择 进入手机版 | 继续访问电脑版
搜索
查看: 8898|回复: 12

[已解决] STM32使用HAL产生PWM有问题

[复制链接]

该用户从未签到

4

主题

13

帖子

0

蝴蝶豆

中级会员

最后登录
2022-12-4
发表于 2018-8-10 10:20:00 | 显示全部楼层 |阅读模式
大家注意,STM32的HAL库有问题,所有的STM32的HAL库里的产生PWM时,如果要在TIMx_CHxN产生PWM时,都无法正常开启,我试了STM32F1系列的和STM32L4系列的,都会有有问题,如果使用在TIMx_CHx产生PWM时,不会有问题,发现HAL库中有个BUG,在stm32f1xx_hal_tim.c
中的TIM_OC1_SetConfig,TIM_OC2_SetConfig,TIM_OC3_SetConfig函数中有个  tmpccer &= ~TIM_CCER_CC1NE;需要改为  tmpccer |= TIM_CCER_CC1NE;才可以正常输出,大家使用是注意一下。
回复

使用道具 举报

该用户从未签到

0

主题

94

帖子

7

蝴蝶豆

高级会员

最后登录
2022-2-6
发表于 2018-8-10 19:54:06 | 显示全部楼层
        HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
        HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
        HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3);
        HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1);
        HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2);
        HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_3);
三个通道的PWM互补启动,添上这六句,就可以了

评分

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

查看全部评分

回复 支持 1 反对 0

使用道具 举报

该用户从未签到

74

主题

3420

帖子

82

蝴蝶豆

社区小助手

最后登录
2023-11-12
发表于 2018-8-10 11:37:58 | 显示全部楼层
本帖最后由 wenyangzeng 于 2018-8-10 13:41 编辑

HAL把启动PWM这一步留给用户来操作,既然使用HAL,就不用进行寄存器操作模式了,而是:
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);

这应该不是bug吧!


评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

79

帖子

85

蝴蝶豆

高级会员

最后登录
2018-10-19
发表于 2018-8-10 15:39:50 | 显示全部楼层
本帖最后由 jjbboox 于 2018-8-10 15:43 编辑

用定时器产生PWM,用过的表示毫无问题。PWM是太常用的东西了,如果有BUG也老早就解决了!
毕竟是库,请尊重一下ST的工程师的。

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

91

主题

4756

帖子

4

蝴蝶豆

论坛元老

最后登录
2021-2-27
发表于 2018-8-11 00:40:43 | 显示全部楼层
.PWM输出功能时,捕获/比较寄存器TIMx_CC,注意"HAL_TIM_PWM_Start"和“HAL_TIM_PWM_Stop。
至于tmpccer |= TIM_CCER_CC1NE,还要防止错误造成将辅助通道关闭而不是开启。

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

7

帖子

4

蝴蝶豆

新手上路

最后登录
2018-8-12
发表于 2018-8-11 15:10:13 | 显示全部楼层
用STD库吧,HAL库对配置要求太高了

评分

参与人数 2ST金币 -1 蝴蝶豆 +1 收起 理由
xia_yangchun -1 STM32新的MCU是没有STD库,以后只能使用HAL.
zero99 + 1

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

971

帖子

176

蝴蝶豆

论坛元老

最后登录
2021-4-1
发表于 2018-8-11 17:27:12 | 显示全部楼层
用HAL库吧,STD库太麻烦,一不小心就罢工,还要搭上大把的时间

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

971

帖子

176

蝴蝶豆

论坛元老

最后登录
2021-4-1
发表于 2018-8-12 10:45:38 | 显示全部楼层
jjbboox 发表于 2018-8-10 15:39
用定时器产生PWM,用过的表示毫无问题。PWM是太常用的东西了,如果有BUG也老早就解决了!
毕竟是库,请尊重 ...

“尊重一下ST的工程师”,支持,按流行语就是圈起来,要考的
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

101

帖子

25

蝴蝶豆

高级会员

最后登录
2021-3-19
发表于 2018-8-12 11:12:00 | 显示全部楼层
这个要自己多注意,不要老找库的麻烦

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

13

帖子

0

蝴蝶豆

中级会员

最后登录
2022-12-4
 楼主| 发表于 2018-8-22 21:25:20 | 显示全部楼层
romenchen 发表于 2018-8-10 19:54
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
        HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
        HAL_TIM_PWM_S ...

已经验证,四楼正解,库改为默认的,通过HAL_TIMEx_PWMN_Start()函数可以配置OK。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-3-29 07:23 , Processed in 0.195170 second(s), 45 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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