Overview

This module deals with low-level access to CPU (and related modules) functionality, such as reading and writing memory, or enabling and disabling interrupts. It also offers access to platform specific CPU-related constants using a special macro defined in the platform's platform_conf.h file, as explained here.

Data structures, constants and types

cpu.INT_GPIOA
cpu.INT_GPIOB
.............
cpu.INT_UDMA

eLua has a mechanism that lets the user export an unlimited number of constants to the cpu module. Although in theory any kind of constant can be exposed by this module, one should only use constants related to the CPU and its subsystems (as shown above, where a number of CPU specific interrupt masks are exposed to Lua using this mechanism). To use this mechanism, just declare the PLATFORM_CPU_CONSTANTS macro in your platform's platform_conf.h file and list all your constants as part of this macro, each enclosed in a special macro called _C. For example, to get the constants listed above declare your PLATFORM_CPU_CONSTANTS macro like this:

#define PLATFORM_CPU_CONSTANTS\
  _C( INT_GPIOA ),\
  _C( INT_GPIOB ),\
  .................
  _C( INT_UDMA )

It's worth to note that adding more constants does not increas RAM usage, only Flash usage, so you can expose as much constants as you need without worrying about RAM consumption.

Functions

cpu.w32( address, data )

Writes a 32-bit word to memory.

Arguments:

  • address - the memory address.
  • data - the 32-bit data to write.

Returns: nothing.

data = cpu.r32( address )

Read a 32-bit word from memory.

Arguments: address - the memory address.

Returns: data - the 32-bit word read from memory.

cpu.w16( address, data )

Writes a 16-bit word to memory.

Arguments:

  • address - the memory address.
  • data - the 16-bit data to write.

Returns: nothing.

data = cpu.r16( address )

Reads a 16-bit word from memory.

Arguments: address - the memory address.

Returns: data - the 16-bit word read from memory.

cpu.w8( address, data )

Writes a byte to memory.

Arguments:

  • address - the memory address.
  • data - the byte to write.

Returns: nothing.

data = cpu.r8( address )

Reads a byte from memory.

Arguments: address - the memory address

Returns: data - the byte read from memory.

cpu.cli()

Disable CPU interrupts.

Arguments: none.

Returns: nothing.

cpu.sei()

Enable CPU interrupts.

Arguments: none.

Returns: nothing.

clock = cpu.clock()

Get the CPU core frequency.

Arguments: none.

Returns: clock - the CPU clock (in Hertz).