OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7871|回复: 8

STM32的PWM输出有问题,用的TIM_Compare正点原子库函数例程的方法

[复制链接]

29

主题

167

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1011
金钱
1011
注册时间
2021-7-26
在线时间
184 小时
发表于 2022-12-16 17:14:14 | 显示全部楼层 |阅读模式
25金钱
本帖最后由 精英板 于 2022-12-20 20:31 编辑

关于正点原子库函数例程PWM输出实验PWM输出有问题
我一开始是找到的库移植过去后输出PWM,输出结果正确,因此平常比较喜欢用翻转电平TIM_OCMode_Timing来输出PWM,如下图,输出PWM能成功, 1.png 2.png 但是最近点开了原子的PWM输出例程,发现用的是TIM_Compare,感觉这个看上去更简洁配置更简单,结果想用的时候发现只有例程的PB5(TIM3 CH2)好用,能输出队应PWM,代码改写成CH1就不好用了,试过不复用的TIM3CH1.2(PA6.7),也试过复用的TIM3CH1.2(PB4.5),结果都是只有PB5这个好用,不清楚程序代码改写是错在哪里了。代码如下压缩包
实验9 PWM输出实验.zip (2.97 MB, 下载次数: 7)

最佳答案

查看完整内容[请看2#楼]

用的是开发板吗? 开发板PB4为了照顾JTAG功能被强行上拉了 做不了PWM输出 如果自己画板子理论上是没问题的 至于PA6和PA7的PWM问题 我的能用 如果你用的是PB5 PB4中间注释掉的程序 自己看图吧 太无语了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

29

主题

167

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1011
金钱
1011
注册时间
2021-7-26
在线时间
184 小时
 楼主| 发表于 2022-12-18 20:06:11 | 显示全部楼层
本帖最后由 精英板 于 2022-12-19 22:18 编辑

用的这个TIM_SetCompare1(TIM3,700);TIM_SetCompare2(TIM3,700);
TIM的设置:
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);        //ê1Äü¶¨ê±Æ÷3ê±Öó
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  //ê1ÄüGPIOíaéèoíAFIO¸′óÃ1|ÄüÄ£¿éê±Öó
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer32¿·ÖÖØó3éä  TIM3_CH2->PB5   
// 通道二PB5没问题正常输出
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //TIM_CH2
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //¸′óÃíÆíìêä3ö
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉGPIO
        //PB5μĸ′óÃêÇTIM3 CH2
// 通道一PB4照猫画虎但不能正常输出
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; //TIM_CH1
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //¸′óÃíÆíìêä3ö
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);//3õê¼»ˉGPIO
//        //PB4μĸ′óÃêÇTIM3 CH1
////êμÑé2¿·Ö

//然后这里OC1,2也都设置了
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
        TIM_OC2Init(TIM3, &TIM_OCInitStructure);  
      TIM_OC1Init(TIM3, &TIM_OCInitStructure);  
        TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
      TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
        TIM_Cmd(TIM3, ENABLE);

TIM_SetCompare1(TIM3,100);就是不输出pwm,非复用引脚TIM3的PA67也试过但都不好使,只有PB5好使   
回复

使用道具 举报

16

主题

426

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2676
金钱
2676
注册时间
2018-11-8
在线时间
431 小时
发表于 2022-12-16 17:14:15 | 显示全部楼层
用的是开发板吗?
开发板PB4为了照顾JTAG功能被强行上拉了 做不了PWM输出 如果自己画板子理论上是没问题的

至于PA6和PA7的PWM问题 我的能用 如果你用的是PB5 PB4中间注释掉的程序 自己看图吧 太无语了
00.png
0.png
回复

使用道具 举报

29

主题

167

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1011
金钱
1011
注册时间
2021-7-26
在线时间
184 小时
 楼主| 发表于 2022-12-17 09:29:11 | 显示全部楼层
顶一下
回复

使用道具 举报

2

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2022-8-22
在线时间
30 小时
发表于 2022-12-19 09:13:11 | 显示全部楼层
帮顶帮顶
回复

使用道具 举报

29

主题

167

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1011
金钱
1011
注册时间
2021-7-26
在线时间
184 小时
 楼主| 发表于 2022-12-20 11:53:47 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2022-12-21 22:07:27 | 显示全部楼层
精英板 发表于 2022-12-18 20:06
用的这个TIM_SetCompare1(TIM3,700);TIM_SetCompare2(TIM3,700);
TIM的设置:
        RCC_APB1PeriphCl ...

看看我们的最新教程和最新源码,TIM例程多了好多...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

29

主题

167

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1011
金钱
1011
注册时间
2021-7-26
在线时间
184 小时
 楼主| 发表于 2022-12-22 09:24:40 | 显示全部楼层
正点原子 发表于 2022-12-21 22:07
看看我们的最新教程和最新源码,TIM例程多了好多...

我去看看
回复

使用道具 举报

29

主题

167

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1011
金钱
1011
注册时间
2021-7-26
在线时间
184 小时
 楼主| 发表于 2022-12-28 18:46:28 | 显示全部楼层
babyrabbit 发表于 2022-12-28 17:57
用的是开发板吗?
开发板PB4为了照顾JTAG功能被强行上拉了 做不了PWM输出 如果自己画板子理论上是没问题的 ...

尴尬,A67那个应该用复用输出的...
另外确实把JTAG关了就行了,之前在PB3上出过错,当时想着PB3PB4是JTAG,没想到居然在PB4上又忘记教训了。
多谢大哥不嫌麻烦出手相助
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 18:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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