📄 stm8s_beep.ls
字号:
1 ; C Compiler for STM8 (COSMIC Software)
2 ; Generator V4.2.8 - 03 Dec 2008
3 ; Optimizer V4.2.8 - 03 Dec 2008
33 ; 64 void BEEP_DeInit(void)
33 ; 65 {
35 switch .text
36 0000 _BEEP_DeInit:
40 ; 66 BEEP->CSR = BEEP_CSR_RESET_VALUE;
42 0000 351f50f3 mov 20723,#31
43 ; 67 }
46 0004 81 ret
111 ; 83 void BEEP_Init(BEEP_Frequency_TypeDef BEEP_Frequency)
111 ; 84 {
112 switch .text
113 0005 _BEEP_Init:
115 00000000 OFST: set 0
118 ; 87 assert_param(IS_BEEP_FREQUENCY_OK(BEEP_Frequency));
120 ; 90 BEEP->CSR |= BEEP_CSR_BEEPEN;
122 0005 721a50f3 bset 20723,#5
123 0009 88 push a
124 ; 93 if ((BEEP->CSR & BEEP_CSR_BEEPDIV) == BEEP_CSR_BEEPDIV)
126 000a c650f3 ld a,20723
127 000d a41f and a,#31
128 000f a11f cp a,#31
129 0011 2610 jrne L15
130 ; 95 BEEP->CSR &= (u8)(~BEEP_CSR_BEEPDIV); /* Clear bits */
132 0013 c650f3 ld a,20723
133 0016 a4e0 and a,#224
134 0018 c750f3 ld 20723,a
135 ; 96 BEEP->CSR |= BEEP_CALIBRATION_DEFAULT;
137 001b c650f3 ld a,20723
138 001e aa0b or a,#11
139 0020 c750f3 ld 20723,a
140 0023 L15:
141 ; 100 BEEP->CSR &= (u8)(~BEEP_CSR_BEEPSEL);
143 0023 c650f3 ld a,20723
144 0026 a43f and a,#63
145 0028 c750f3 ld 20723,a
146 ; 101 BEEP->CSR |= (u8)(BEEP_Frequency);
148 002b c650f3 ld a,20723
149 002e 1a01 or a,(OFST+1,sp)
150 0030 c750f3 ld 20723,a
151 ; 103 }
154 0033 84 pop a
155 0034 81 ret
210 ; 118 void BEEP_Cmd(FunctionalState NewState)
210 ; 119 {
211 switch .text
212 0035 _BEEP_Cmd:
216 ; 120 if (NewState != DISABLE)
218 0035 4d tnz a
219 0036 2705 jreq L101
220 ; 123 BEEP->CSR |= BEEP_CSR_BEEPEN;
222 0038 721a50f3 bset 20723,#5
225 003c 81 ret
226 003d L101:
227 ; 128 BEEP->CSR &= (u8)(~BEEP_CSR_BEEPEN);
229 003d 721b50f3 bres 20723,#5
230 ; 130 }
233 0041 81 ret
286 .const: section .text
287 0000 L41:
288 0000 000003e8 dc.l 1000
289 ; 157 void BEEP_LSICalibrationConfig(u32 LSIFreqHz)
289 ; 158 {
290 switch .text
291 0042 _BEEP_LSICalibrationConfig:
293 0042 5206 subw sp,#6
294 00000006 OFST: set 6
297 ; 164 assert_param(IS_LSI_FREQUENCY_OK(LSIFreqHz));
299 ; 166 lsifreqkhz = (u16)(LSIFreqHz / 1000); /* Converts value in kHz */
301 0044 96 ldw x,sp
302 0045 1c0009 addw x,#OFST+3
303 0048 cd0000 call c_ltor
305 004b ae0000 ldw x,#L41
306 004e cd0000 call c_ludv
308 0051 be02 ldw x,c_lreg+2
309 0053 1f03 ldw (OFST-3,sp),x
310 ; 170 BEEP->CSR &= (u8)(~BEEP_CSR_BEEPDIV); /* Clear bits */
312 0055 c650f3 ld a,20723
313 0058 a4e0 and a,#224
314 005a c750f3 ld 20723,a
315 ; 172 A = (u16)(lsifreqkhz >> 3U); /* Division by 8, keep integer part only */
317 005d 54 srlw x
318 005e 54 srlw x
319 005f 54 srlw x
320 0060 1f05 ldw (OFST-1,sp),x
321 ; 174 if ((8U * A) >= ((lsifreqkhz - (8U * A)) * (1U + (2U * A))))
323 0062 58 sllw x
324 0063 58 sllw x
325 0064 58 sllw x
326 0065 1f01 ldw (OFST-5,sp),x
327 0067 1e03 ldw x,(OFST-3,sp)
328 0069 72f001 subw x,(OFST-5,sp)
329 006c 1605 ldw y,(OFST-1,sp)
330 006e 9058 sllw y
331 0070 905c incw y
332 0072 cd0000 call c_imul
334 0075 1605 ldw y,(OFST-1,sp)
335 0077 9058 sllw y
336 0079 9058 sllw y
337 007b bf01 ldw c_x+1,x
338 007d 9058 sllw y
339 007f 90b301 cpw y,c_x+1
340 0082 7b06 ld a,(OFST+0,sp)
341 0084 2504 jrult L331
342 ; 176 BEEP->CSR |= (u8)(A - 2U);
344 0086 a002 sub a,#2
346 0088 2001 jra L531
347 008a L331:
348 ; 180 BEEP->CSR |= (u8)(A - 1U);
350 008a 4a dec a
351 008b L531:
352 008b ca50f3 or a,20723
353 008e c750f3 ld 20723,a
354 ; 184 AWU->CSR |= AWU_CSR_MR;
356 ; 186 }
359 0091 5b06 addw sp,#6
360 0093 721250f0 bset 20720,#1
361 0097 81 ret
439 switch .const
440 0004 L42:
441 0004 000186a0 dc.l 100000
442 0008 L62:
443 0008 00030d41 dc.l 200001
444 ; 204 ErrorStatus BEEP_AutoLSICalibration(void)
444 ; 205 {
445 switch .text
446 0098 _BEEP_AutoLSICalibration:
448 0098 5205 subw sp,#5
449 00000005 OFST: set 5
452 ; 211 fmaster = CLK_GetClockFreq();
454 009a cd0000 call _CLK_GetClockFreq
456 009d 96 ldw x,sp
457 009e 1c0002 addw x,#OFST-3
458 00a1 cd0000 call c_rtol
460 ; 214 AWU->CSR |= AWU_CSR_MSR;
462 00a4 721050f0 bset 20720,#0
463 ; 217 lsi_freq_hz = TIM3_ComputeLsiClockFreq(fmaster);
465 00a8 1e04 ldw x,(OFST-1,sp)
466 00aa 89 pushw x
467 00ab 1e04 ldw x,(OFST-1,sp)
468 00ad 89 pushw x
469 00ae cd0000 call _TIM3_ComputeLsiClockFreq
471 00b1 5b04 addw sp,#4
472 00b3 96 ldw x,sp
473 00b4 1c0002 addw x,#OFST-3
474 00b7 cd0000 call c_rtol
476 ; 220 AWU->CSR &= (u8)(~AWU_CSR_MSR);
478 00ba 721150f0 bres 20720,#0
479 ; 222 if ((lsi_freq_hz >= LSI_FREQUENCY_MIN) && (lsi_freq_hz <= LSI_FREQUENCY_MAX))
481 00be 96 ldw x,sp
482 00bf 1c0002 addw x,#OFST-3
483 00c2 cd0000 call c_ltor
485 00c5 ae0004 ldw x,#L42
486 00c8 cd0000 call c_lcmp
488 00cb 251e jrult L571
490 00cd 96 ldw x,sp
491 00ce 1c0002 addw x,#OFST-3
492 00d1 cd0000 call c_ltor
494 00d4 ae0008 ldw x,#L62
495 00d7 cd0000 call c_lcmp
497 00da 240f jruge L571
498 ; 225 BEEP_LSICalibrationConfig(lsi_freq_hz);
500 00dc 1e04 ldw x,(OFST-1,sp)
501 00de 89 pushw x
502 00df 1e04 ldw x,(OFST-1,sp)
503 00e1 89 pushw x
504 00e2 cd0042 call _BEEP_LSICalibrationConfig
506 00e5 5b04 addw sp,#4
507 ; 226 status = SUCCESS;
509 00e7 a601 ld a,#1
511 00e9 2001 jra L771
512 00eb L571:
513 ; 230 status = ERROR;
515 00eb 4f clr a
516 00ec L771:
517 ; 233 return status;
521 00ec 5b05 addw sp,#5
522 00ee 81 ret
535 xdef _BEEP_AutoLSICalibration
536 xdef _BEEP_LSICalibrationConfig
537 xdef _BEEP_Cmd
538 xdef _BEEP_Init
539 xdef _BEEP_DeInit
540 xref _CLK_GetClockFreq
541 xref _TIM3_ComputeLsiClockFreq
542 xref.b c_lreg
543 xref.b c_x
562 xref c_lcmp
563 xref c_rtol
564 xref c_imul
565 xref c_ludv
566 xref c_ltor
567 end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -