搜索
查看: 17407|回复: 17

[STM32L476] [NUCLEO-L476RG开发] 配置STM32CubeMx生成六路互补pwm波程序

[复制链接]

该用户从未签到

3

主题

82

帖子

0

蝴蝶豆

中级会员

最后登录
2016-3-24
发表于 2015-11-23 21:39:13 | 显示全部楼层 |阅读模式
在此,感谢与非网送的板子!!!

直接进入主题:

1.首先配置引脚.
     双击TIM1,就会显出默认配置引脚。如果需要修改,可以查看datasheet,在对应的管脚位上双击,选择切换。
捕获1.PNG
2.配置时钟.
我是用内部HSI,倍频获得最高系统主频80M.

捕获2.PNG

3.配置定时器Tim1

中心对称模式2
pwm频率16K(80M/16k/2-1=2499)
Dead Time 80  (就是1us,查看死区寄存器,按公式计算)
三路互补pwm输出
捕获3.PNG

4.配置工程

捕获4.PNG
以上页面中红框1表示每个外设单独生成一个.c和.h文件,这样层次更明确。红框2中表示把其余不用的pin脚都设置为模拟输入以降低功耗,也选上。


生成工程后会自动生成4个文件夹。其中Drivers就是硬件抽象层,类似于以前的库,都以“hal”结尾。inc和src分别是生成的头文件和包含文件。Projects是工程快捷方式。

5.
添加代码,输出波形。

  /* USER CODE BEGIN 2 */
  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);
   
  /* USER CODE END 2 */


再调出波形之前,一直在心里骂这个CubeMX,竟然找不到配置选项直接输出pwm波。
到stm32l4xx_hal_tim.c 里找到HAL_TIM_PWM_Start 这个函数输出正极pwm,却输不出互补波形。
最后,找了老半天才到stm32l4xx_hal_tim_ex.c找到了HAL_TIMEx_PWMN_Start,这才终于输出互补波形。

提问:
1.CubeMX可以直接配置输出吗?反正我找不到。
2.stm32l4xx_hal_tim_ex.c 和 stm32l4xx_hal_tim.c,整这两处什么个缘由?

结束!欢迎指教!!!
Six_Complementary_Pwm.rar (7.63 MB, 下载次数: 5297)

评分

参与人数 1ST金币 +20 收起 理由
沐紫 + 20

查看全部评分

回复

使用道具 举报

该用户从未签到

18

主题

686

帖子

0

蝴蝶豆

金牌会员

最后登录
2017-4-9
发表于 2015-11-23 22:37:10 | 显示全部楼层
有点像刘发*  
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

82

帖子

0

蝴蝶豆

中级会员

最后登录
2016-3-24
 楼主| 发表于 2015-11-23 23:06:24 | 显示全部楼层
自己顶一个!!!!!!
回复 支持 反对

使用道具 举报

该用户从未签到

47

主题

3456

帖子

30

蝴蝶豆

版主

最后登录
2022-12-25
发表于 2015-11-24 08:05:46 | 显示全部楼层
呵呵不错。。。。
1.CubeMX可以直接配置输出吗?
没有,都需要软件开启,才能输出。。标准库里也是一样。。。
2.stm32l4xx_hal_tim_ex.c 和 stm32l4xx_hal_tim.c,整这两处什么个缘由?
你好好看看,HAL库的结构。。_tim_ex.c结尾是扩展库函数文件,_tim.c是普通的库函数。在HAL库里是分2个的。。

回复 支持 反对

使用道具 举报

该用户从未签到

10

主题

389

帖子

0

蝴蝶豆

高级会员

最后登录
1970-1-1
发表于 2015-11-24 09:13:03 | 显示全部楼层
Paderboy 发表于 2015-11-24 08:05
呵呵不错。。。。
1.CubeMX可以直接配置输出吗?
没有,都需要软件开启,才能输出。。标准库里也是一样。。 ...

地板正解
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

82

帖子

0

蝴蝶豆

中级会员

最后登录
2016-3-24
 楼主| 发表于 2015-11-24 09:27:43 | 显示全部楼层
本帖最后由 sailor.wu 于 2015-11-24 09:35 编辑
Paderboy 发表于 2015-11-24 08:05
呵呵不错。。。。
1.CubeMX可以直接配置输出吗?
没有,都需要软件开启,才能输出。。标准库里也是一样。。 ...

捕获1.PNG 捕获2.PNG

回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

903

帖子

0

蝴蝶豆

金牌会员

最后登录
2019-12-7
发表于 2015-11-24 13:06:27 | 显示全部楼层

1.CubeMX可以直接配置输出吗?反正我找不到。
答:您指的这个输出是出书工程还是?比如说输出keil5的工程或者怎样。
2.stm32l4xx_hal_tim_ex.c 和 stm32l4xx_hal_tim.c,整这两处什么个缘由?
答:这个是标准的hal的库文件,stm32l4xx_hal_tim_ex.c这个的ex的扩展的意思。如果可以的话,您可以对两个文件进行文本对比就知道了。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

18

帖子

0

蝴蝶豆

高级会员

最后登录
2023-1-26
发表于 2016-3-3 13:32:54 | 显示全部楼层
  /* USER CODE BEGIN 2 */
  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);
   
  /* USER CODE END 2 */


初用CUBE的人都会骂这一点的,真不明白初始为什么不加上去
回复 支持 反对

使用道具 举报

该用户从未签到

31

主题

424

帖子

0

蝴蝶豆

金牌会员

最后登录
2019-2-28
发表于 2016-7-21 18:14:11 | 显示全部楼层
楼主,你好,我现在做stm32L476用定时器2产生PWM,用寄存器配置的,但是不知道为什么输出始终是高电平,麻烦楼主帮忙看看到底哪里错了,代码请见连接https://www.stmcu.org.cn/module/forum/thread-606936-1-1.html  谢谢楼主!
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

6

帖子

0

蝴蝶豆

初级会员

最后登录
2017-4-28
发表于 2017-4-10 09:37:37 | 显示全部楼层
这个能驱动开关磁阻电机么
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-4-24 11:41 , Processed in 1.203354 second(s), 46 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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