打印
[STM32F1]

求助一个PWM的问题

[复制链接]
2609|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yuanquanquan|  楼主 | 2014-4-3 21:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚开始学32,就想在TIM1的CH1上产生PWM,问一下下面的初始化定时器的代码哪里有问题?


        RCC->APB2ENR  |= 0X00000800;     //使能TIM1时钟
        RCC->APB2ENR  |= 0X00000005;    //使能PA口时钟,使能复用功能时钟
        GPIOA->CRH       &= 0Xfffffff0;  
        GPIOA->CRH      |= 0X0000000b;         //PA8为复用推挽输出
        //NVIC->ISER[0]  = 1<<25;
        TIM1->PSC       = 72*100;                //72M/7200=10000HZ 为计数频率  
        TIM1->ARR   = 10;                                                                                                                
        TIM1->CCMR1|= 0X0060;               //CC1通道配置为输出,PWM模式1
        TIM1->CCR1  = 5;                               //比较值(占空比调节)
        TIM1->CCER |= 0X0001;               //使能CC1输出
        //TIM1->DIER |= 0X0001;
        TIM1->CR1   = 0x0003;                //禁止更新,启动定时器

沙发
airwill| | 2014-4-3 21:45 | 只看该作者
刚开始学32, 可以参考例程开始, 先还是调用 外设库 API 的方式开头吧.

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
yuanquanquan + 3
板凳
_编程浪子| | 2014-4-3 22:01 | 只看该作者
你的问题现象是什么?没有输出?
有很多原因的,不一定是TIM配置有问题。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
yuanquanquan + 2
地板
df_flying| | 2014-4-3 22:23 | 只看该作者
你这种程序能让人读的晕死!写的时候二进制转成16进制,读的时候对着手册转成二进制再去找!也许你用熟练了没问题,别人用呢?你写代码就给你自己看?网上对应的资料很多,原子的有寄存器版,首先还是从编程的风格上一步一步来吧。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
yuanquanquan + 2
5
dirtwillfly| | 2014-4-4 08:41 | 只看该作者
慢慢来,建议先用ST提供的固件库

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
yuanquanquan + 2
6
yuanquanquan|  楼主 | 2014-4-4 09:44 | 只看该作者
airwill 发表于 2014-4-3 21:45
刚开始学32, 可以参考例程开始, 先还是调用 外设库 API 的方式开头吧.

买的板子例程少的可怜,所以自己才慢慢研究寄存器的。可能是用过stm8留下的习惯。

使用特权

评论回复
7
yuanquanquan|  楼主 | 2014-4-4 09:45 | 只看该作者
df_flying 发表于 2014-4-3 22:23
你这种程序能让人读的晕死!写的时候二进制转成16进制,读的时候对着手册转成二进制再去找!也许你用熟练了 ...

多谢

使用特权

评论回复
8
yuanquanquan|  楼主 | 2014-4-4 09:46 | 只看该作者
_编程浪子 发表于 2014-4-3 22:01
你的问题现象是什么?没有输出?
有很多原因的,不一定是TIM配置有问题。 ...

对,没有输出。我之前写了输入捕获的代码,可以用。这是拿来改的,没想到不能用。

使用特权

评论回复
9
yuanquanquan|  楼主 | 2014-4-4 09:47 | 只看该作者
dirtwillfly 发表于 2014-4-4 08:41
慢慢来,建议先用ST提供的固件库

谢谢建议

使用特权

评论回复
10
yuanquanquan|  楼主 | 2014-4-4 09:50 | 只看该作者
df_flying 发表于 2014-4-3 22:23
你这种程序能让人读的晕死!写的时候二进制转成16进制,读的时候对着手册转成二进制再去找!也许你用熟练了 ...

其实我的意思是让贴吧的朋友看看我的TIM配置逻辑顺序有没有问题,是不是少了哪一步,我加了注释的。

使用特权

评论回复
11
没玩过STM32的。只用过STM8的。。。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
yuanquanquan + 1
12
airwill| | 2014-4-4 12:28 | 只看该作者
外设库里就有不少例程供参考. 多留意一下

使用特权

评论回复
13
yuanquanquan|  楼主 | 2014-4-4 12:41 | 只看该作者
airwill 发表于 2014-4-4 12:28
外设库里就有不少例程供参考. 多留意一下

问题解决了。郁闷了好久啊。原来STM32刹车和死区寄存器有个MOE位必须使能,才能开启输出。

使用特权

评论回复
14
airwill| | 2014-4-4 13:21 | 只看该作者
嗯, 说起MOE, 我记得也在这个上面上绊过跟斗

使用特权

评论回复
15
香水城| | 2014-4-4 13:41 | 只看该作者
只有带高级定时器(比如STM32F1里的TIM1和TIM8)才有MOE控制。

通常从ST官方例程库中其他TIM移植到的advanced timer的时候,要注意这个问题。

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
yuanquanquan + 2 赞一个!
16
45465485| | 2014-4-4 15:53 | 只看该作者

曾经我公司也遇到过同一问题,但是通过与深圳顺易捷科技有限公司解决了这一问题.
深圳顺易捷科技有限公司销售联系人:韩先生
手机13480101190 /13510965133  
QQ800055586
E-mail :syjpcb@163.com

使用特权

评论回复
17
_编程浪子| | 2014-4-4 17:13 | 只看该作者
yuanquanquan 发表于 2014-4-4 12:41
问题解决了。郁闷了好久啊。原来STM32刹车和死区寄存器有个MOE位必须使能,才能开启输出。 ...

先恭喜西。
一直使用库,没直接用过寄存器操作。俺不太了解这些寄存器。

使用特权

评论回复
18
yuanquanquan|  楼主 | 2014-4-4 18:32 | 只看该作者
香水城 发表于 2014-4-4 13:41
只有带高级定时器(比如STM32F1里的TIM1和TIM8)才有MOE控制。

通常从ST官方例程库中其他TIM移植到的advan ...

的确,除了高级定时器外,都没有刹车功能。受教了。

使用特权

评论回复
19
lkl0305| | 2014-4-4 21:16 | 只看该作者
还是库函数入门快啊

使用特权

评论回复
20
yuanquanquan|  楼主 | 2014-4-4 22:43 | 只看该作者
lkl0305 发表于 2014-4-4 21:16
还是库函数入门快啊

那也是因为例程多吧,如果没例程,我觉得看库花的时间比看寄存器的还要多。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

78

帖子

1

粉丝