OpenEdv-开源电子网

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

请帮助看一下这段TIM1定时器输出PWM的代码

[复制链接]

13

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-8-15
在线时间
52 小时
发表于 2016-8-15 13:58:36 | 显示全部楼层 |阅读模式
2金钱
想用TIM1输出PWM,首先照例程,这段TIM14的代码用起来没有问题,PA7可以正常输出PWM。
QQ图片20160815113033.png
然后照搬,改成了高级定时器TIM1,但是PA8没有输出。
QQ图片20160815113039.png
不知道是什么原因,还专门看了stm32的手册,然后加了个RCR=10。
8f31aeedf9dfd3a24bee89af118eb672_r.png
在debug的时候,发现CNT是在计数,但是RCR并没有减少,一直是10,这说明CNT并没有溢出事件?
14f30a7150269b1038c7846bfb19c453_b.png
不知是哪儿的问题,希望各位高手能帮忙看一下。

补充上文字代码

[mw_shl_code=c,true]void TIM1_PWM_Init(u32 arr,u32 psc)
{       
RCC->AHB1ENR|=1<<0;
GPIO_Set(GPIOA,PIN8,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_25M,GPIO_PUPD_NONE);
GPIO_AF_Set(GPIOA,8,1);        //PA8,AF1

RCC->APB2ENR|=1<<0;
TIM1->ARR=arr-1;
TIM1->PSC=psc-1;
TIM1->CCR1 = arr/2;
TIM1->RCR=10;
TIM1->CCMR1|=6<<4;
TIM1->CCER|=1<<0;
TIM1->CR1|=1<<0;
} [/mw_shl_code]

最佳答案

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

初始化函数最后再加一句: TIM1->BDTR |= ((uint16_t)0x8000);
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-8-15 13:58:37 | 显示全部楼层
初始化函数最后再加一句:

TIM1->BDTR |= ((uint16_t)0x8000);
回复

使用道具 举报

13

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2016-8-15
在线时间
52 小时
 楼主| 发表于 2016-8-15 16:41:53 | 显示全部楼层
特朗姆斯 发表于 2016-8-15 13:58
初始化函数最后再加一句:

TIM1->BDTR |= ((uint16_t)0x8000);

非常感谢,搞定了,看来还是看手册不够仔细啊
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-8-15 17:02:33 | 显示全部楼层
carvenl 发表于 2016-8-15 16:41
非常感谢,搞定了,看来还是看手册不够仔细啊


搞定就好
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-28 02:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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