MicroPython内核开发笔记书内软件用例 :第三章-基础实验

简 介: 本文给出了 MicroPython内核开发笔记:书内嵌入实验任务 中的第三章的基本操软件用例部分内容。

关键词 MicroPython基础实验

书稿内容
目 录
Contents
基础实验
实验条件
实验内容
直接内存访问
总 结

§01 稿内容


软件用例: 基本使用方法
这部分书稿内容包括有:

  1. 基础实验:将内核编译完,下载到实验电路板之后,上电看到的信息和部分交互信息;
  2. 使用Python直接访问内存。
  • 书稿内位置:第三章后的实验用例

一、基础实验

当 MicroPython 内核编译下载到 MM32F3273 之后,可以通过以下实验初步验证硬件平台和MicroPython内核软件工作正常。

1、实验条件

按照本书中关于Thonny开发环境配置方法,将MicroPython硬件平台(比如PLUS-F3270、F3277面包板实验模块)通过USB接入电脑。并配置Thonny开发环境,使其能够连通硬件平台对应的USB串口。

2、实验内容

(1)上电REPL交互操作

MicroPython 内核通过 REPL 与用户进行交互。将 MicroPython 硬件上电后,可以观察到 Thonny 的 Shell 信息窗口显示一下内容:

MicroPython v1.16 on 2022-06-29; PLUS-F3270 with MM32F3277G9P
Type "help()" for more information.
>>> 

输入 help() 命令后,信息框给出进一步的提示信息:

MicroPython v1.16 on 2022-06-29; PLUS-F3270 with MM32F3277G9P
Type "help()" for more information.
>>> help()
Welcome to MicroPython!

For online docs please visit http://docs.micropython.org/

Control commands:
  CTRL-A        -- on a blank line, enter raw REPL mode
  CTRL-B        -- on a blank line, enter normal REPL mode
  CTRL-C        -- interrupt a running program
  CTRL-D        -- on a blank line, exit or do a soft reset
  CTRL-E        -- on a blank line, enter paste mode

For further help on a specific object, type help(obj)
>>> 

请注意,在 MicroPython 交互界面中,所有的命令都是通过函数执行的方式完成,所以 help() 命令后面带有圆括号。

在 MicroPython 中,大部分内核模块通过 machine 对象提供调用。输入一下命令,可以查看到当前 MicroPython 版本内核 machine 所提供的硬件模块内容。

扫描二维码关注公众号,回复: 14338226 查看本文章
>>> import machine
>>> dir(machine)
['__name__', 'ADC', 'DAC', 'I2C', 'PWM', 'Pin', 'SDCard', 'SPI', 'SoftI2C', 'SoftSPI', 'Timer', 'UART', 'freq', 'mem16', 'mem32', 'mem8', 'reset']
>>> 

(2)简单LED程序

下面程序是利用 machine.Pin 模块驱动 PB2,改变外部LED状态。

from machine        import Pin
import time

led = Pin('PB2', mode=Pin.OUT_PUSHPULL)

print('Test LED.')

while True:
    led(1)
    time.sleep_ms(100)
    led(0)
    time.sleep_ms(100)

运行好,在信息窗口会显示:

Test LED.

板上的 LED 将会闪烁。

▲ 图1.1.1  .LED闪烁

▲ 图1.1.1 .LED闪烁

二、直接内存访问

在 MicroPython 中可以利用 machine 中的 mem8,mem16, mem32 对 ARM内核中的内存直接访问。利用这种机制,不仅可以绕过 MicroPython 软件内核机制直接操作 ARM 中的模块,提高程序执行效率,同时也可以补充一些与芯片特殊硬件相关的功能。 这部分的内容将会在本书后面 第17章进行详细讨论。这里仅仅给出一个演示程序。

下面程序将内存中 0x0000 ~ 0x0040 中的内容打印出来。

import machine

for i in range(0x10):
    print('[%04x]: %04x'%(i<<2, machine.mem32[i<<2]))

程序执行结果为:

[0000]: 20010000
[0004]: 800042d
[0008]: 8000491
[000c]: 8000495
[0010]: 800048d
[0014]: 800048d
[0018]: 800048d
[001c]: 0000
[0020]: 0000
[0024]: 0000
[0028]: 0000
[002c]: 8000499
[0030]: 800048d
[0034]: 0000
[0038]: 800049d
[003c]: 8016225

上面结果显示了ARM程序一开始的程序代码。根据ARM程序结构,第一个字为程序的堆栈起始地址,对应着是 0x20010000 内部SRAM存储空间。

  结 ※


本文给出了 MicroPython内核开发笔记:书内嵌入实验任务 中的第三章的基本操软件用例部分内容。


■ 相关文献链接:

● 相关图表链接:

猜你喜欢

转载自blog.csdn.net/zhuoqingjoking97298/article/details/125528076