📄 stm8s_tim3.ls
字号:
3037 ; 1235 return (FlagStatus)bitstatus;
3041 02fa 5b03 addw sp,#3
3042 02fc 81 ret
3077 ; 1259 void TIM3_ClearFlag(TIM3_FLAG_TypeDef TIM3_FLAG)
3077 ; 1260 {
3078 switch .text
3079 02fd _TIM3_ClearFlag:
3081 02fd 89 pushw x
3082 00000000 OFST: set 0
3085 ; 1262 assert_param(IS_TIM3_CLEAR_FLAG_OK(TIM3_FLAG));
3087 ; 1265 TIM3->SR1 = (u8)(~((u8)(TIM3_FLAG)));
3089 02fe 9f ld a,xl
3090 02ff 43 cpl a
3091 0300 c75322 ld 21282,a
3092 ; 1266 TIM3->SR2 = (u8)(~((u8)(TIM3_FLAG >> 8)));
3094 0303 7b01 ld a,(OFST+1,sp)
3095 0305 43 cpl a
3096 0306 c75323 ld 21283,a
3097 ; 1267 }
3100 0309 85 popw x
3101 030a 81 ret
3165 ; 1290 ITStatus TIM3_GetITStatus(TIM3_IT_TypeDef TIM3_IT)
3165 ; 1291 {
3166 switch .text
3167 030b _TIM3_GetITStatus:
3169 030b 88 push a
3170 030c 89 pushw x
3171 00000002 OFST: set 2
3174 ; 1292 ITStatus bitstatus = RESET;
3176 ; 1294 u8 TIM3_itStatus = 0x0, TIM3_itEnable = 0x0;
3180 ; 1297 assert_param(IS_TIM3_GET_IT_OK(TIM3_IT));
3182 ; 1299 TIM3_itStatus = (u8)(TIM3->SR1 & TIM3_IT);
3184 030d c45322 and a,21282
3185 0310 6b01 ld (OFST-1,sp),a
3186 ; 1301 TIM3_itEnable = (u8)(TIM3->IER & TIM3_IT);
3188 0312 c65321 ld a,21281
3189 0315 1403 and a,(OFST+1,sp)
3190 0317 6b02 ld (OFST+0,sp),a
3191 ; 1303 if ((TIM3_itStatus != (u8)RESET ) && (TIM3_itEnable != (u8)RESET ))
3193 0319 7b01 ld a,(OFST-1,sp)
3194 031b 2708 jreq L1551
3196 031d 7b02 ld a,(OFST+0,sp)
3197 031f 2704 jreq L1551
3198 ; 1305 bitstatus = SET;
3200 0321 a601 ld a,#1
3202 0323 2001 jra L3551
3203 0325 L1551:
3204 ; 1309 bitstatus = RESET;
3206 0325 4f clr a
3207 0326 L3551:
3208 ; 1311 return (ITStatus)(bitstatus);
3212 0326 5b03 addw sp,#3
3213 0328 81 ret
3249 ; 1333 void TIM3_ClearITPendingBit(TIM3_IT_TypeDef TIM3_IT)
3249 ; 1334 {
3250 switch .text
3251 0329 _TIM3_ClearITPendingBit:
3255 ; 1336 assert_param(IS_TIM3_IT_OK(TIM3_IT));
3257 ; 1339 TIM3->SR1 = (u8)(~TIM3_IT);
3259 0329 43 cpl a
3260 032a c75322 ld 21282,a
3261 ; 1340 }
3264 032d 81 ret
3316 ; 1368 static void TI1_Config(u8 TIM3_ICPolarity,
3316 ; 1369 u8 TIM3_ICSelection,
3316 ; 1370 u8 TIM3_ICFilter)
3316 ; 1371 {
3317 switch .text
3318 032e L3_TI1_Config:
3320 032e 89 pushw x
3321 00000001 OFST: set 1
3324 ; 1373 TIM3->CCER1 &= (u8)(~TIM3_CCER1_CC1E);
3326 032f 72115327 bres 21287,#0
3327 0333 88 push a
3328 ; 1376 TIM3->CCMR1 = (u8)((TIM3->CCMR1 & (u8)(~( TIM3_CCMR_CCxS | TIM3_CCMR_ICxF ))) | (u8)(( (TIM3_ICSelection)) | ((u8)( TIM3_ICFilter << 4))));
3330 0334 7b06 ld a,(OFST+5,sp)
3331 0336 97 ld xl,a
3332 0337 a610 ld a,#16
3333 0339 42 mul x,a
3334 033a 9f ld a,xl
3335 033b 1a03 or a,(OFST+2,sp)
3336 033d 6b01 ld (OFST+0,sp),a
3337 033f c65325 ld a,21285
3338 0342 a40c and a,#12
3339 0344 1a01 or a,(OFST+0,sp)
3340 0346 c75325 ld 21285,a
3341 ; 1379 if (TIM3_ICPolarity != TIM3_ICPOLARITY_RISING)
3343 0349 7b02 ld a,(OFST+1,sp)
3344 034b 2706 jreq L1261
3345 ; 1381 TIM3->CCER1 |= TIM3_CCER1_CC1P;
3347 034d 72125327 bset 21287,#1
3349 0351 2004 jra L3261
3350 0353 L1261:
3351 ; 1385 TIM3->CCER1 &= (u8)(~TIM3_CCER1_CC1P);
3353 0353 72135327 bres 21287,#1
3354 0357 L3261:
3355 ; 1388 TIM3->CCER1 |= TIM3_CCER1_CC1E;
3357 0357 72105327 bset 21287,#0
3358 ; 1389 }
3361 035b 5b03 addw sp,#3
3362 035d 81 ret
3414 ; 1417 static void TI2_Config(u8 TIM3_ICPolarity,
3414 ; 1418 u8 TIM3_ICSelection,
3414 ; 1419 u8 TIM3_ICFilter)
3414 ; 1420 {
3415 switch .text
3416 035e L5_TI2_Config:
3418 035e 89 pushw x
3419 00000001 OFST: set 1
3422 ; 1422 TIM3->CCER1 &= (u8)(~TIM3_CCER1_CC2E);
3424 035f 72195327 bres 21287,#4
3425 0363 88 push a
3426 ; 1425 TIM3->CCMR2 = (u8)((TIM3->CCMR2 & (u8)(~( TIM3_CCMR_CCxS | TIM3_CCMR_ICxF ))) | (u8)(( (TIM3_ICSelection)) | ((u8)( TIM3_ICFilter << 4))));
3428 0364 7b06 ld a,(OFST+5,sp)
3429 0366 97 ld xl,a
3430 0367 a610 ld a,#16
3431 0369 42 mul x,a
3432 036a 9f ld a,xl
3433 036b 1a03 or a,(OFST+2,sp)
3434 036d 6b01 ld (OFST+0,sp),a
3435 036f c65326 ld a,21286
3436 0372 a40c and a,#12
3437 0374 1a01 or a,(OFST+0,sp)
3438 0376 c75326 ld 21286,a
3439 ; 1429 if (TIM3_ICPolarity != TIM3_ICPOLARITY_RISING)
3441 0379 7b02 ld a,(OFST+1,sp)
3442 037b 2706 jreq L3561
3443 ; 1431 TIM3->CCER1 |= TIM3_CCER1_CC2P;
3445 037d 721a5327 bset 21287,#5
3447 0381 2004 jra L5561
3448 0383 L3561:
3449 ; 1435 TIM3->CCER1 &= (u8)(~TIM3_CCER1_CC2P);
3451 0383 721b5327 bres 21287,#5
3452 0387 L5561:
3453 ; 1439 TIM3->CCER1 |= TIM3_CCER1_CC2E;
3455 0387 72185327 bset 21287,#4
3456 ; 1441 }
3459 038b 5b03 addw sp,#3
3460 038d 81 ret
3527 ; 1461 u32 TIM3_ComputeLsiClockFreq(u32 TimerClockFreq)
3527 ; 1462 {
3528 switch .text
3529 038e _TIM3_ComputeLsiClockFreq:
3531 038e 520c subw sp,#12
3532 0000000c OFST: set 12
3535 ; 1467 TIM3_ICInit(TIM3_CHANNEL_1, TIM3_ICPOLARITY_RISING, TIM3_ICSELECTION_DIRECTTI, TIM3_ICPSC_DIV8, 0);
3537 0390 4b00 push #0
3538 0392 4b0c push #12
3539 0394 4b01 push #1
3540 0396 5f clrw x
3541 0397 cd00b9 call _TIM3_ICInit
3543 039a 5b03 addw sp,#3
3544 ; 1471 TIM3_ITConfig(TIM3_IT_CC1, ENABLE);
3546 039c ae0201 ldw x,#513
3547 039f cd0161 call _TIM3_ITConfig
3549 ; 1474 TIM3_Cmd(ENABLE);
3551 03a2 a601 ld a,#1
3552 03a4 cd0154 call _TIM3_Cmd
3554 ; 1476 TIM3->SR1 = 0x00;
3556 03a7 725f5322 clr 21282
3557 ; 1477 TIM3->SR2 = 0x00;
3559 03ab 725f5323 clr 21283
3560 ; 1480 TIM3_ClearFlag(TIM3_FLAG_CC1);
3562 03af ae0002 ldw x,#2
3563 03b2 cd02fd call _TIM3_ClearFlag
3566 03b5 L3171:
3567 ; 1483 while ((TIM3->SR1 & TIM3_FLAG_CC1) != TIM3_FLAG_CC1);
3569 03b5 72035322fb btjf 21282,#1,L3171
3570 ; 1485 ICValue1 = TIM3_GetCapture1();
3572 03ba cd028e call _TIM3_GetCapture1
3574 03bd 1f09 ldw (OFST-3,sp),x
3575 ; 1486 TIM3_ClearFlag(TIM3_FLAG_CC1);
3577 03bf ae0002 ldw x,#2
3578 03c2 cd02fd call _TIM3_ClearFlag
3581 03c5 L1271:
3582 ; 1489 while ((TIM3->SR1 & TIM3_FLAG_CC1) != TIM3_FLAG_CC1);
3584 03c5 72035322fb btjf 21282,#1,L1271
3585 ; 1491 ICValue2 = TIM3_GetCapture1();
3587 03ca cd028e call _TIM3_GetCapture1
3589 03cd 1f0b ldw (OFST-1,sp),x
3590 ; 1492 TIM3_ClearFlag(TIM3_FLAG_CC1);
3592 03cf ae0002 ldw x,#2
3593 03d2 cd02fd call _TIM3_ClearFlag
3595 ; 1495 TIM3->CCER1 &= (u8)(~TIM3_CCER1_CC1E);
3597 03d5 72115327 bres 21287,#0
3598 ; 1497 TIM3->CCMR1 = 0x00;
3600 03d9 725f5325 clr 21285
3601 ; 1499 TIM3_Cmd(DISABLE);
3603 03dd 4f clr a
3604 03de cd0154 call _TIM3_Cmd
3606 ; 1502 LSIClockFreq = (8 * TimerClockFreq) / (ICValue2 - ICValue1);
3608 03e1 1e0b ldw x,(OFST-1,sp)
3609 03e3 72f009 subw x,(OFST-3,sp)
3610 03e6 cd0000 call c_uitolx
3612 03e9 96 ldw x,sp
3613 03ea 5c incw x
3614 03eb cd0000 call c_rtol
3616 03ee 96 ldw x,sp
3617 03ef 1c000f addw x,#OFST+3
3618 03f2 cd0000 call c_ltor
3620 03f5 a603 ld a,#3
3621 03f7 cd0000 call c_llsh
3623 03fa 96 ldw x,sp
3624 03fb 5c incw x
3625 03fc cd0000 call c_ludv
3627 03ff 96 ldw x,sp
3628 0400 1c0005 addw x,#OFST-7
3629 0403 cd0000 call c_rtol
3631 ; 1503 return (u32)LSIClockFreq;
3633 0406 96 ldw x,sp
3634 0407 1c0005 addw x,#OFST-7
3635 040a cd0000 call c_ltor
3639 040d 5b0c addw sp,#12
3640 040f 81 ret
3653 xdef _TIM3_ComputeLsiClockFreq
3654 xdef _TIM3_ClearITPendingBit
3655 xdef _TIM3_GetITStatus
3656 xdef _TIM3_ClearFlag
3657 xdef _TIM3_GetFlagStatus
3658 xdef _TIM3_GetPrescaler
3659 xdef _TIM3_GetCounter
3660 xdef _TIM3_GetCapture2
3661 xdef _TIM3_GetCapture1
3662 xdef _TIM3_SetIC2Prescaler
3663 xdef _TIM3_SetIC1Prescaler
3664 xdef _TIM3_SetCompare2
3665 xdef _TIM3_SetCompare1
3666 xdef _TIM3_SetAutoreload
3667 xdef _TIM3_SetCounter
3668 xdef _TIM3_SelectOCxM
3669 xdef _TIM3_CCxCmd
3670 xdef _TIM3_OC2PolarityConfig
3671 xdef _TIM3_OC1PolarityConfig
3672 xdef _TIM3_GenerateEvent
3673 xdef _TIM3_OC2PreloadConfig
3674 xdef _TIM3_OC1PreloadConfig
3675 xdef _TIM3_ARRPreloadConfig
3676 xdef _TIM3_ForcedOC2Config
3677 xdef _TIM3_ForcedOC1Config
3678 xdef _TIM3_PrescalerConfig
3679 xdef _TIM3_SelectOnePulseMode
3680 xdef _TIM3_UpdateRequestConfig
3681 xdef _TIM3_UpdateDisableConfig
3682 xdef _TIM3_ITConfig
3683 xdef _TIM3_Cmd
3684 xdef _TIM3_PWMIConfig
3685 xdef _TIM3_ICInit
3686 xdef _TIM3_OC2Init
3687 xdef _TIM3_OC1Init
3688 xdef _TIM3_TimeBaseInit
3689 xdef _TIM3_DeInit
3690 xref.b c_x
3709 xref c_ludv
3710 xref c_rtol
3711 xref c_uitolx
3712 xref c_llsh
3713 xref c_ltor
3714 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -