[STM8] 急!STM8的time2输出PWM问题

[复制链接]
2781|14
 楼主| biiigfish 发表于 2015-3-14 13:37 | 显示全部楼层 |阅读模式
本帖最后由 biiigfish 于 2015-3-14 13:48 编辑

急!快被这个折腾死了!用的片子是STM8S003F3p6。下面的代码,channel2有PWM输出,channel3没有。。。其他地方没有对GPIOD有操作。

  1. void pwm_init()
  2. {  
  3.     TIM2->CCMR2 = 0x70;// Output mode PWM2.         
  4.                                // 通道2被设置成比较输出方式
  5.                                // OC2M = 111,为PWM模式2,
  6.                                // 向上计数时,若计数器小于比较值,为无效电平
  7.                                // 即当计数器在0到比较值时,输出为1,否则为0
  8.     TIM2->CCMR3 = 0x70;
  9.         
  10.     TIM2->CCER1 = 0x30;        // CCER1[7...0]=00:channel2:00:channel1
  11.                                 // CC2P = 1,低电平为有效电平
  12.                                 // CC2E = 1,开启输出引脚
  13.    
  14.     TIM2->CCER2 = 0x03;        // CCER2[7...0]=00:00:00:channel3
  15.       
  16.     //设置重装时的寄存器值,即一个pwm周期是多少个系统时钟周期,Fpwm=2000000/256
  17.     TIM2->ARRH = 0x00;
  18.     TIM2->ARRL = 0xFF;
  19.         
  20.     //初始化比较寄存器,决定PWM方波的占空比              
  21.     TIM2->CCR2H = 0;
  22.     TIM2->CCR2L = LOW_SPEED;
  23.    
  24.     TIM2->CCR3H = 0;
  25.     TIM2->CCR3L = LOW_SPEED;
  26.    
  27.     // 初始化时钟分频器为1,即计数器的时钟频率为Fmaster=2MHZ
  28.     TIM2->PSCR = 0;

  29.     // 启动计数
  30.     TIM2->CR1 |= 0x01;
  31. }
 楼主| biiigfish 发表于 2015-3-14 13:38 | 显示全部楼层
#define LOW_SPEED 100

换了两个片子了,引脚上现在啥都没接。。。
 楼主| biiigfish 发表于 2015-3-14 13:40 | 显示全部楼层
会不会和用IAR编译有关系???
白开水key 发表于 2015-3-14 13:48 | 显示全部楼层
楼主是什么型号的片子
 楼主| biiigfish 发表于 2015-3-14 13:49 | 显示全部楼层
白开水key 发表于 2015-3-14 13:48
楼主是什么型号的片子

STM8S003F3P6
白开水key 发表于 2015-3-14 13:52 | 显示全部楼层
通道2 有输出  通道3没有?
 楼主| biiigfish 发表于 2015-3-14 13:54 | 显示全部楼层
下面是tim2的寄存器值,也一点问题没有啊!还要考虑哪里呢。。。
03.14.JPG
 楼主| biiigfish 发表于 2015-3-14 13:56 | 显示全部楼层
白开水key 发表于 2015-3-14 13:52
通道2 有输出  通道3没有?

引脚pd3上有pwm,引脚pd2上没有。。。目前两个引脚都是悬空的,排除硬件设计问题。
 楼主| biiigfish 发表于 2015-3-14 14:51 | 显示全部楼层
本帖最后由 biiigfish 于 2015-3-14 14:59 编辑

AFR1 Alternate function remapping option 1(2)
0: AFR1 remapping option inactive: Default alternate
functions
(1)
.
1: Port A3 alternate function = SPI_NSS; port D2
alternate function = TIM2_CH3

channel3需要remapping才能用,正在解决。

评论

低级错误  发表于 2015-3-14 23:34
lvyunhua 发表于 2015-3-15 11:05 | 显示全部楼层
:lol  是啊,这下应该解决了吧。
wj19900703 发表于 2015-3-18 10:42 | 显示全部楼层
time2_ch3,你想用作PWM输出的话,先要对芯片做备选功能重映射,备选功能重映射有两种方法,一种是软件配置,这种方式复杂些,还有一种是烧入器方式,你如果用的是stvd的话应该有软件可以配置这些
yixin1937 发表于 2015-3-18 10:51 | 显示全部楼层
打一下酱油~~~
yixin1937 发表于 2015-3-18 10:51 | 显示全部楼层
顶~~~~打一下酱油~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

1

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