File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # flash LED #1 using inline assembler
2+ @micropython .asm_thumb
3+ def flash_led (r0 ):
4+ movw (r1 , (stm .GPIOA + stm .GPIO_BSRRL ) & 0xffff )
5+ movt (r1 , ((stm .GPIOA + stm .GPIO_BSRRL ) >> 16 ) & 0x7fff )
6+ movw (r2 , 1 << 13 )
7+ movt (r2 , 0 )
8+ movw (r3 , 0 )
9+ movt (r3 , 1 << 13 )
10+
11+ b (loop_entry )
12+
13+ label (loop1 )
14+
15+ # turn LED on
16+ str (r2 , r1 , 0 )
17+
18+ # delay for a bit
19+ movw (r4 , 5599900 & 0xffff )
20+ movt (r4 , (5599900 >> 16 ) & 0xffff )
21+ label (delay_on )
22+ subs (r4 , r4 , 1 )
23+ cmp (r4 , 0 )
24+ bgt (delay_on )
25+
26+ # turn LED off
27+ str (r3 , r1 , 0 )
28+
29+ # delay for a bit
30+ movw (r4 , 5599900 & 0xffff )
31+ movt (r4 , (5599900 >> 16 ) & 0xffff )
32+ label (delay_off )
33+ subs (r4 , r4 , 1 )
34+ cmp (r4 , 0 )
35+ bgt (delay_off )
36+
37+ # loop r0 times
38+ subs (r0 , r0 , 1 )
39+ label (loop_entry )
40+ cmp (r0 , 0 )
41+ bgt (loop1 )
42+
43+ # flash LED #1 using inline assembler
44+ # this version uses the convenience assembler operation 'movwt'
45+ @micropython .asm_thumb
46+ def flash_led_v2 (r0 ):
47+ movwt (r1 , stm .GPIOA + stm .GPIO_BSRRL )
48+ movwt (r2 , 1 << 13 )
49+ movwt (r3 , 1 << (16 + 13 ))
50+
51+ b (loop_entry )
52+
53+ label (loop1 )
54+
55+ # turn LED on
56+ str (r2 , r1 , 0 )
57+
58+ # delay for a bit
59+ movwt (r4 , 5599900 )
60+ label (delay_on )
61+ subs (r4 , r4 , 1 )
62+ cmp (r4 , 0 )
63+ bgt (delay_on )
64+
65+ # turn LED off
66+ str (r3 , r1 , 0 )
67+
68+ # delay for a bit
69+ movwt (r4 , 5599900 )
70+ label (delay_off )
71+ subs (r4 , r4 , 1 )
72+ cmp (r4 , 0 )
73+ bgt (delay_off )
74+
75+ # loop r0 times
76+ subs (r0 , r0 , 1 )
77+ label (loop_entry )
78+ cmp (r0 , 0 )
79+ bgt (loop1 )
80+
81+ flash_led_v2 (5 )
You can’t perform that action at this time.
0 commit comments