STM8S系列单片机TIM1的PWM配置与TIM2的区别

发布者:水手谷水手最新更新时间:2020-01-29 来源: eefocus关键字:STM8S系列  单片机  TIM1  PWM配置  TIM2 手机看文章 扫描二维码
随时随地手机看文章

为什么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位的组合来控制。

关键字:STM8S系列  单片机  TIM1  PWM配置  TIM2 引用地址:STM8S系列单片机TIM1的PWM配置与TIM2的区别

上一篇:STM8S的按键PWM调光灯历程
下一篇:STM8S TIM2 输出PWM初始化函数

推荐阅读最新更新时间:2024-11-10 16:24

基于D/A转换器的程控电源设计
   引 言   在各种电子电路实验中,电源是一种必不可少的仪器,目前实验所用的电源大多是只有固定电压输出(例如常用的有: ±5V、±12V或±15V) ,其缺点是输出电压不可人为的改变,输出精度和稳定性都不高:在测量上,传统的电源一般采用指针式或数字式来显示电压或电流,搭配电位器调整所要的电压及电流输出值。 若要调整精确的电压输出,须搭配精确的显示仪表监测:又因电位器的阻值特性非线性,在调整时,需要花费一定的时间,且会产生漂移,使得最终只好因陋就简。   随着科学技术飞速发展,对电源可靠性、输出精度和稳定性要求越来越高,利用D/A 转换器的高分辨率和单片机的自动检测技术设计程控电源就显示出其优越性。 程控电源既能方便输入和选
[单片机]
基于D/A转换器的程控电源设计
基于AT89C5l单片机实现的简易智能机器人
  1 设计思想与总体方案   1.1 简易智能机器人的设计思想   本机器人能在任意区域内沿引导线行走,自动绕障,在有光源引导的条件下能沿光源行走。同时,能检测埋在地下的金属片,发出声光指示信息,并能实时存储、显示检测到的断点数目以及各断点至起跑线间的距离,最后能停在指定地点,显示出整个运行过程的时间。   1.2 总体设计方案和框图   本设计以AT89C5l单片机作为检测和控制核心。采用红外光电 传感器 检测路面黑线及障碍物,使用金属 传感器 检测路面下金属铁片,应用光电码盘测距,用光敏电阻检测、判断车库位置,利用PWM(脉宽调制)技术动态控制电动机的转动方向和转速。通过软件编程实现机器人行进、绕障、停止的精确控制以
[单片机]
基于AT89C5l<font color='red'>单片机</font>实现的简易智能机器人
基于LM2576的高可靠MCU电源设计
嵌入式控制系统的MCU一般都需要一个稳定的工作电压才能可靠工作。而设计者多习惯采用线性稳压器件(如78xx系列三端稳压器件)作为电压调节和稳压器件来将较高的直流电压转变MCU所需的工作电压。这种线性稳压电源的线性调整工作方式在工作中会大的 热损失 (其值为V压降 I负荷),其工作效率仅为30%~50% 。加之工作在高粉尘等恶劣环境下往往将嵌入式工业控制系统置于密闭容器内的聚集也加剧了MCU的恶劣工况,从而使嵌入式控制系统的稳定性能变得更差。 而开关电源调节器件则以完全导通或关断的方式工作。因此,工作时要么是大电流流过低导通电压的开关管、要么是完全截止无电流流过。因此,开关稳压电源的功耗极低,其平均工作效率可达70%~90% 。在
[单片机]
基于LM2576的高可靠<font color='red'>MCU</font>电源设计
51单片机环境的搭建-1.3指令下载/烧写软件
第一章 51单片机环境的搭建-1.3指令下载/烧写软件 1.3 指令下载/烧写程序下载STC-ISP:http://pan.baidu.com/s/1kU3oXD1 将STC-ISP-v4.80.rar文件解压,即可使用
[单片机]
51单片机的外部中断
以前很少用外部中断,今天正好做项目要用,所以就复习了下。两个管脚INT0和INT1用来识别外部电平,以下是与之相关的两个寄存器: EX0和EX1分别是INT0和INT1的中断允许位,IT0和IT1分别是INT0和INT1的触发方式控制位,为0则是低电平触发方式,外部中断源(INTx)必须保持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行完之前,外部中断源必须被清除(比如P3.2 要变高)否则将产生另一次中断。为1时,外部中断(INTx)端口由 1 0 下降沿跳变,激活中断请求标志位IEx,向主机请求中断。IE0和IE1分别是INT0和INT1的中断标志了。
[单片机]
51单片机加1指令(5条) 举例说明
这5条 指令 的的功能均为原寄存器的内容加1,结果送回原寄存器。上述提到,加1指令不会对任何标志有影响,如果原寄存器的内容为FFH,执行加1后,结果就会是00H。这组指令共有直接、寄存器、寄存器减间址等寻址方式: INC A ;(A)+1→(A) 累加器A中的内容加1,结果存在A中 INC data ;(data)+1→(data) 直接地址单元中的内容加1,结果送回原地址单元中 INC @Ri ;((Ri))+1→((Ri)) 寄存器的内容指向的地址单元中的内容加1,结果送回原地址单元中 INC Rn ;(Rn)+1→(Rn)寄存器Rn的内容加1,结果送回原地址单元中 INC DPTR ;(DPT
[单片机]
linux下avr单片机开发:中断服务程序
不管是什么单片机程序,中断总是非常重要的一部分 ,linux 下的avr开发,主要是依靠avr-gcc,以及avr-libc,它们对中断程序的格式要求,与window下的icc-avr以及win-avr有所差异,这里对linux下中断服务程序编写做个简要介绍。 首先是要引入的库: #include avr/io.h #include avr/interrupt.h 这两个是中断程序所要用到的,中断程序的编写位置,只要是在工程里的某个c文件里面就可以了。 具体格式: ISR(INT1_vect) { //...................................// } 其中的INT1
[单片机]
基于FRAM的MCU为低功耗应用提高安全性
  安全性在包括智能手机配件、智能仪表、个人健康监控、遥控以及存取系统等各种应用中正在变得日益重要。要保护收益及客户隐私,OEM 厂商必须采用安全技术加强系统的防黑客攻击能力。对于大量这些应用而言,将要部署数百万的器件,工程师面临的挑战是在不严重影响系统成本或可靠性的同时,确保最佳安全平衡。主要注意事项包括保护敏感数据的传输,防止 MCU 应用代码及安全数据被读取,防止 MCU 遭到物理攻击,最大限度提高电源效率,以及支持安全升级,确保设备能够应对未来安全威胁等。   安全设备必须能够像银行保险库一样有效地安全存储敏感信息。这类信息包括交换的实际数据(比如客户的信用卡号或者何时用了多少电的记录等)以及任何确保通信通道安全的加密数据
[单片机]
基于FRAM的<font color='red'>MCU</font>为低功耗应用提高安全性
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved