v1 Stable

Dependencies:   F401RE-USBHost USBHostXpad mbed

Revision:
0:eb2258e8c4b5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/my_wait_us_asm.s	Wed Oct 26 02:02:09 2016 +0000
@@ -0,0 +1,197 @@
+    AREA asm_func, CODE, READONLY
+    EXPORT my_wait_us_asm
+    
+my_wait_us_asm
+
+WAIT_1_US
+    ; According to ARM spec, NOPs may be removed by the assembler, so they
+    ; are not a reliable way to eat up time. Instead we simply do empty adds
+    ; to eat up clock cycles.
+    
+    ; My board operates at 180 MHz. Assuming each instruction is 1 clock cycle,
+    ; 180 instructions should take 1 microsecond
+    
+    ADD     R1, R2, #0      ; clock cycle 1
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 10
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 20
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 20
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 30
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 50
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 60
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 70
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 80
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 90
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 100
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 110
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 120
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 130
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 140
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 150
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 160
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 170
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0
+    ADD     R1, R2, #0      ; clock cycle 178
+    
+    SUBS    R0, R0, #1      ; clock cycle 179
+    BGT     WAIT_1_US       ; clock cycle 180
+    
+    BX      LR      ; return
+    END        
\ No newline at end of file