你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关与 STM8S103F3 定时器1产生PWM信号的问题

[复制链接]
baiyni888 提问时间:2018-10-16 19:24 /
本帖最后由 baiyni888 于 2018-10-16 19:40 编辑

我在使用STM8S103F3 单片机定时器2产生PWM信号时,是没有问题的,CH1  CH2  CH3 都是能正常输出PWM信号的;
但是在使用 定时器1 产生PWM信号时,一直就没有信号输出来,因为我想用到 反向的信号,所以想用 定时器1产生PWM,可以有互补信号出来


#include <iostm8s103f3.h>

////////////这是定时器1产生PWM信号的初始化
void  timer1_PWM(void)
{
    CLK_PCKENR2 = 0x80;//开启定时器1外设时钟
   // TIM1_EGR |= 0x01;   //重新初始化TIM1
   // TIM1_RCR = 0x00;  
    TIM1_PSCRH =0;     //设定预分频为,16分频 8M
    TIM1_PSCRL =0x01;  //PWM的时钟 影响周期

    TIM1_CCER1 = 0x55; //CC2ER1开启1,2,高电平有效
    TIM1_CCMR1 = 0x60; //PWM模式1,CC1配置入输出
    TIM1_ARRH = 0x00;     //设定重装载值
    TIM1_ARRL = 0xff;  //PWM的周期

    TIM1_CCR1H = 0x00;
    TIM1_CCR1L = 0x14;  // 占空比值

    //TIM1_IER = 0x01;         //允许更新中断

    TIM1_CR1 = 0x01; //使能TIM1计数器
    TIM1_BKR = 0x80;

}
////GPIO端口初始化
void GPIO_init()
{
     PC_DDR=0xff;  //方向输出
     PC_CR1=0xff;  //推挽方式
     PC_CR2=0;
     PC_ODR=0;  //输出低电平
}

void main()
{
    timer1_PWM();
    GPIO_init();
    while(1)
   {
    ;
   }
}

目前在单片机的 13   14    16  17 输出脚上没有信号


STM8S103F3.png
收藏 评论5 发布时间:2018-10-16 19:24

举报

5个回答
baiyni888 回答时间:2018-10-16 19:26:55
用的是IAR环境,头文件

#include <iostm8s103f3.h>

#define        uint         unsigned    int
#define        uchar        unsigned    char
baiyni888 回答时间:2018-10-16 19:33:09
本帖最后由 baiyni888 于 2018-10-16 19:38 编辑

定时器2产生PWM是正常的,代码如下:

#include <iostm8s103f3.h>
void  timer2_PWM(void)
{
        TIM2_CCMR1 = 0x70;
        TIM2_CCMR2 = 0x70;
     TIM2_CCER1 =  0x33;
    TIM2_CCMR3 = 0x70;      //pwm模式2
    TIM2_CCER2 = 0x03;      //CC3引脚使能
   
        //设定频率-----------------------------
        //2^1=2分频
        TIM2_PSCR = 0x01;        
        //初始化自动装载寄存器
        TIM2_ARRH = 0x00;
        TIM2_ARRL = 0xFF;
        //初始化比较寄存器,决定PWM 方波的占空比
        TIM2_CCR1H = 0;
        TIM2_CCR1L = 50;
     TIM2_CCR2H = 0;
     TIM2_CCR2L = 150;
     TIM2_CCR3L = 100;   
     TIM2_CCR3H = 0;            //默认输出低
    TIM2_CR1 = 0x01;// 启动计数  
}
void main()
{
    PD_DDR =0xff;  //方向为输出
    PD_CR1 =0xff;   //推挽方式    PA_DDR =0x0f;
    PA_CR1 =0x0f;
    timer2_PWM();
    while(1);
}

可以在STM8S103F3单片机的  1   10   20   三个脚同时输出三个PWM信号,占空比50微秒,100微秒,150微秒高电平方波信号
wenyangzeng 回答时间:2018-10-16 21:06:20
PC6、PC7需要重映像TIM1-CH1、CH2

无标题.png

baiyni888 回答时间:2018-10-17 08:51:36
果然是这个选择复用功能的原因,我说查了近10次代码原因,都是正常的,因为我是用的IAR,直接用的仿真的,没有用STVP下载,IAR仿真时也不知道怎么搞引脚复选功能,总的来说,非常感谢回复!
robter 回答时间:2018-10-25 08:16:37
管脚复用一不小心就入坑
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版