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

查看: 5118|回复: 0

stm8s tim1外部时钟模式2对外部脉冲计数 改为库函数的c程序

[复制链接]

3

主题

22

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2013-7-11 15:08:11 | 显示全部楼层 |阅读模式
stm8/

        #include "mapping.inc"
  #include "stm8s105c6.inc"

        segment 'rom'

main.l
        ; initialize SP
        ldw X,#stack_end
        ldw SP,X

        #ifdef RAM0       
        ; clear RAM0
ram0_start.b EQU $ram0_segment_start
ram0_end.b EQU $ram0_segment_end
        ldw X,#ram0_start
clear_ram0.l
        clr (X)
        incw X
        cpw X,#ram0_end       
        jrule clear_ram0
        #endif

        #ifdef RAM1
        ; clear RAM1
ram1_start.w EQU $ram1_segment_start
ram1_end.w EQU $ram1_segment_end       
        ldw X,#ram1_start
clear_ram1.l
        clr (X)
        incw X
        cpw X,#ram1_end       
        jrule clear_ram1
        #endif

        ; clear stack
stack_start.w EQU $stack_segment_start
stack_end.w EQU $stack_segment_end
        ldw X,#stack_start
clear_stack.l
        clr (X)
        incw X
        cpw X,#stack_end       
        jrule clear_stack
        ;烧程序前要先将PB3引脚的第二功能通过STVP改为TM1_ETR;
        intel
        BRES PB_DDR,#3 ;初始化TIM1_ETR为无中断功能的输入方式;
        BSET PB_CR1,#3
        BRES PB_CR2,#3
       
  BSET PD_DDR,#0 ;初始化PD0和PD7为推挽输出;将PD0的PWM信号输入TIM1_ETR中;
        BSET PD_CR1,#0
        BRES PD_CR2,#0
        BSET PD_DDR,#7
        BSET PD_CR1,#7
        BRES PD_CR2,#7
        ;计数器初始化
       
        MOV TIM3_PSCR,#5  ;初始化预分频器TIM2_PSCR
  MOV TIM3_ARRH,#{HIGH 50000} ;初始化自动重装初值寄存器TIM2_ARR
  MOV TIM3_ARRL,#{LOW 50000}
         ;初始化控制寄存器TIM2_CR1,定义为向上计数、允许更新、仅允行砑剖饕绯鍪敝卸媳曛居行А⑵舳ㄊ逼?
  MOV TIM3_CR1,#05H
       
  ;初始化输出比较
       
        MOV TIM3_CCMR2,#1101000B  ;选择输出比较方式、选择输出比较嫫鞯脑ぷ霸毓δ堋⒀≡馪WM1模式
        MOV TIM3_CCR2H,#{HIGH 25000} ;初始化TIMX_CCRn
        MOV TIM3_CCR2L,#{LOW 25000}
        BRES TIM3_CCER1,#5  ;初始化捕获\比较使能寄存器?
        BSET TIM3_CCER1,#4
  
        ;外部时钟模式2
  MOV TIM1_ETR,#11010000B ;ETP为选择触发极性(0不反相,1反相),ETPS位选择外触发输入信号的分频系数,ETR为1,选择外部时钟;
        MOV TIM1_SMCR,#00H  ;将SMS置0;
        MOV TIM1_ARRH,#{HIGH 1} ;初始化自动重装初值寄存器TIM1_ARR
  MOV TIM1_ARRL,#{LOW 1}
  MOV TIM1_RCR,#00H  ;初始化重复计数寄存器TIM1_RCR
        MOV TIM1_CR1,#04H  ;初始化控制寄存器TIM1_CR1,定义为向上计数、允许更新、仅允许计数器溢出时中断标志有效;
        BSET TIM1_IER,#0   ;允许中断;
        BSET TIM1_CR1,#0   ;CEN=1,启动计数器;
        RIM
        JRT $
        interrupt TIM1_interrupt_over
TIM1_interrupt_over.L
  BRES TIM1_SR1,#0  ;清除更新中断标志
        BCPL PD_ODR,#7
        IRET
        IRET
        IRET
        IRET
        IRET

       
        interrupt NonHandledInterrupt
NonHandledInterrupt.l
        iret
       
        motorola
        segment 'vectit'
        dc.l {$82000000+main}                                                                        ; reset
        dc.l {$82000000+NonHandledInterrupt}        ; trap
        dc.l {$82000000+NonHandledInterrupt}        ; irq0
        dc.l {$82000000+NonHandledInterrupt}        ; irq1
        dc.l {$82000000+NonHandledInterrupt}        ; irq2
        dc.l {$82000000+NonHandledInterrupt}        ; irq3
        dc.l {$82000000+NonHandledInterrupt}        ; irq4
        dc.l {$82000000+NonHandledInterru pt}        ; irq5
        dc.l {$82000000+NonHandledInterrupt}        ; irq6
        dc.l {$82000000+NonHandledInterrupt}        ; irq7
        dc.l {$82000000+NonHandledInterrupt}        ; irq8
        dc.l {$82000000+NonHandledInterrupt}        ; irq9
        dc.l {$82000000+NonHandledInterrupt}        ; irq10
        dc.l {$82000000+TIM1_interrupt_over}        ; irq11
        dc.l {$82000000+NonHandledInterrupt}        ; irq12
        dc.l {$82000000+NonHandledInterrupt}        ; irq13
        dc.l {$82000000+NonHandledInterrupt}        ; irq14
        dc.l {$82000000+NonHandledInterrupt}        ; irq15
        dc.l {$82000000+NonHandledInterrupt}        ; irq16
        dc.l {$82000000+NonHandledInterrupt}        ; irq17
        dc.l {$82000000+NonHandledInterrupt}        ; irq18
        dc.l {$82000000+NonHandledInterrupt}        ; irq19
        dc.l {$82000000+NonHandledInterrupt}        ; irq20
        dc.l {$82000000+NonHandledInterrupt}        ; irq21
        dc.l {$82000000+NonHandledInterrupt}        ; irq22
        dc.l {$82000000+NonHandledInterrupt}        ; irq23
        dc.l {$82000000+NonHandledInterrupt}        ; irq24
        dc.l {$82000000+NonHandledInterrupt}        ; irq25
        dc.l {$82000000+NonHandledInterrupt}        ; irq26
        dc.l {$82000000+NonHandledInterrupt}        ; irq27
        dc.l {$82000000+NonHandledInterrupt}        ; irq28
        dc.l {$82000000+NonHandledInterrupt}        ; irq29

        end
回复

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版