打印

STM8的TIM3 PWM输出,在S105上没问题,到STM8L152上就不行

[复制链接]
8427|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
videre|  楼主 | 2011-4-25 11:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用TIM3CH1(PB1)输出方波驱动蜂鸣器,以前同样的代码在S105上跑过没问题。
可现在示波器检查在L152上没有输出,
请高手指教

PB1已设置PP输出
-----------------------

CLK_PCKENR1 |= 0X02;// 开启TIM3外设时钟

  TIM3_CR1 = 0x00;  //关闭TIM3
  TIM3_PSCR = 0x04;   //tim3 16分频,1Mhz
  TIM3_CCMR1 = 0x60;         // PWM 模式 1

  TIM3_ARRH = 0x01;     //1M/299+1=3.3khz
  TIM3_ARRL = 0x2B;
  
  TIM3_CCR1H = 0x00;   //150 50%
  TIM3_CCR1L = 0x96;

  TIM3_CR1 = 0x01;  // 计数器使能,开始计数
  TIM3_CCER1 = 0x03;         // CC1配置为输出
沙发
ST_ARM| | 2011-4-25 11:20 | 只看该作者
Timer3的时钟使能了么?
STM8S是默认打开,STM8L是要自己使能的。

使用特权

评论回复
板凳
sdpz| | 2011-4-25 11:25 | 只看该作者
S和L有些寄存器地址不一样的哦!

使用特权

评论回复
地板
videre|  楼主 | 2011-4-25 11:37 | 只看该作者
回2L
CLK_PCKENR1 |= 0X02就是使能TIM3时钟,否则寄存器都写不进去。

回3L
我打印了两本手册对照,代码里所用到的寄存器确有不同,不同的部分主要是8L使用了一些8S保留的位,位的定义还是相同的,而且增加的位选项,似乎和这种简单的pwm输出关系不大

使用特权

评论回复
5
sdpz| | 2011-4-25 13:47 | 只看该作者
我说的是地址不是位定义,105的TIM3基址是0x5230,152的是0x5280,头文件可别混用

使用特权

评论回复
6
videre|  楼主 | 2011-4-25 14:06 | 只看该作者
用的是IAR自带的头文件
#include "iostm8l152c6.h"

使用特权

评论回复
7
hgchenistry| | 2011-4-25 18:00 | 只看该作者
地址不兼容呀。

使用特权

评论回复
8
donkey89| | 2011-4-26 10:10 | 只看该作者
152也有beep脚的啊,干嘛不用?

使用特权

评论回复
9
videre|  楼主 | 2011-4-27 09:37 | 只看该作者
ls,我还有定时器要做其他功能,驱动蜂鸣器只是为了测试定时器是否能输出

使用特权

评论回复
10
videre|  楼主 | 2011-5-8 12:35 | 只看该作者
再顶一下,很少有人用STM8L么

使用特权

评论回复
11
chenbb8| | 2012-3-30 11:50 | 只看该作者
我也用了STM8L,昨天将STM8S105的TIM3上的PWM程序移植到STM8L上的时候也出现了这样的问题。
纠结了一天后,发现是STM8L的TIM 2 3 5都带有刹车功能,配置的方法和STIM1差不多,因此需要加这样的一行
TIM3_BKR = 0xC0; 使能输出 自动重装

使用特权

评论回复
12
HORSE7812| | 2012-4-27 01:39 | 只看该作者
mark!

使用特权

评论回复
13
高建明| | 2012-4-27 08:01 | 只看该作者
mark

使用特权

评论回复
14
logokfu| | 2014-3-29 18:53 | 只看该作者
ST_ARM 发表于 2011-4-25 11:20
Timer3的时钟使能了么?
STM8S是默认打开,STM8L是要自己使能的。

这个很容易中招

使用特权

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

本版积分规则

25

主题

184

帖子

3

粉丝