微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > stm8 pwm

stm8 pwm

时间:10-02 整理:3721RD 点击:
手头上有一块stm8L开发板,芯片是STM8L152k4,如何配置才能让TIM1输出pwm来控制led的亮度

看一下芯资料,有没有现成的PWM控制器,有就方便点,没有的话, 自己定时输出

配置下  pwm1的一些寄存器就可以了

intel
        MOV CLK_PCKENR1,#80H       ;开TIM1时钟,关闭其他外设时钟
  MOV CLK_PCKENR2,#00H
;初始化TIM_CH1       
        BSET PB_DDR,#0             ;将PB0设为低速推挽输出
        BSET PB_CR1,#0
        BRES PB_CR2,#0
        BRES PB_ODR,#0
;初始化TIM1
        MOV TIM1_PSCRH,#00H        ;不分频
        MOV TIM1_PSCRL,#00H
        MOV TIM1_ARRH,#03H            
        MOV TIM1_ARRL,#0FFH        ;自动重装1023
        MOV TIM1_CNTRH,#00H
        MOV TIM1_CNTRL,#00H        ;计数器初始值为0       
       
        MOV TIM1_CCER1,#04H        ;使能TIM1_CH1N,注意是互补输出
       
        MOV TIM1_CCMR1,#68H       ;PWM模式1,TIM1_CCR1预装载,输出
       
        MOV   TIM1_BKR   , #80H    ;主输出使能
        MOV   TIM1_EGR   , #01H   ;置UG,产生更新事件初始化所有寄存器
       
        MOV TIM1_CR1,#81H         ;预装载缓冲,向上计数,开启定时
       
infinite_loop.l
  LD A,#0
PWMUP:
  INC A                     ;A从0加到最大值0ffh
        CP A,#0FFH               
        JRNE PWM1
        LD A,#0FFH                ;A从最大值减到0
PWMDOWN:
        DEC A
        JRNE PWM2
        jra infinite_loop
       
PWM1:
  LD R00,A
  MOV TIM1_CCR1H,#03H      ;将A送到比较值的低位,从而改变占
        MOV TIM1_CCR1L,R00       ;空比,从而达到调节亮度的目的   
        CALL DELAY              
        JP PWMUP
       
PWM2:
  LD R01,A
        MOV TIM1_CCR1H,#03H
        MOV TIM1_CCR1L,R01
        CALL DELAY
        JP PWMDOWN
       
DELAY:   
        MOV    R03,#200             ; 延时子函数
D1:   
              MOV    R04,#100                 
D2:          
                                DEC    R04
                                JRNE   D2
                                DEC    R03
                                JRNE   D1
                                RET
  motorola

hen好好,谢谢分享,先收藏。小编辛苦了

谢谢分享哈,有机会来学习学习~

先学习!在收藏!

正需要,谢谢   

寄存器 和你的配置管脚  对应  起来   最好找个开发板看看例程

刚学STM8 ,谢谢各位大侠资料!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top