|
@@ -0,0 +1,119 @@
|
|
|
|
|
+# MicroPython port for RT-Thread
|
|
|
|
|
+
|
|
|
|
|
+MicroPython - a lean and efficient Python implementation for microcontrollers and constrained systems https://micropython.org
|
|
|
|
|
+
|
|
|
|
|
+Let's get started by RT-Thread……
|
|
|
|
|
+
|
|
|
|
|
+## Run MicroPython by Finsh/MSH
|
|
|
|
|
+
|
|
|
|
|
+- input `pyhton` command will goto the MicroPython REPL(Read-Evaluate-Print-Loop)
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+msh />python
|
|
|
|
|
+
|
|
|
|
|
+MicroPython v1.9.3-6-g1742ab26-dirty on 2017-11-04; RT-Thread Board with stm32f4
|
|
|
|
|
+>>>
|
|
|
|
|
+>>> print('Hello World')
|
|
|
|
|
+Hello World
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+- Now you can iuput and run the python code on the terminal
|
|
|
|
|
+- If you want exit the python REPL. Please press `CTRL + D` .
|
|
|
|
|
+
|
|
|
|
|
+## Supported modules
|
|
|
|
|
+
|
|
|
|
|
+### RT-Thread
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+>>> import rtthread
|
|
|
|
|
+>>>
|
|
|
|
|
+>>> rtthread.is_preempt_thread() # determine if code is running in a preemptible thread
|
|
|
|
|
+True
|
|
|
|
|
+>>> rtthread.current_tid() # current thread id
|
|
|
|
|
+268464956
|
|
|
|
|
+>>> rtthread.stacks_analyze() # show thread information
|
|
|
|
|
+thread pri status sp stack size max used left tick error
|
|
|
|
|
+---------- --- ------- ---------- ---------- ------ ---------- ---
|
|
|
|
|
+elog_async 31 suspend 0x000000a8 0x00000400 26% 0x00000003 000
|
|
|
|
|
+tshell 20 ready 0x00000260 0x00001000 39% 0x00000003 000
|
|
|
|
|
+tidle 31 ready 0x00000070 0x00000100 51% 0x0000000f 000
|
|
|
|
|
+SysMonitor 30 suspend 0x000000a4 0x00000200 32% 0x00000005 000
|
|
|
|
|
+timer 4 suspend 0x00000080 0x00000200 25% 0x00000009 000
|
|
|
|
|
+>>>
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### Delay and timing
|
|
|
|
|
+
|
|
|
|
|
+Use the [`time`](http://docs.micropython.org/en/latest/pyboard/library/utime.html#module-utime) module:
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+>>> import time
|
|
|
|
|
+>>>
|
|
|
|
|
+>>> time.sleep(1) # sleep for 1 second
|
|
|
|
|
+>>> time.sleep_ms(500) # sleep for 500 milliseconds
|
|
|
|
|
+>>> time.sleep_us(10) # sleep for 10 microseconds
|
|
|
|
|
+>>> start = time.ticks_ms() # get value of millisecond counter
|
|
|
|
|
+>>> delta = time.ticks_diff(time.ticks_ms(), start) # compute time difference
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### pyb - functions related to the board
|
|
|
|
|
+
|
|
|
|
|
+See [pyb](http://docs.micropython.org/en/latest/pyboard/library/pyb.html).
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+>>> import pyb
|
|
|
|
|
+>>>
|
|
|
|
|
+>>> pyb.info() # show information about the board
|
|
|
|
|
+---------------------------------------------
|
|
|
|
|
+RT-Thread
|
|
|
|
|
+---------------------------------------------
|
|
|
|
|
+total memory: 131048
|
|
|
|
|
+used memory : 4920
|
|
|
|
|
+maximum allocated memory: 5836
|
|
|
|
|
+thread pri status sp stack size max used left tick error
|
|
|
|
|
+---------- --- ------- ---------- ---------- ------ ---------- ---
|
|
|
|
|
+elog_async 31 suspend 0x000000a8 0x00000400 26% 0x00000003 000
|
|
|
|
|
+tshell 20 ready 0x0000019c 0x00001000 39% 0x00000006 000
|
|
|
|
|
+tidle 31 ready 0x0000006c 0x00000100 50% 0x0000000b 000
|
|
|
|
|
+SysMonitor 30 suspend 0x000000a8 0x00000200 32% 0x00000005 000
|
|
|
|
|
+timer 4 suspend 0x0000007c 0x00000200 24% 0x00000009 000
|
|
|
|
|
+---------------------------------------------
|
|
|
|
|
+qstr:
|
|
|
|
|
+ n_pool=0
|
|
|
|
|
+ n_qstr=0
|
|
|
|
|
+ n_str_data_bytes=0
|
|
|
|
|
+ n_total_bytes=0
|
|
|
|
|
+---------------------------------------------
|
|
|
|
|
+GC:
|
|
|
|
|
+ 16064 total
|
|
|
|
|
+ 464 : 15600
|
|
|
|
|
+ 1=14 2=6 m=3
|
|
|
|
|
+>>> pyb.enable_irq() # enable interrupt
|
|
|
|
|
+>>> pyb.disable_irq() # disable interrupt, WARNING: this operation is dangerous
|
|
|
|
|
+>>> time_start = pyb.millis() # return the number of milliseconds
|
|
|
|
|
+>>> pyb.elapsed_millis(time_start) # calculate the elapsed time of milliseconds
|
|
|
|
|
+2449
|
|
|
|
|
+>>> time_start = pyb.micros() # return the number of microseconds
|
|
|
|
|
+>>> pyb.elapsed_micros(time_start) # calculate the elapsed time of microseconds
|
|
|
|
|
+1769000
|
|
|
|
|
+>>> pyb.delay(1000) # delay milliseconds
|
|
|
|
|
+>>> pyb.udelay(1000*1000) # delay microseconds
|
|
|
|
|
+>>> pyb.hard_reset() # hard reset, like push RESET button
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+#### Pins and GPIO
|
|
|
|
|
+
|
|
|
|
|
+See [pyb.Pin](http://docs.micropython.org/en/latest/pyboard/library/pyb.Pin.html#pyb-pin).
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+>>> from pyb import Pin
|
|
|
|
|
+>>>
|
|
|
|
|
+>>> p_out = Pin(("X1", 33), Pin.OUT_PP)
|
|
|
|
|
+>>> p_out.value(1) # set io high
|
|
|
|
|
+>>> p_out.value(0) # set io low
|
|
|
|
|
+>>>
|
|
|
|
|
+>>> p_in = Pin(("X2", 32), Pin.IN, Pin.PULL_UP)
|
|
|
|
|
+>>> p_in.value() # get value, 0 or 1
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+### Coming soon
|