📄 stm8s_awu.ls
字号:
1 ; C Compiler for STM8 (COSMIC Software)
2 ; Parser V4.8.32.1 - 30 Mar 2010
3 ; Generator V4.3.4 - 23 Mar 2010
15 .const: section .text
16 0000 _APR_Array:
17 0000 00 dc.b 0
18 0001 1e dc.b 30
19 0002 1e dc.b 30
20 0003 1e dc.b 30
21 0004 1e dc.b 30
22 0005 1e dc.b 30
23 0006 1e dc.b 30
24 0007 1e dc.b 30
25 0008 1e dc.b 30
26 0009 1e dc.b 30
27 000a 1e dc.b 30
28 000b 1e dc.b 30
29 000c 1e dc.b 30
30 000d 3d dc.b 61
31 000e 17 dc.b 23
32 000f 17 dc.b 23
33 0010 3e dc.b 62
34 0011 _TBR_Array:
35 0011 00 dc.b 0
36 0012 01 dc.b 1
37 0013 02 dc.b 2
38 0014 03 dc.b 3
39 0015 04 dc.b 4
40 0016 05 dc.b 5
41 0017 06 dc.b 6
42 0018 07 dc.b 7
43 0019 08 dc.b 8
44 001a 09 dc.b 9
45 001b 0a dc.b 10
46 001c 0b dc.b 11
47 001d 0c dc.b 12
48 001e 0c dc.b 12
49 001f 0e dc.b 14
50 0020 0f dc.b 15
51 0021 0f dc.b 15
80 ; 83 void AWU_DeInit(void)
80 ; 84 {
82 switch .text
83 0000 _AWU_DeInit:
87 ; 85 AWU->CSR = AWU_CSR_RESET_VALUE;
89 0000 725f50f0 clr 20720
90 ; 86 AWU->APR = AWU_APR_RESET_VALUE;
92 0004 353f50f1 mov 20721,#63
93 ; 87 AWU->TBR = AWU_TBR_RESET_VALUE;
95 0008 725f50f2 clr 20722
96 ; 88 }
99 000c 81 ret
261 ; 105 void AWU_Init(AWU_Timebase_TypeDef AWU_TimeBase)
261 ; 106 {
262 switch .text
263 000d _AWU_Init:
265 000d 88 push a
266 00000000 OFST: set 0
269 ; 109 assert_param(IS_AWU_TIMEBASE_OK(AWU_TimeBase));
271 ; 112 AWU->CSR |= AWU_CSR_AWUEN;
273 000e 721850f0 bset 20720,#4
274 ; 115 AWU->TBR &= (u8)(~AWU_TBR_AWUTB);
276 0012 c650f2 ld a,20722
277 0015 a4f0 and a,#240
278 0017 c750f2 ld 20722,a
279 ; 116 AWU->TBR |= TBR_Array[(u8)AWU_TimeBase];
281 001a 7b01 ld a,(OFST+1,sp)
282 001c 5f clrw x
283 001d 97 ld xl,a
284 001e c650f2 ld a,20722
285 0021 da0011 or a,(_TBR_Array,x)
286 0024 c750f2 ld 20722,a
287 ; 119 AWU->APR &= (u8)(~AWU_APR_APR);
289 0027 c650f1 ld a,20721
290 002a a4c0 and a,#192
291 002c c750f1 ld 20721,a
292 ; 120 AWU->APR |= APR_Array[(u8)AWU_TimeBase];
294 002f 7b01 ld a,(OFST+1,sp)
295 0031 5f clrw x
296 0032 97 ld xl,a
297 0033 c650f1 ld a,20721
298 0036 da0000 or a,(_APR_Array,x)
299 0039 c750f1 ld 20721,a
300 ; 122 }
303 003c 84 pop a
304 003d 81 ret
359 ; 137 void AWU_Cmd(FunctionalState NewState)
359 ; 138 {
360 switch .text
361 003e _AWU_Cmd:
365 ; 139 if (NewState != DISABLE)
367 003e 4d tnz a
368 003f 2706 jreq L331
369 ; 142 AWU->CSR |= AWU_CSR_AWUEN;
371 0041 721850f0 bset 20720,#4
373 0045 2004 jra L531
374 0047 L331:
375 ; 147 AWU->CSR &= (u8)(~AWU_CSR_AWUEN);
377 0047 721950f0 bres 20720,#4
378 004b L531:
379 ; 149 }
382 004b 81 ret
429 switch .const
430 0022 L41:
431 0022 000003e8 dc.l 1000
432 ; 176 void AWU_LSICalibrationConfig(u32 LSIFreqHz)
432 ; 177 {
433 switch .text
434 004c _AWU_LSICalibrationConfig:
436 004c 5206 subw sp,#6
437 00000006 OFST: set 6
440 ; 179 u16 lsifreqkhz = 0x0;
442 ; 180 u16 A = 0x0;
444 ; 183 assert_param(IS_LSI_FREQUENCY_OK(LSIFreqHz));
446 ; 185 lsifreqkhz = (u16)(LSIFreqHz / 1000); /* Converts value in kHz */
448 004e 96 ldw x,sp
449 004f 1c0009 addw x,#OFST+3
450 0052 cd0000 call c_ltor
452 0055 ae0022 ldw x,#L41
453 0058 cd0000 call c_ludv
455 005b be02 ldw x,c_lreg+2
456 005d 1f03 ldw (OFST-3,sp),x
457 ; 189 A = (u16)(lsifreqkhz >> 2U); /* Division by 4, keep integer part only */
459 005f 1e03 ldw x,(OFST-3,sp)
460 0061 54 srlw x
461 0062 54 srlw x
462 0063 1f05 ldw (OFST-1,sp),x
463 ; 191 if ((4U * A) >= ((lsifreqkhz - (4U * A)) * (1U + (2U * A))))
465 0065 1e05 ldw x,(OFST-1,sp)
466 0067 58 sllw x
467 0068 58 sllw x
468 0069 1f01 ldw (OFST-5,sp),x
469 006b 1e03 ldw x,(OFST-3,sp)
470 006d 72f001 subw x,(OFST-5,sp)
471 0070 1605 ldw y,(OFST-1,sp)
472 0072 9058 sllw y
473 0074 905c incw y
474 0076 cd0000 call c_imul
476 0079 1605 ldw y,(OFST-1,sp)
477 007b 9058 sllw y
478 007d 9058 sllw y
479 007f bf00 ldw c_x,x
480 0081 90b300 cpw y,c_x
481 0084 2509 jrult L751
482 ; 193 AWU->APR = (u8)(A - 2U);
484 0086 7b06 ld a,(OFST+0,sp)
485 0088 a002 sub a,#2
486 008a c750f1 ld 20721,a
488 008d 2006 jra L161
489 008f L751:
490 ; 197 AWU->APR = (u8)(A - 1U);
492 008f 7b06 ld a,(OFST+0,sp)
493 0091 4a dec a
494 0092 c750f1 ld 20721,a
495 0095 L161:
496 ; 201 AWU->CSR |= AWU_CSR_MR;
498 0095 721250f0 bset 20720,#1
499 ; 203 }
502 0099 5b06 addw sp,#6
503 009b 81 ret
577 switch .const
578 0026 L02:
579 0026 000186a0 dc.l 100000
580 002a L22:
581 002a 00030d41 dc.l 200001
582 ; 221 ErrorStatus AWU_AutoLSICalibration(void)
582 ; 222 {
583 switch .text
584 009c _AWU_AutoLSICalibration:
586 009c 5205 subw sp,#5
587 00000005 OFST: set 5
590 ; 224 u32 lsi_freq_hz = 0x0;
592 ; 225 u32 fmaster = 0x0;
594 ; 226 ErrorStatus status = ERROR;
596 ; 229 fmaster = CLK_GetClockFreq();
598 009e cd0000 call _CLK_GetClockFreq
600 00a1 96 ldw x,sp
601 00a2 1c0002 addw x,#OFST-3
602 00a5 cd0000 call c_rtol
604 ; 232 AWU->CSR |= AWU_CSR_MSR;
606 00a8 721050f0 bset 20720,#0
607 ; 235 lsi_freq_hz = TIM3_ComputeLsiClockFreq(fmaster);
609 00ac 1e04 ldw x,(OFST-1,sp)
610 00ae 89 pushw x
611 00af 1e04 ldw x,(OFST-1,sp)
612 00b1 89 pushw x
613 00b2 cd0000 call _TIM3_ComputeLsiClockFreq
615 00b5 5b04 addw sp,#4
616 00b7 96 ldw x,sp
617 00b8 1c0002 addw x,#OFST-3
618 00bb cd0000 call c_rtol
620 ; 238 AWU->CSR &= (u8)(~AWU_CSR_MSR);
622 00be 721150f0 bres 20720,#0
623 ; 240 if ((lsi_freq_hz >= LSI_FREQUENCY_MIN) && (lsi_freq_hz <= LSI_FREQUENCY_MAX))
625 00c2 96 ldw x,sp
626 00c3 1c0002 addw x,#OFST-3
627 00c6 cd0000 call c_ltor
629 00c9 ae0026 ldw x,#L02
630 00cc cd0000 call c_lcmp
632 00cf 2520 jrult L512
634 00d1 96 ldw x,sp
635 00d2 1c0002 addw x,#OFST-3
636 00d5 cd0000 call c_ltor
638 00d8 ae002a ldw x,#L22
639 00db cd0000 call c_lcmp
641 00de 2411 jruge L512
642 ; 243 AWU_LSICalibrationConfig(lsi_freq_hz);
644 00e0 1e04 ldw x,(OFST-1,sp)
645 00e2 89 pushw x
646 00e3 1e04 ldw x,(OFST-1,sp)
647 00e5 89 pushw x
648 00e6 cd004c call _AWU_LSICalibrationConfig
650 00e9 5b04 addw sp,#4
651 ; 244 status = SUCCESS;
653 00eb a601 ld a,#1
654 00ed 6b01 ld (OFST-4,sp),a
656 00ef 2002 jra L712
657 00f1 L512:
658 ; 248 status = ERROR;
660 00f1 0f01 clr (OFST-4,sp)
661 00f3 L712:
662 ; 251 return status;
664 00f3 7b01 ld a,(OFST-4,sp)
667 00f5 5b05 addw sp,#5
668 00f7 81 ret
691 ; 269 void AWU_IdleModeEnable(void)
691 ; 270 {
692 switch .text
693 00f8 _AWU_IdleModeEnable:
697 ; 273 AWU->CSR &= (u8)(~AWU_CSR_AWUEN);
699 00f8 721950f0 bres 20720,#4
700 ; 276 AWU->TBR = (u8)(~AWU_TBR_AWUTB);
702 00fc 35f050f2 mov 20722,#240
703 ; 278 }
706 0100 81 ret
729 ; 294 void AWU_ReInitCounter(void)
729 ; 295 {
730 switch .text
731 0101 _AWU_ReInitCounter:
735 ; 296 AWU->CSR |= AWU_CSR_MR;
737 0101 721250f0 bset 20720,#1
738 ; 297 }
741 0105 81 ret
785 ; 317 FlagStatus AWU_GetFlagStatus(void)
785 ; 318 {
786 switch .text
787 0106 _AWU_GetFlagStatus:
791 ; 319 return((FlagStatus)(((u8)(AWU->CSR & AWU_CSR_AWUF) == (u8)0x00) ? RESET : SET));
793 0106 c650f0 ld a,20720
794 0109 a520 bcp a,#32
795 010b 2603 jrne L23
796 010d 4f clr a
797 010e 2002 jra L43
798 0110 L23:
799 0110 a601 ld a,#1
800 0112 L43:
803 0112 81 ret
838 xdef _TBR_Array
839 xdef _APR_Array
840 xdef _AWU_GetFlagStatus
841 xdef _AWU_ReInitCounter
842 xdef _AWU_IdleModeEnable
843 xdef _AWU_AutoLSICalibration
844 xdef _AWU_LSICalibrationConfig
845 xdef _AWU_Cmd
846 xdef _AWU_Init
847 xdef _AWU_DeInit
848 xref _CLK_GetClockFreq
849 xref _TIM3_ComputeLsiClockFreq
850 xref.b c_lreg
851 xref.b c_x
870 xref c_lcmp
871 xref c_rtol
872 xref c_imul
873 xref c_ludv
874 xref c_ltor
875 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -