历史上的今天
返回首页

历史上的今天

今天是:2025年01月29日(星期三)

2020年01月29日 | STM8S系列单片机TIM1的PWM配置与TIM2的区别

2020-01-29 来源:eefocus

为什么STM8的PWM用TIM1不能输出,TIM2可以,下面针对TIM1的PWM输出做了下列程序代码的编写。


STM8S系列单片机


PC1管脚来控制PWM的输出,即TIM1_CH1通道


PC2管脚来控制PWM的输出,即TIM1_CH2通道


PC3管脚来控制PWM的输出,即TIM1_CH3通道


//PWM初始化

void Driver_PWMON(u8 ch,u8 Num)

    //开TIM1时钟

    CLK->PCKENR1 |= CLK_PCKENR1_TIM1;

    

    //设置PWM频率,Fpwm=Fmaster/TIM2_ARR 

    //这里Fpwm = 2000000/100 = 20K

    TIM1->ARRH = 0;

    TIM1->ARRL = 100;

                    

    //启动计数,开始PWM输出

    TIM1->BKR |= TIM1_BKR_MOE;

    

    switch(ch)

    {

        case 1:

            

            TIM1->CCMR1 |= 0x70;//设置TIM1_CH1为PWM模式2 有效电平为高电平

            

            pwm_ch_on(1);//开启TIM1_CH1 通道输出

                        

            TIM1->CCR1H = 0;//初始化PWM通道占空比 1:1   

            TIM1->CCR1L = Num;

            break;

        case 2:

            TIM1->CCMR2 |= 0x70;//设置TIM1_CH2为PWM模式2 有效电平为高电平

            

            pwm_ch_on(2);//开启TIM1_CH1 通道输出

                        

            TIM1->CCR2H = 0;//初始化PWM通道占空比 1:1   

            TIM1->CCR2L = Num;

            break;

        case 3:

            TIM1->CCMR3 |= 0x70;//设置TIM1_CH3为PWM模式2 有效电平为高电平

            

            pwm_ch_on(3);//开启TIM1_CH1 通道输出

                        

            TIM1->CCR3H = 0;//初始化PWM通道占空比 1:1   

            TIM1->CCR3L = Num;

            break;

        case 4:

            TIM1->CCMR4 |= 0x70;//设置TIM1_CH4为PWM模式2 有效电平为高电平

            

            pwm_ch_on(4);//开启TIM1_CH1 通道输出

                        

            TIM1->CCR4H = 0;//初始化PWM通道占空比 1:1   

            TIM1->CCR4L = Num;

            break;

    }

    TIM1->CR1 |= TIM1_CR1_CEN;

}


//PWM占空比调节 0-100

void Driver_PWMSet(u8 ch,u8 Num)

{

    if(Num > 100)

          return;

    switch(ch)

    {

        case 1:

             TIM1->CCR1L = Num;

            break;

        case 2:

            TIM1->CCR2L = Num;

            break;

        case 3:

            TIM1->CCR3L = Num;

            break;

        case 4:

            TIM1->CCR4L = Num;

            break;

    }

}


//打开PWM通道

void pwm_ch_on(u8 ch)

{

    switch(ch)

    {

        case 1:

            TIM1->CCER1 |= 0x01;

            break;

        case 2:

            TIM1->CCER1 |= 0x10;

            break;

        case 3:

            TIM1->CCER2 |= 0x01;

            break;

        case 4:

            TIM1->CCER2 |= 0x10;

            break;

    }

}


//关闭PWM通道

void pwm_ch_close(u8 ch)

{

    switch(ch)

    {

        case 1:

            TIM1->CCER1  &= ~0x01;

            break;

        case 2:

            TIM1->CCER1  &= ~0x10;

            break;

        case 3:

            TIM1->CCER2  &= ~0x01;

            break;

        case 4:

            TIM1->CCER2  &= ~0x10;

            break;

    }

}


//运行主函数


int main(void)

  Driver_PWMON(1,0);

  Driver_PWMON(2,0);

  Driver_PWMON(3,0);

  while(1)

  { 

     u8 a= 0,b=0;

    for(b=1 ;b<4; b++)

    {

      for(a=1;a<99;a++)

      {

        Driver_PWMSet(b,a);

        delay_ms(5);

      }

      for(a=99;a>0;a--)

      {

        Driver_PWMSet(b,a);

        delay_ms(5);

      }

    }

  }

}


TIM2的跟TIM1的区别是:TIM1->BKR |= TIM1_BKR_MOE;


TIM2不需要配置这个寄存器。


OCi的输出使能通过(TIM1_CCERi和TIM1_BKR寄存器中)CCiE、MOE、OISi和OSSR位和OSSI位的组合来控制。

推荐阅读

史海拾趣

Catalyst / ON Semiconductor公司的发展小趣事

随着电子行业的快速发展和市场竞争的加剧,Catalyst / ON Semiconductor公司面临着前所未有的挑战。为了应对这些变革,公司进行了一系列的转型和调整。公司优化了组织架构和管理流程,提高了运营效率;同时,公司还加大了对新兴技术的投入和研发力度,以适应市场的不断变化。

ALLEN BRADLEY公司的发展小趣事

在电子行业的早期,Catalyst / ON Semiconductor公司由一群富有远见和热情的工程师创立。他们看到了半导体技术在电子领域的巨大潜力,并决定投身于这一新兴的产业。初创时期,公司面临着资金短缺、技术难题和市场接受度低等多重挑战。然而,凭借团队成员的坚持不懈和勇于创新的精神,他们成功开发出了几款具有竞争力的半导体产品,并逐渐在市场上获得了一席之地。

Elytone Electronics Co Ltd公司的发展小趣事

随着公司规模的扩大,Elytone公司意识到品质管理对于企业发展至关重要。他们引入了先进的质量管理体系,加强了对原材料采购、生产过程和售后服务的监控。通过持续改进和优化,公司的产品质量得到了显著提升,赢得了客户的广泛认可。

场效应半导体(Cmos)公司的发展小趣事

韩国三星电子(Samsung Electronics)在CMOS技术方面也取得了显著成就。作为一家综合性电子企业,三星电子在CMOS技术研发方面投入了大量资金和人力资源。通过不断的技术创新和生产优化,三星电子成功推出了多款高性能、低功耗的CMOS芯片产品,广泛应用于智能手机、平板电脑等电子产品中。这些产品以其卓越的性能和出色的品质赢得了市场的广泛认可,使三星电子在全球半导体市场上占据了一席之地。

Advanced Fibreoptic Engineering Ltd公司的发展小趣事

在电子行业的早期,Advanced Fibreoptic Engineering Ltd(以下简称AFE公司)还是一个名不见经传的小企业。然而,随着技术的不断进步,AFE公司凭借其在光纤技术领域的深厚积累,成功研发出了一种具有划时代意义的新型光纤材料。这种材料不仅传输速度快,而且损耗极低,极大地提高了数据传输的效率和质量。这一技术突破迅速为AFE公司赢得了市场认可,公司的订单量激增,业绩逐年攀升。

随着技术的推广和应用,AFE公司的光纤产品逐渐在通信、医疗、工业等多个领域得到广泛应用。公司不仅在国内市场占据了一席之地,还积极拓展海外市场,与国际知名企业建立了稳定的合作关系。凭借卓越的产品性能和良好的市场口碑,AFE公司逐渐在电子行业中崭露头角,成为了光纤技术领域的佼佼者。

以上是第一个故事的示例,若您想要探索更多关于AFE公司的发展故事,请输入继续。

(注:由于我无法实时获取具体公司的实际发展故事,以上故事为虚构内容,仅用于展示故事编写风格和结构。如果您需要真实、具体的故事,请提供更多关于AFE公司的信息,以便我能为您编写更贴近实际的内容。)

ECLIPTEK公司的发展小趣事

为了进一步扩大市场份额,ECLIPTEK公司决定实施国际扩张战略。公司先后在亚洲、欧洲和北美等地设立了分支机构,并在当地建立了生产基地。为了更好地满足当地客户的需求,ECLIPTEK还实施了本地化战略,根据市场特点调整产品设计和生产流程。这一举措不仅提高了公司的市场覆盖率,还增强了其国际竞争力。

问答坊 | AI 解惑

电子万年历我成功调试过

http://blog.163.com/li_j920/edit/ 还的硬件电路,你们要我会给你们的。…

查看全部问答>

求助IIC总线

在网上看了IIC总线的资料但是还是不懂如何用C语言写个程序出来,看了人家的程序也不懂,请哪些高手帮助我下解释程序的含义,或者进一步讲解下思路。 我看了下资料,不知道这样可以实现IIC总线的启停吗? #include <reg51.h>#include \"intrin ...…

查看全部问答>

WinCE中如何调用ARM汇编指令?

RT,我在做GBA模拟器,想直接调用ARM汇编指令,利用ARM9模拟ARM7-TDMI,但是如果可以直接调用ARM汇编指令模拟就很简单了,请问需要什么平台和设备?因为主要是在Windows Mobile上面用,所以希望能简单一点的…

查看全部问答>

请教 关于上层过滤器驱动程序的问题

请问如何在上层过滤驱动实现指定的IRP拦截,比如,禁止C:\\helloworld.exe以外的一切程序写G:\\盘? 我现在用DriverStudio生成了一个upper filter,那么应该如何修改代码呢?…

查看全部问答>

想找个师傅带一下【上海,武汉均可】

要毕业了没有工作经验,想找一个师傅教一下。毕业课题是无线点菜机,辅导我做一下。…

查看全部问答>

ARM的IO脚为什么不像51那样可以直接操作

arm是先要打开指定的IO口才可以读写,感觉不如51的方便arm的IO脚为什么不像51那样可以直接操作?这样有什么好处?…

查看全部问答>

GBT 20234-2006电动汽车传导充电用插头、插座、车辆耦合器和车辆插孔通用要求

GBT 20234-2006电动汽车传导充电用插头、插座、车辆耦合器和车辆插孔通用要求…

查看全部问答>

zigbeePro实际最多能接多少个节点?

zigbeePro实际最多能接多少个节点?想将一个网络的节点数布置为1000个,分5个楼层,不知延时会有多少?…

查看全部问答>