[STM32F1] 求助一个PWM的问题

[复制链接]
 楼主| 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

查看全部评分

dirtwillfly 发表于 2014-4-4 08:41 | 显示全部楼层
慢慢来,建议先用ST提供的固件库

评分

参与人数 1威望 +2 收起 理由
yuanquanquan + 2

查看全部评分

 楼主| yuanquanquan 发表于 2014-4-4 09:44 | 显示全部楼层
airwill 发表于 2014-4-3 21:45
刚开始学32, 可以参考例程开始, 先还是调用 外设库 API 的方式开头吧.

买的板子例程少的可怜,所以自己才慢慢研究寄存器的。可能是用过stm8留下的习惯。
 楼主| yuanquanquan 发表于 2014-4-4 09:45 | 显示全部楼层
df_flying 发表于 2014-4-3 22:23
你这种程序能让人读的晕死!写的时候二进制转成16进制,读的时候对着手册转成二进制再去找!也许你用熟练了 ...

多谢
 楼主| yuanquanquan 发表于 2014-4-4 09:46 | 显示全部楼层
_编程浪子 发表于 2014-4-3 22:01
你的问题现象是什么?没有输出?
有很多原因的,不一定是TIM配置有问题。 ...

对,没有输出。我之前写了输入捕获的代码,可以用。这是拿来改的,没想到不能用。
 楼主| yuanquanquan 发表于 2014-4-4 09:47 | 显示全部楼层
dirtwillfly 发表于 2014-4-4 08:41
慢慢来,建议先用ST提供的固件库

谢谢建议
 楼主| yuanquanquan 发表于 2014-4-4 09:50 | 显示全部楼层
df_flying 发表于 2014-4-3 22:23
你这种程序能让人读的晕死!写的时候二进制转成16进制,读的时候对着手册转成二进制再去找!也许你用熟练了 ...

其实我的意思是让贴吧的朋友看看我的TIM配置逻辑顺序有没有问题,是不是少了哪一步,我加了注释的。
深泰电子工作室 发表于 2014-4-4 09:58 | 显示全部楼层
没玩过STM32的。只用过STM8的。。。

评分

参与人数 1威望 +1 收起 理由
yuanquanquan + 1

查看全部评分

airwill 发表于 2014-4-4 12:28 | 显示全部楼层
外设库里就有不少例程供参考. 多留意一下
 楼主| yuanquanquan 发表于 2014-4-4 12:41 | 显示全部楼层
airwill 发表于 2014-4-4 12:28
外设库里就有不少例程供参考. 多留意一下

问题解决了。郁闷了好久啊。原来STM32刹车和死区寄存器有个MOE位必须使能,才能开启输出。
airwill 发表于 2014-4-4 13:21 | 显示全部楼层
嗯, 说起MOE, 我记得也在这个上面上绊过跟斗
香水城 发表于 2014-4-4 13:41 | 显示全部楼层
只有带高级定时器(比如STM32F1里的TIM1和TIM8)才有MOE控制。

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

评分

参与人数 1威望 +2 收起 理由
yuanquanquan + 2 赞一个!

查看全部评分

45465485 发表于 2014-4-4 15:53 | 显示全部楼层

曾经我公司也遇到过同一问题,但是通过与深圳顺易捷科技有限公司解决了这一问题.
深圳顺易捷科技有限公司销售联系人:韩先生
手机13480101190 /13510965133  
QQ800055586
E-mail :syjpcb@163.com
_编程浪子 发表于 2014-4-4 17:13 | 显示全部楼层
yuanquanquan 发表于 2014-4-4 12:41
问题解决了。郁闷了好久啊。原来STM32刹车和死区寄存器有个MOE位必须使能,才能开启输出。 ...

先恭喜西。
一直使用库,没直接用过寄存器操作。俺不太了解这些寄存器。
 楼主| yuanquanquan 发表于 2014-4-4 18:32 | 显示全部楼层
香水城 发表于 2014-4-4 13:41
只有带高级定时器(比如STM32F1里的TIM1和TIM8)才有MOE控制。

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

的确,除了高级定时器外,都没有刹车功能。受教了。
lkl0305 发表于 2014-4-4 21:16 | 显示全部楼层
还是库函数入门快啊
 楼主| yuanquanquan 发表于 2014-4-4 22:43 | 显示全部楼层
lkl0305 发表于 2014-4-4 21:16
还是库函数入门快啊

那也是因为例程多吧,如果没例程,我觉得看库花的时间比看寄存器的还要多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

78

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部