1
0
mirror of https://github.com/elua/elua.git synced 2025-01-25 01:02:54 +08:00

new, better doc generation tool, now support semi-automatic generation of links to function names/structures in the navtree, also added support for multiple languages

This commit is contained in:
James Snyder 2009-06-29 16:42:24 +00:00
parent 4873051483
commit 841ba4006e
16 changed files with 1552 additions and 1132 deletions

View File

@ -1,25 +1,31 @@
-- eLua platform interface - CPU
-- Title
title = "eLua platform interface - CPU"
-- Overview
overview = "This part of the platform interface groups functions related to the CPU and its functional modules (interrupt controller, memory controller and others)."
-- Functions
funcs =
data_en =
{
{ sig = "void platform_cpu_enable_interrupts();",
desc = "Enable global interrupt on the CPU."
},
-- Title
title = "eLua platform interface - CPU",
{ sig = "void platform_cpu_disable_interrupts();",
desc = "Disable global interrupts on the CPU."
},
-- Menu name
menu_name = "CPU",
{ sig = "u32 platform_cpu_get_frequency();",
desc = "Get the CPU frequency.",
ret = "the CPU $core$ frequency (in hertz)."
},
-- Overview
overview = "This part of the platform interface groups functions related to the CPU and its functional modules (interrupt controller, memory controller and others).",
-- Functions
funcs =
{
{ sig = "void #platform_cpu_enable_interrupts#();",
desc = "Enable global interrupt on the CPU."
},
{ sig = "void #platform_cpu_disable_interrupts#();",
desc = "Disable global interrupts on the CPU."
},
{ sig = "u32 #platform_cpu_get_frequency#();",
desc = "Get the CPU frequency.",
ret = "the CPU $core$ frequency (in hertz)."
},
}
}

View File

@ -1,92 +1,98 @@
-- eLua platform interface - Ethernet support
-- Title
title = "eLua platform interface - Ethernet support"
-- Overview
overview = [[<font color="red">$NOTE$: TCP/IP support is experimental in eLua. Although functional, it's quite incomplete at the moment.</font></p>
<p>This part of the platform interface groups functions related to accessing the Ethernet interface (internal or external) of the CPU. Note that unlike the
other parts of the platform interface this one is dedicated for TCP/IP support and thus it does not correspond directly to an eLua module, although
the @##@net module@ is implemented with functions that rely on this part of the platform interface. Currently only
the ^http://www.sics.se/~~adam/uip/index.php/Main_Page^uIP^ TCP/IP stack is supported by eLua.</p>
<p>uIP is implemented in eLua using two hardware interrupts (that should be available on your platform): the Ethernet receive interrupt (to handle
incoming packets) and a timer interrupt (timers are used internally by uIP). However, the uIP main loop is only called from the Ethernet interrupt handler
in eLua, so in order to acknowledge the timer interrupt (as well as to provide some optimizations) a function that "forces" an Ethernet interrupt
must also be provided by the platform interface (see @#force@here@ for details).</p>
<p>To put everything together, part of the Ethernet platform interface for the $m3s$ platform is given below:</p>
~u32 platform_eth_get_elapsed_time()
data_en =
{
if( eth_timer_fired )
-- Title
title = "eLua platform interface - Ethernet support",
-- Menu name
menu_name = "Ethernet",
-- Overview
overview = [[<font color="red">$NOTE$: TCP/IP support is experimental in eLua. Although functional, it's quite incomplete at the moment.</font></p>
<p>This part of the platform interface groups functions related to accessing the Ethernet interface (internal or external) of the CPU. Note that unlike the
other parts of the platform interface this one is dedicated for TCP/IP support and thus it does not correspond directly to an eLua module, although
the @##@net module@ is implemented with functions that rely on this part of the platform interface. Currently only
the ^http://www.sics.se/~~adam/uip/index.php/Main_Page^uIP^ TCP/IP stack is supported by eLua.</p>
<p>uIP is implemented in eLua using two hardware interrupts (that should be available on your platform): the Ethernet receive interrupt (to handle
incoming packets) and a timer interrupt (timers are used internally by uIP). However, the uIP main loop is only called from the Ethernet interrupt handler
in eLua, so in order to acknowledge the timer interrupt (as well as to provide some optimizations) a function that "forces" an Ethernet interrupt
must also be provided by the platform interface (see @#platform_eth_force_interrupt@here@ for details).</p>
<p>To put everything together, part of the Ethernet platform interface for the $m3s$ platform is given below:</p>
~u32 platform_eth_get_elapsed_time()
{
eth_timer_fired = 0;
return SYSTICKMS;
}
else
return 0;
}
void SysTickIntHandler()
{
// Handle virtual timers
cmn_virtual_timer_cb();
// Indicate that a SysTick interrupt has occurred.
eth_timer_fired = 1;
// Generate a fake Ethernet interrupt. This will perform the actual work
// of incrementing the timers and taking the appropriate actions.
<b>platform_eth_force_interrupt();</b>
}
void EthernetIntHandler()
{
u32 temp;
// Read and Clear the interrupt.
temp = EthernetIntStatus( ETH_BASE, false );
EthernetIntClear( ETH_BASE, temp );
// Call the UIP main loop
<b>elua_uip_mainloop();</b>
}~<p>]]
-- Functions
funcs =
{
{ sig = "void platform_eth_send_packet( const void* src, u32 size )",
desc = "Sends an Ethernet packet to the network",
args =
if( eth_timer_fired )
{
{ name = "src", desc = "start address of the Ethernet packet" },
{ name = "size", desc = "size of the Ethernet packet" }
},
},
{ sig = "u32 platform_eth_get_packet_nb( void* buf, u32 maxlen );",
desc = "Non-blocking read of an Ethernet packet from the network",
args =
{
{ name = "buf", desc = "start address of the receive buffer" },
{ name = "maxlen", desc = "maximum length of the Ethernet packet" },
},
ret =
{
"the size of the read packet or 0 if no packet is available"
eth_timer_fired = 0;
return SYSTICKMS;
}
},
else
return 0;
}
{ sig = "void platform_eth_force_interrupt();",
link = "force",
desc = "Force the Ethernet interrupt on the platform (see @#overview@overview@ above for details)",
},
void SysTickIntHandler()
{
// Handle virtual timers
cmn_virtual_timer_cb();
{ sig = "u32 platform_eth_get_elapsed_time();",
desc = [[Get the elapsed time (in ms) since the last invocation of the uIP main loop ($elua_uip_mainloop$, from which this function is called). See @#overview@overview@ for a possible
implementation of this function).]],
ret =
{
"0 if the uIP loop was called because of Ethernet activity, not because a timer expired",
"the Ethernet timer perios in ms (which indicates timer activity)"
// Indicate that a SysTick interrupt has occurred.
eth_timer_fired = 1;
// Generate a fake Ethernet interrupt. This will perform the actual work
// of incrementing the timers and taking the appropriate actions.
<b>platform_eth_force_interrupt();</b>
}
void EthernetIntHandler()
{
u32 temp;
// Read and Clear the interrupt.
temp = EthernetIntStatus( ETH_BASE, false );
EthernetIntClear( ETH_BASE, temp );
// Call the UIP main loop
<b>elua_uip_mainloop();</b>
}~<p>]],
-- Functions
funcs =
{
{ sig = "void #platform_eth_send_packet#( const void* src, u32 size )",
desc = "Sends an Ethernet packet to the network",
args =
{
{ name = "src", desc = "start address of the Ethernet packet" },
{ name = "size", desc = "size of the Ethernet packet" }
},
},
{ sig = "u32 #platform_eth_get_packet_nb#( void* buf, u32 maxlen );",
desc = "Non-blocking read of an Ethernet packet from the network",
args =
{
{ name = "buf", desc = "start address of the receive buffer" },
{ name = "maxlen", desc = "maximum length of the Ethernet packet" },
},
ret =
{
"the size of the read packet or 0 if no packet is available"
}
},
{ sig = "void #platform_eth_force_interrupt#();",
desc = "Force the Ethernet interrupt on the platform (see @#overview@overview@ above for details)",
},
{ sig = "u32 #platform_eth_get_elapsed_time#();",
desc = [[Get the elapsed time (in ms) since the last invocation of the uIP main loop ($elua_uip_mainloop$, from which this function is called). See @#overview@overview@ for a possible
implementation of this function).]],
ret =
{
"0 if the uIP loop was called because of Ethernet activity, not because a timer expired",
"the Ethernet timer perios in ms (which indicates timer activity)"
},
}
}
}

View File

@ -1,86 +1,92 @@
-- eLua platform interface - low level functions
-- Title
title = "eLua platform interface - low level functions"
-- Overview
overview = [[
This part of the platform interface deals contains a small set of "low level functions" that are used to "couple" the eLua port with the
target system. No eLua module exposes these functions, as they are strictly used for porting and do not provide any other functionality.
]]
-- Data structures, constants and types
structures =
data_en =
{
{ text = [[// Error / status codes
-- Title
title = "eLua platform interface - low level functions",
-- Menu title
menu_name = "Low-level",
-- Overview
overview = [[
This part of the platform interface deals contains a small set of "low level functions" that are used to "couple" the eLua port with the
target system. No eLua module exposes these functions, as they are strictly used for porting and do not provide any other functionality.
]],
-- Data structures, constants and types
structures =
{
{ text = [[// Error / status codes
enum
{
PLATFORM_ERR,
PLATFORM_OK,
PLATFORM_UNDERFLOW = -1
};]],
desc = [[
This enum defines the possible return values of the @#init@platform_init@ function (although only $PLATFORM_ERR$ and $PLATFORM_OK$ should be
returned from $platform_init$).
]]
name = "Status codes",
desc = [[
This enum defines the possible return values of the @#platform_init@platform_init@ function (although only $PLATFORM_ERR$ and $PLATFORM_OK$ should be
returned from $platform_init$).
]]
},
},
}
-- Functions
funcs =
{
{ sig = "int platform_init();",
link = "init",
desc = [[This is the platform-specific initialization code. It is the first function called from %main()% ($src/main.c$) and it should handle
all the platform initialization sequence, included (but not limited to) setting up the proper clocks, initializing the interrupt subsystem,
setting up various peripherals and so on. Although platform specific, this function has a common part named %cmn_platform_init% (implemented
in $src/common.c$) that initializes terminal support over serial connections, as well as the XMODEM and TERM components
(see @building.html@here@ for details). If you need any of these, you need to call %cmn_platform_init% at the end of your
%platform_init% function, $after$ initializing all the peripherals (in particular the UART used for the serial connection).<br>
An implementation skeleton for this function is given below:</p>
~int platform_init()
{
............. // perform all your initializations here
cmn_platform_init(); // call the common initialiation code
return PLATFORM_OK;
}~<p>]],
ret =
{
"$PLATFORM_OK$ for success",
[[$PLATFORM_ERR$ if an error occured. If $PLATFORM_ERR$ is returned, %main% will block in an infinite loop right
after calling this function, so you should return $PLATFORM_ERR$ only for serious errors]],
},
},
{ sig = "void* platform_get_last_free_ram( unsigned id );",
desc = [[Returns the start address of a free RAM area in the system (this is the RAM that will be used by any part of the code that uses malloc(),
a good example being the Lua interpreter itself). There can be multiple free RAM areas in the system (for example the internal MCU RAM and external
RAM chips). Implemented in $src/common.c$, it uses the the $MEM_START_ADDRESS$ macro that must be defined in the platform's $platform_conf.h$
file (see @arch_overview.html#platforms@here@ for details). This macro must be defined as an array that contains all the start addresses of
free RAM in the system. For internal RAM, this is generally handled by a linker exported symbol (named $end$ in many eLua ports) which
points to the firs RAM address after all the constant and non-constant program data. An example is given below:</p>
~#define MEM_START_ADDRESS { ( void* )end }~<p>]],
args =
{
{ name = "id", desc = "the identifier of the RAM area" },
},
ret = "the start address of the given memory area",
},
{ sig = "void* platform_get_last_free_ram( unsigned id );",
desc = [[Returns the last address of a free RAM area in the system (this is the RAM that will be used by any part of the code that uses malloc(),
a good example being the Lua interpreter itself). There can be multiple free RAM areas in the system (for example the internal MCU RAM and external
RAM chips). Implemented in $src/common.c$, it uses the the $MEM_END_ADDRESS$ macro that must be defined in the platform's $platform_conf.h$
file (see @arch_overview.html#platforms@here@ for details). This macro must be defined as an array that contains all the end addresses of
free RAM in the system. For internal RAM, this is generally set as the last RAM memory address minus the size of the system stack(s). An example is
given below:</p>
~#define MEM_END_ADDRESS { ( void* )( SRAM_BASE + 0x10000 - STACK_SIZE_TOTAL - 1 ) }~<p>]],
args =
{
{ name = "id", desc = "the identifier of the RAM area" },
},
ret = "the end address of the given memory area",
},
-- Functions
funcs =
{
{ sig = "int #platform_init#();",
desc = [[This is the platform-specific initialization code. It is the first function called from %main()% ($src/main.c$) and it should handle
all the platform initialization sequence, included (but not limited to) setting up the proper clocks, initializing the interrupt subsystem,
setting up various peripherals and so on. Although platform specific, this function has a common part named %cmn_platform_init% (implemented
in $src/common.c$) that initializes terminal support over serial connections, as well as the XMODEM and TERM components
(see @building.html@here@ for details). If you need any of these, you need to call %cmn_platform_init% at the end of your
%platform_init% function, $after$ initializing all the peripherals (in particular the UART used for the serial connection).<br>
An implementation skeleton for this function is given below:</p>
~int platform_init()
{
............. // perform all your initializations here
cmn_platform_init(); // call the common initialiation code
return PLATFORM_OK;
}~<p>]],
ret =
{
"$PLATFORM_OK$ for success",
[[$PLATFORM_ERR$ if an error occured. If $PLATFORM_ERR$ is returned, %main% will block in an infinite loop right
after calling this function, so you should return $PLATFORM_ERR$ only for serious errors]],
},
},
{ sig = "void* #platform_get_last_free_ram#( unsigned id );",
desc = [[Returns the start address of a free RAM area in the system (this is the RAM that will be used by any part of the code that uses malloc(),
a good example being the Lua interpreter itself). There can be multiple free RAM areas in the system (for example the internal MCU RAM and external
RAM chips). Implemented in $src/common.c$, it uses the the $MEM_START_ADDRESS$ macro that must be defined in the platform's $platform_conf.h$
file (see @arch_overview.html#platforms@here@ for details). This macro must be defined as an array that contains all the start addresses of
free RAM in the system. For internal RAM, this is generally handled by a linker exported symbol (named $end$ in many eLua ports) which
points to the firs RAM address after all the constant and non-constant program data. An example is given below:</p>
~#define MEM_START_ADDRESS { ( void* )end }~<p>]],
args =
{
{ name = "id", desc = "the identifier of the RAM area" },
},
ret = "the start address of the given memory area",
},
{ sig = "void* #platform_get_last_free_ram#( unsigned id );",
desc = [[Returns the last address of a free RAM area in the system (this is the RAM that will be used by any part of the code that uses malloc(),
a good example being the Lua interpreter itself). There can be multiple free RAM areas in the system (for example the internal MCU RAM and external
RAM chips). Implemented in $src/common.c$, it uses the the $MEM_END_ADDRESS$ macro that must be defined in the platform's $platform_conf.h$
file (see @arch_overview.html#platforms@here@ for details). This macro must be defined as an array that contains all the end addresses of
free RAM in the system. For internal RAM, this is generally set as the last RAM memory address minus the size of the system stack(s). An example is
given below:</p>
~#define MEM_END_ADDRESS { ( void* )( SRAM_BASE + 0x10000 - STACK_SIZE_TOTAL - 1 ) }~<p>]],
args =
{
{ name = "id", desc = "the identifier of the RAM area" },
},
ret = "the end address of the given memory area",
},
}
}

View File

@ -1,15 +1,20 @@
-- eLua platform interface - PIO
-- Title
title = "eLua platform interface - PIO"
-- Overview
overview = "This part of the platform interface deals with PIO (Programmable Input Output) operations, thus letting the user access the low level input/output facilities of the host MCU."
-- Data structures, constants and types
structures =
data_en =
{
{ text = [[enum
-- Title
title = "eLua platform interface - PIO",
-- Menu name
menu_name = "PIO",
-- OverviewA
overview = "This part of the platform interface deals with PIO (Programmable Input Output) operations, thus letting the user access the low level input/output facilities of the host MCU.",
-- Data structures, constants and types
structures =
{
{ text = [[enum
{
// Pin operations
PLATFORM_IO_PIN_SET, $// Set the pin to 1$
@ -26,81 +31,83 @@ structures =
PLATFORM_IO_PORT_DIR_INPUT, $// Set port as input$
PLATFORM_IO_PORT_DIR_OUTPUT $// Set port as output$
}; ]],
link = "enumop",
desc = [[These are the operations that can be executed by the PIO subsystem on both ports and pins. They are given as arguments to the @#platform_pio_op@platform_pio_op@ function
shown below. ##TODO: document read in/read out if we keep that]]
name = "PIO operations",
desc = [[These are the operations that can be executed by the PIO subsystem on both ports and pins. They are given as arguments to the @#platform_pio_op@platform_pio_op@ function
shown below. ##TODO: document read in/read out if we keep that]]
},
{ text = "typedef u32 pio_type;",
name = "PIO data type",
desc = [[This is the type used for the actual I/O operations. Currently defined as an unsigned 32-bit type, thus no port can have more than 32 pins. If this happens, it is possible to split
it in two or more parts and adding the new parts as "virtual ports" (logical ports that don't have a direct hardware equivalent). The "virtual port" technique is used in the AVR32 backend.]]
}
},
{ text = "typedef u32 pio_type;",
desc = [[This is the type used for the actual I/O operations. Currently defined as an unsigned 32-bit type, thus no port can have more than 32 pins. If this happens, it is possible to split
it in two or more parts and adding the new parts as "virtual ports" (logical ports that don't have a direct hardware equivalent). The "virtual port" technique is used in the AVR32 backend.]]
-- Functions
funcs =
{
{ sig = "int #platform_pio_has_port#( unsigned port );",
desc = [[Checks if the platform has the hardware port specified as argument. Implemented in %src/common.c%, it uses the $NUM_PIO$ macro that must be defined in the
platform's $platform_conf.h$ file (see @arch_overview.html#platforms@here@ for details). For example:</p>
~#define NUM_PIO 4 $// The platform has 4 hardware PIO ports$~<p> ]],
args =
{
{ name = "port", desc = "the port ID" },
},
ret = "1 if the port exists, 0 otherwise",
},
{ sig = "int #platform_pio_has_pin#( unsigned port, unsigned pin );",
desc = [[Checks if the platform has the hardware port and pin specified as arguments. Implemented in %src/common.c%, it uses the $NUM_PIO$ macro to check the validity
of the port and the $PIO_PINS_PER_PORT$ or $PIO_PIN_ARRAY$ macros to check the validity of the pin. The macros must be defined in the platform's $platform_conf.h$ file
(see @arch_overview.html#platforms@here@ for details).
<ul>
<li>use $PIO_PINS_PER_PORT$ when all the ports of the MCU have the same number of pins. For example:
~#define PIO_PINS_PER_PORT 8 $// Each port has 8 pins$~</li>
<li>use $PIO_PIN_ARRAY$ when different ports of the MCU have different number of pins. For example:
~#define PIO_PIN_ARRAY { 4, 4, 2, 6 } $// Port 0 has 4 pins, port 1 has 4 pins, port 2 has 2 pins, port 3 has 6 pins$~</li>
</ul>]],
args =
{
{ name = "port", desc = "the port ID" },
{ name = "pin", desc = "the pin number" },
},
ret = "1 if the pin exists, 0 otherwise",
},
{ sig = "const char* #platform_pio_get_prefix#( unsigned port );",
desc = [[Get the port prefix. Used to establish if the port notation uses numbers (P0, P1, P2...) or letters (PA, PB, PC...). Implemented in %src/common.c%, it uses the
$PIO_PREFIX$ macro that must be defined in the platform's $platform_conf.h$ file (see @arch_overview.html#platforms@here@ for details). The value of this macro can be either '0' (for
numeric notation) or 'A' (for letter notation). For example:
~#define PIO_PREFIX 'A' $// Use PA, PB, PC ... for port notation$~<p>]],
args =
{
{ name = "port", desc = "the port ID" }
},
ret = "the port prefix (either '0' or 'A')",
},
{ sig = "pio_type #platform_pio_op#( unsigned port, pio_type pinmask, int op );",
link = "platform_pio_op",
desc = "This is the function that does the actual I/O work. It is implemented in the platform's own porting layer (%platform.c%, see @arch_overview.html#ports@here@ for more details).",
args =
{
{ name = "port", desc = "the port number" },
{ name = "pinmask", desc = [[has different meanings:
<ul>
<li>for $pin operations$ it is the mask of pins in the operation. Each pin on which the function action is executed is encoded with an 1 in the corresponding bit position
of the pinmask.</li>
<li>for $port operations$ it is only meaningful for $PLATFORM_IO_PORT_SET_VALUE$ and in this case it specifies the new value of the port.</li>
</ul>]]},
{ name = "op", desc = "specifies the I/O operations, as specified @#pio_operations@here@." },
},
ret =
{
"an actual value for $PLATFORM_IO_PIN_GET$ (0 or 1) and $PLATFORM_IO_PORT_GET$ (the value of the port).",
[[an error flag for all the other operations: 1 if the operation succeeded, 0 otherwise. For example, a platform that doesn't have pulldowns on its ports will always return a 0
when caled with the $PLATFORM_IO_PIN_PULLDOWN$ operation.]]
}
},
}
}
-- Functions
funcs =
{
{ sig = "int platform_pio_has_port( unsigned port );",
desc = [[Checks if the platform has the hardware port specified as argument. Implemented in %src/common.c%, it uses the $NUM_PIO$ macro that must be defined in the
platform's $platform_conf.h$ file (see @arch_overview.html#platforms@here@ for details). For example:</p>
~#define NUM_PIO 4 $// The platform has 4 hardware PIO ports$~<p> ]],
args =
{
{ name = "port", desc = "the port ID" },
},
ret = "1 if the port exists, 0 otherwise",
},
{ sig = "int platform_pio_has_pin( unsigned port, unsigned pin );",
desc = [[Checks if the platform has the hardware port and pin specified as arguments. Implemented in %src/common.c%, it uses the $NUM_PIO$ macro to check the validity
of the port and the $PIO_PINS_PER_PORT$ or $PIO_PIN_ARRAY$ macros to check the validity of the pin. The macros must be defined in the platform's $platform_conf.h$ file
(see @arch_overview.html#platforms@here@ for details).
<ul>
<li>use $PIO_PINS_PER_PORT$ when all the ports of the MCU have the same number of pins. For example:
~#define PIO_PINS_PER_PORT 8 $// Each port has 8 pins$~</li>
<li>use $PIO_PIN_ARRAY$ when different ports of the MCU have different number of pins. For example:
~#define PIO_PIN_ARRAY { 4, 4, 2, 6 } $// Port 0 has 4 pins, port 1 has 4 pins, port 2 has 2 pins, port 3 has 6 pins$~</li>
</ul>]],
args =
{
{ name = "port", desc = "the port ID" },
{ name = "pin", desc = "the pin number" },
},
ret = "1 if the pin exists, 0 otherwise",
},
{ sig = "const char* platform_pio_get_prefix( unsigned port );",
desc = [[Get the port prefix. Used to establish if the port notation uses numbers (P0, P1, P2...) or letters (PA, PB, PC...). Implemented in %src/common.c%, it uses the
$PIO_PREFIX$ macro that must be defined in the platform's $platform_conf.h$ file (see @arch_overview.html#platforms@here@ for details). The value of this macro can be either '0' (for
numeric notation) or 'A' (for letter notation). For example:
~#define PIO_PREFIX 'A' $// Use PA, PB, PC ... for port notation$~<p>]],
args =
{
{ name = "port", desc = "the port ID" }
},
ret = "the port prefix (either '0' or 'A')",
},
{ sig = "pio_type platform_pio_op( unsigned port, pio_type pinmask, int op );",
link = "platform_pio_op",
desc = "This is the function that does the actual I/O work. It is implemented in the platform's own porting layer (%platform.c%, see @arch_overview.html#ports@here@ for more details).",
args =
{
{ name = "port", desc = "the port number" },
{ name = "pinmask", desc = [[has different meanings:
<ul>
<li>for $pin operations$ it is the mask of pins in the operation. Each pin on which the function action is executed is encoded with an 1 in the corresponding bit position
of the pinmask.</li>
<li>for $port operations$ it is only meaningful for $PLATFORM_IO_PORT_SET_VALUE$ and in this case it specifies the new value of the port.</li>
</ul>]]},
{ name = "op", desc = "specifies the I/O operations, as specified @#enumop@here@." },
},
ret =
{
"an actual value for $PLATFORM_IO_PIN_GET$ (0 or 1) and $PLATFORM_IO_PORT_GET$ (the value of the port).",
[[an error flag for all the other operations: 1 if the operation succeeded, 0 otherwise. For example, a platform that doesn't have pulldowns on its ports will always return a 0
when caled with the $PLATFORM_IO_PIN_PULLDOWN$ operation.]]
}
},
}

View File

@ -1,15 +1,20 @@
-- eLua platform interface - PWM
-- Title
title = "eLua platform interface - PWM"
-- Overview
overview = "This part of the platform interface groups functions related to the PWM channel(s) of the MCU."
-- Data structures, constants and types
structures =
data_en =
{
{ text = [[// PWM operations
-- Title
title = "eLua platform interface - PWM",
-- Menu name
menu_name = "PWM",
-- Overview
overview = "This part of the platform interface groups functions related to the PWM channel(s) of the MCU.",
-- Data structures, constants and types
structures =
{
{ text = [[// PWM operations
enum
{
PLATFORM_PWM_OP_START,
@ -17,58 +22,58 @@ enum
PLATFORM_PWM_OP_SET_CLOCK,
PLATFORM_PWM_OP_GET_CLOCK
} ]],
link = "opval",
desc = "This enum lists all the operations that can be executed on a given PWM channel."
},
}
-- Functions
funcs =
{
{ sig = "int platform_pwm_exists( unsigned id );",
desc = [[Checks if the platform has the PWM channel specified as argument. Implemented in %src/common.c%, it uses the $NUM_PWM$ macro that must be defined in the
platform's $platform_conf.h$ file (see @arch_overview.html#platforms@here@ for details). For example:</p>
~#define NUM_PWM 4 $// The platform has 4 PWM channels$~<p> ]],
args =
{
{ name = "id", desc = "PWM channel ID" },
name = "PWM operations",
desc = "This enum lists all the operations that can be executed on a given PWM channel."
},
ret = "1 if the specified PWM channel exists, 0 otherwise"
},
{ sig = "u32 platform_pwm_setup( unsigned id, u32 frequency, unsigned duty );",
link = "platform_pwm_setup",
desc = "Sets up a PWM channel",
args =
{
{ name = "id", desc = "PWM channel ID" },
{ name = "frequency", desc = "PWM channel frequency (in hertz)" },
{ name = "duty", desc = "PWM channel duty cycle, specified as percent (from 0 to 100). Note that some platform don't allow the full 0%-100% duty cycle" }
-- Functions
funcs =
{
{ sig = "int #platform_pwm_exists#( unsigned id );",
desc = [[Checks if the platform has the PWM channel specified as argument. Implemented in %src/common.c%, it uses the $NUM_PWM$ macro that must be defined in the
platform's $platform_conf.h$ file (see @arch_overview.html#platforms@here@ for details). For example:</p>
~#define NUM_PWM 4 $// The platform has 4 PWM channels$~<p> ]],
args =
{
{ name = "id", desc = "PWM channel ID" },
},
ret = "1 if the specified PWM channel exists, 0 otherwise"
},
ret = "The actual frequency set on the PWM channel, which might differ from the $frequency$ parameter, depeding on the hardware",
},
{ sig = "u32 platform_pwm_op( unsigned id, int op, u32 data );",
desc = "Executes an operation on the a PWM channel",
args =
{
{ name = "id", desc = "PWM channel ID" },
{ name = "op", desc = [[the operation that must be executed. It can take any value from @#opval@this enum@, as follows:
<ul>
<li>$PLATFORM_PWM_OP_START$: starts PWM generation on the specified channel.</li>
<li>$PLATFORM_PWM_OP_STOP$: stops PWM generation on the specified channel.</li>
<li>$PLATFORM_PWM_OP_SET_CLOCK$: sets the $base$ clock of the specified PWM channel (which will be used to generate the frequencies requested by
@#platform_pwm_setup@platform_pwm_setup@) to $data$ hertz.</li>
<li>$PLATFORM_PWM_OP_GET_CLOCK$: get the $base$ clock of the specified PWM channel.</liA>
</ul>]],},
{ name = "data", desc = "When used with $op$ == $PLATFORM_PWM_OP_SET_CLOCK$ it is used to specify the value of the base clock. Not used with other operations."}
{ sig = "u32 #platform_pwm_setup#( unsigned id, u32 frequency, unsigned duty );",
desc = "Sets up a PWM channel",
args =
{
{ name = "id", desc = "PWM channel ID" },
{ name = "frequency", desc = "PWM channel frequency (in hertz)" },
{ name = "duty", desc = "PWM channel duty cycle, specified as percent (from 0 to 100). Note that some platform don't allow the full 0%-100% duty cycle" }
},
ret = "The actual frequency set on the PWM channel, which might differ from the $frequency$ parameter, depeding on the hardware",
},
ret =
{
"the actual value of the base clock when $op$ == $PLATFORM_PWM_OP_SET_CLOCK$, which might be different than $data$ depending on the hardware",
"the value of the base clock when $op$ == $PLATFORM_PWM_OP_GET_CLOCK$",
"irellevant for other operations"
}
{ sig = "u32 #platform_pwm_op#( unsigned id, int op, u32 data );",
desc = "Executes an operation on a PWM channel",
args =
{
{ name = "id", desc = "PWM channel ID" },
{ name = "op", desc = [[the operation that must be executed. It can take any value from @#pwm_operations@this enum@, as follows:
<ul>
<li>$PLATFORM_PWM_OP_START$: starts PWM generation on the specified channel.</li>
<li>$PLATFORM_PWM_OP_STOP$: stops PWM generation on the specified channel.</li>
<li>$PLATFORM_PWM_OP_SET_CLOCK$: sets the $base$ clock of the specified PWM channel (which will be used to generate the frequencies requested by
@#platform_pwm_setup@platform_pwm_setup@) to $data$ hertz.</li>
<li>$PLATFORM_PWM_OP_GET_CLOCK$: get the $base$ clock of the specified PWM channel.</liA>
</ul>]],},
{ name = "data", desc = "When used with $op$ == $PLATFORM_PWM_OP_SET_CLOCK$ it is used to specify the value of the base clock. Not used with other operations."}
},
ret =
{
"the actual value of the base clock when $op$ == $PLATFORM_PWM_OP_SET_CLOCK$, which might be different than $data$ depending on the hardware",
"the value of the base clock when $op$ == $PLATFORM_PWM_OP_GET_CLOCK$",
"irellevant for other operations"
}
}
}
}

View File

@ -1,79 +1,87 @@
-- eLua platform interface - SPI
-- Make a full description for each language
-- Title
title = "eLua platform interface - SPI"
-- Overview
overview = "This part of the platform interface groups functions related to the SPI interface(s) of the MCU."
-- Data structures, constants and types
structures =
data_en =
{
{ text = [[// SPI mode
-- Menu name
menu_name = "SPI",
-- Title
title = "eLua platform interface - SPI",
-- Overview
overview = "This part of the platform interface groups functions related to the SPI interface(s) of the MCU.",
-- Data structures, constants and types
structures =
{
{ text = [[// SPI mode
#define PLATFORM_SPI_MASTER 1
#define PLATFORM_SPI_SLAVE 0 ]],
link = "selval",
desc = "Constants used to select/deselect the SPI SS pin (if applicable)."
},
name = "Chip select",
desc = "Constants used to select/deselect the SPI SS pin (if applicable)."
},
{ text = [[// SS values
{ text = [[// SS values
#define PLATFORM_SPI_SELECT_ON 1
#define PLATFORM_SPI_SELECT_OFF 0]],
link = "modeval",
desc = "Constants used to select/deselect the SPI SS pin (if applicable)."
},
name = "SPI mode",
desc = "Constants used to select/deselect the SPI SS pin (if applicable)."
},
{ text = "typedef u32 spi_data_type;",
desc = "This is the type of a SPI data word, thus limiting the maximum size of a SPI data work to 32 bits (which should be enough for all practical purposes)."
}
}
-- Functions
funcs =
{
{ sig = "int platform_spi_exists( unsigned id );",
desc = [[Checks if the platform has the hardware SPI specified as argument. Implemented in %src/common.c%, it uses the $NUM_SPI$ macro that must be defined in the
platform's $platform_conf.h$ file (see @arch_overview.html#platforms@here@ for details). For example:</p>
~#define NUM_SPI 1 $// The platform has 1 SPI interface$~</p> ]],
args =
{
{ name = "id", desc = "SPI interface ID" },
},
ret = "1 if the SPI interface exists, 0 otherwise"
},
{ sig = "u32 platform_spi_setup( unsigned id, int mode, u32 clock, unsigned cpol, unsigned cpha, unsigned databits );",
desc = [[This function is used to initialize the parameters of the SPI interface. <br><font color="red">$NOTE$</font>: currently, only master SPI mode is implemented in eLua.]],
args =
{
{ name = "id", desc = "SPI interface ID" },
{ name = "mode", desc = "SPI port mode ($PLATFORM_SPI_MASTER$ or $PLATFORM_SPI_SLAVE$, see @#modeval@here@." },
{ name = "clock", desc = "clock speed for the SPI interface in master mode." },
{ name = "cpol", desc = "SPI clock polarity" },
{ name = "cpha", desc = "SPI clock phase" },
{ name = "databits", desc = "length of the SPI data word in bits (usually 8, but configurable on some platforms)." }
},
ret = "the actual clock set for the SPI interface. Depending on the hardware, this may have a different value than the $clock$ argument."
},
{ sig = "spi_data_type platform_spi_send_recv( unsigned id, spi_data_type data );",
desc = "Executes a SPI read/write cycle",
args =
{
{ name = "id", desc = "SPI interface ID" },
{ name = "data", desc = "data to be sent to the SPI interface" },
},
ret = "data read from the SPI interface"
},
{ sig = "void platform_spi_select( unsigned id, int is_select );",
desc = [[For platforms that have a dedicates SS (Slave Select) pin in master SPI mode that can be controlled manually, this function should enable/disable this pin. If this functionality
does not exist in hardware this function does nothing.]],
args =
{
{ name = "id", desc = "SPI interface ID." },
{ name = "is_select", desc = "$PLATFORM_SPI_SELECT_ON$ to select, $PLATFORM_SPI_SELECT_OFF$ to deselect , see @#selval@here@." }
},
{ text = "typedef u32 spi_data_type;",
name = "SPI data type",
desc = "This is the type of a SPI data word, thus limiting the maximum size of a SPI data work to 32 bits (which should be enough for all practical purposes)."
}
},
-- Functions
funcs =
{
{ sig = "int #platform_spi_exists#( unsigned id );",
desc = [[Checks if the platform has the hardware SPI specified as argument. Implemented in %src/common.c%, it uses the $NUM_SPI$ macro that must be defined in the
platform's $platform_conf.h$ file (see @arch_overview.html#platforms@here@ for details). For example:</p>
~#define NUM_SPI 1 $// The platform has 1 SPI interface$~</p> ]],
args =
{
{ name = "id", desc = "SPI interface ID" },
},
ret = "1 if the SPI interface exists, 0 otherwise"
},
{ sig = "u32 #platform_spi_setup#( unsigned id, int mode, u32 clock, unsigned cpol, unsigned cpha, unsigned databits );",
desc = [[This function is used to initialize the parameters of the SPI interface. <br><font color="red">$NOTE$</font>: currently, only master SPI mode is implemented in eLua.]],
args =
{
{ name = "id", desc = "SPI interface ID" },
{ name = "mode", desc = "SPI port mode ($PLATFORM_SPI_MASTER$ or $PLATFORM_SPI_SLAVE$, see @#spi_mode@here@." },
{ name = "clock", desc = "clock speed for the SPI interface in master mode." },
{ name = "cpol", desc = "SPI clock polarity" },
{ name = "cpha", desc = "SPI clock phase" },
{ name = "databits", desc = "length of the SPI data word in bits (usually 8, but configurable on some platforms)." }
},
ret = "the actual clock set for the SPI interface. Depending on the hardware, this may have a different value than the $clock$ argument."
},
{ sig = "spi_data_type #platform_spi_send_recv#( unsigned id, spi_data_type data );",
desc = "Executes a SPI read/write cycle",
args =
{
{ name = "id", desc = "SPI interface ID" },
{ name = "data", desc = "data to be sent to the SPI interface" },
},
ret = "data read from the SPI interface"
},
{ sig = "void #platform_spi_select#( unsigned id, int is_select );",
desc = [[For platforms that have a dedicates SS (Slave Select) pin in master SPI mode that can be controlled manually, this function should enable/disable this pin. If this functionality
does not exist in hardware this function does nothing.]],
args =
{
{ name = "id", desc = "SPI interface ID." },
{ name = "is_select", desc = "$PLATFORM_SPI_SELECT_ON$ to select, $PLATFORM_SPI_SELECT_OFF$ to deselect , see @#chip_select@here@." }
},
}
}
}

View File

@ -1,37 +1,52 @@
-- eLua platform interface - name
-- Title
title = "eLua platform interface - name"
-- Overview
overview = [[
]]
-- Data structures, constants and types
structures =
data_en =
{
{ text = [[ ]],
desc = [[ ]]
},
}
-- Functions
funcs =
{
{ sig = "",
link = "",
desc = [[ ]],
args =
{
{ name = "", desc = "" },
{ name = "", desc = "" }
-- Title
title = "eLua platform interface - name",
-- Menu name
menu_name = "name"
-- Overview
overview = [[
]],
-- Data structures, constants and types
structures =
{
{ text = [[ ]],
name = "",
desc = [[ ]]
},
ret =
{
"",
[[ ]],
},
},
-- Functions
funcs =
{
{ sig = "void #functionname#( void )",
desc = [[ ]],
args =
{
{ name = "", desc = "" },
{ name = "", desc = "" }
},
ret =
{
"",
[[ ]],
},
},
},
-- Aux data
auxdata =
{
{ title = "",
desc = [[]]
}
}
}

View File

@ -1,20 +1,26 @@
-- eLua platform interface - timers
-- Title
title = "eLua platform interface - timers"
-- Overview
overview = [[This part of the platform interface groups functions related to the timers of the MCU. It also makes provisions for using $virtual timers$ on any platform, see @#virtual@this section@
for details. Keep in mind that in the following paragraphs a $timer id$ can reffer to both a hardware timer or a virtual timer.]]
-- Data structures, constants and types
structures =
data_en =
{
{ text = "typedef u32 timer_data_type;",
desc = "This defines the data type used to specify delays and time intervals (which are always specifide in $microseconds$)."
},
-- Title
title = "eLua platform interface - timers",
{ text = [[// Timer operations
-- Menu name
menu_name = "Timers",
-- Overview
overview = [[This part of the platform interface groups functions related to the timers of the MCU. It also makes provisions for using $virtual timers$ on any platform, see @#virtual@this section@
for details. Keep in mind that in the following paragraphs a $timer id$ can reffer to both a hardware timer or a virtual timer.]],
-- Data structures, constants and types
structures =
{
{ text = "typedef u32 timer_data_type;",
name = "Timer data type",
desc = "This defines the data type used to specify delays and time intervals (which are always specifide in $microseconds$)."
},
{ text = [[// Timer operations
enum
{
PLATFORM_TIMER_OP_START,
@ -24,165 +30,161 @@ enum
PLATFORM_TIMER_OP_GET_MAX_DELAY,
PLATFORM_TIMER_OP_GET_MIN_DELAY
};]],
link = "opval",
desc = "This enum lists all the operations that can be executed on a given timer."
}
}
-- Functions
funcs =
{
{ sig = "int platform_timer_exists( unsigned id );",
desc = [[Checks if the platform has the timer specified as argument. Implemented in %src/common.c%, it uses the $NUM_TIMER$ macro that must be defined in the
platform's $platform_conf.h$ file (see @arch_overview.html#platforms@here@ for details) and the virtual timer configuration (@#virtual@here@ for details). For example:</p>
~#define NUM_TIMER 2 $// The platform has 2 hardware timers$~<p>]],
args =
{
{ name = "id", desc = "the timer ID" },
},
ret = "1 if the timer exists, 0 otherwise"
},
{ sig = "void platform_timer_delay( unsigned id, u32 delay_us );",
link = "platform_timer_delay",
desc = [[Waits on a timer, then returns. This function is "split" in two parts: a platform-independent part implemented in %src/common.c% (that
handles virtual timers) and a platform-dependent part that must be implemented by each platform in a function named @#platform_s_timer_delay@platform_s_timer_delay@. This function handles both
hardware timer IDs and virtual timer IDs.<br>
<font color="red"><a name="limitations">$IMPORTANT NOTE$</font></a>: the real delay after executing this functions depends a number of variables, most notably the base clock of the timer
and the size of the timer counter register (32 bits on some platforms, 16 bits on most platforms, other values are less common). To ensure that the delay you're requesting is achievable, use
@#platform_timer_op@platform_timer_op@ with $PLATFORM_TIMER_OP_GET_MAX_DELAY$ and $PLATFORM_TIMER_OP_GET_MIN_DELAY$ to obtain the maximum and the minimum
achievable wait times on your timer, respectively. Even if your delay is within these limits, the $precision$ of this function still varies a lot, mainly as a function of
the timer base clock.]],
args =
{
{ name = "id", desc = "the timer ID" },
{ name = "delay_us", desc = "the delay time (in microseconds)" }
name = "Timer operations",
desc = "This enum lists all the operations that can be executed on a given timer."
}
},
{ sig = "void platform_s_timer_delay( unsigned id, u32 delay_us );",
link = "platform_s_timer_delay",
desc = [[This function is identical in functionality to @#platform_timer_delay@platform_timer_delay@, but this is the function that must actually be implemented by a platform port,
and it must never handle virtual timer IDs, only hardware timer IDs. It has the same @#limitations@limitations@ as @#platform_timer_delay@platform_timer_delay@.]],
args =
{
{ name = "id", desc = "the timer ID" },
{ name = "delay_us", desc = "the delay time (in microseconds)" }
-- Functions
funcs =
{
{ sig = "int #platform_timer_exists#( unsigned id );",
desc = [[Checks if the platform has the timer specified as argument. Implemented in %src/common.c%, it uses the $NUM_TIMER$ macro that must be defined in the
platform's $platform_conf.h$ file (see @arch_overview.html#platforms@here@ for details) and the virtual timer configuration (@#virtual@here@ for details). For example:</p>
~#define NUM_TIMER 2 $// The platform has 2 hardware timers$~<p>]],
args =
{
{ name = "id", desc = "the timer ID" },
},
ret = "1 if the timer exists, 0 otherwise"
},
{ sig = "void #platform_timer_delay#( unsigned id, u32 delay_us );",
desc = [[Waits on a timer, then returns. This function is "split" in two parts: a platform-independent part implemented in %src/common.c% (that
handles virtual timers) and a platform-dependent part that must be implemented by each platform in a function named @#platform_s_timer_delay@platform_s_timer_delay@. This function handles both
hardware timer IDs and virtual timer IDs.<br>
<font color="red"><a name="limitations">$IMPORTANT NOTE$</font></a>: the real delay after executing this functions depends a number of variables, most notably the base clock of the timer
and the size of the timer counter register (32 bits on some platforms, 16 bits on most platforms, other values are less common). To ensure that the delay you're requesting is achievable, use
@#platform_timer_op@platform_timer_op@ with $PLATFORM_TIMER_OP_GET_MAX_DELAY$ and $PLATFORM_TIMER_OP_GET_MIN_DELAY$ to obtain the maximum and the minimum
achievable wait times on your timer, respectively. Even if your delay is within these limits, the $precision$ of this function still varies a lot, mainly as a function of
the timer base clock.]],
args =
{
{ name = "id", desc = "the timer ID" },
{ name = "delay_us", desc = "the delay time (in microseconds)" }
}
},
{ sig = "void #platform_s_timer_delay#( unsigned id, u32 delay_us );",
desc = [[This function is identical in functionality to @#platform_timer_delay@platform_timer_delay@, but this is the function that must actually be implemented by a platform port,
and it must never handle virtual timer IDs, only hardware timer IDs. It has the same @#limitations@limitations@ as @#platform_timer_delay@platform_timer_delay@.]],
args =
{
{ name = "id", desc = "the timer ID" },
{ name = "delay_us", desc = "the delay time (in microseconds)" }
}
},
{ sig = "u32 #platform_timer_op#( unsigned id, int op, u32 data );",
desc = [[Executes an operation on a timer. This function is "split" in two parts: a platform-independent part implemented in %src/common.c% (that handles virtual timers) and a
platform-dependent part that must be implemented by each platform in a function named @#platform_s_timer_op@platform_s_timer_op@. This function handles both hardware timer IDs and virtual
timer IDs.]],
args =
{
{ name = "id", desc = "the timer ID" },
{ name = "op", desc = [[the operation. $op$ can take any value from the @#timer_operations@this enum@, as follows:
<ul>
<li>$PLATFORM_TIMER_OP_START$: start the specified timer by setting its counter register to a predefined value.</li>
<li>$PLATFORM_TIMER_OP_READ$: get the value of the specified timer's counter register.</li>
<li>$PLATFORM_TIMER_SET_CLOCK$: set the clock of the specified timer to $data$ (in hertz). You can never set the clock of a virtual timer, which is set at compile time.</li>
<li>$PLATFORM_TIMER_GET_CLOCK$: get the clock of the specified timer.</li>
<li>$PLATFORM_TIMER_OP_GET_MAX_DELAY$: get the maximum achievable timeout on the specified timer (in us).</li>
<li>$PLATFORM_TIMER_OP_GET_MIN_DELAY$: get the minimum achievable timeout on the specified timer (in us).</li>
</ul>]] },
{ name = "data", desc = "used to specify the timer clock value when $op = PLATFORM_TIMER_SET_CLOCK$, ignored otherwise" },
},
ret =
{
"the predefined value used when starting the clock if $op = PLATFORM_TIMER_OP_START$",
"the timer's counter register if $op = PLATFORM_TIMER_OP_READ$",
"the actual clock set on the timer, which might be different than the request clock depending on the hardware if $op = PLATFORM_TIMER_SET_CLOCK$",
"the timer clock if $op = PLATFORM_TIMER_GET_CLOCK$",
"the maximum achievable delay (in microseconds) if $op = PLATFORM_TIMER_OP_GET_MAX_DELAY$",
"the minimum achievable delay (in microseconds) if $op = PLATFORM_TIMER_OP_GET_MIN_DELAY$"
}
},
{ sig = "u32 #platform_s_timer_op#( unsigned id, int op, u32 data );",
desc = [[This function is identical in functionality to @#platform_timer_op@platform_timer_op@, but this is the function that must actually be implemented by a platform port, and it must
never handle virtual timer IDs, only hardware timer IDs.]],
args =
{
{ name = "id", desc = "the timer ID" },
{ name = "op", desc = [[the operation. $op$ can take any value from the @#opval@this enum@, as follows:
<ul>
<li>$PLATFORM_TIMER_OP_START$: start the specified timer by setting its counter register to a predefined value.</li>
<li>$PLATFORM_TIMER_OP_READ$: get the value of the specified timer's counter register.</li>
<li>$PLATFORM_TIMER_SET_CLOCK$: set the clock of the specified timer to $data$ (in hertz). You can never set the clock of a virtual timer, which is set at compile time.</li>
<li>$PLATFORM_TIMER_GET_CLOCK$: get the clock of the specified timer.</li>
<li>$PLATFORM_TIMER_OP_GET_MAX_DELAY$: get the maximum achievable timeout on the specified timer (in us).</li>
<li>$PLATFORM_TIMER_OP_GET_MIN_DELAY$: get the minimum achievable timeout on the specified timer (in us).</li>
</ul>]] },
{ name = "data", desc = "used to specify the timer clock value when $op = PLATFORM_TIMER_SET_CLOCK$, ignored otherwise" },
},
ret =
{
"the predefined value used when starting the clock if $op = PLATFORM_TIMER_OP_START$",
"the timer's counter register if $op = PLATFORM_TIMER_OP_READ$",
"the actual clock set on the timer, which might be different than the request clock depending on the hardware if $op = PLATFORM_TIMER_SET_CLOCK$",
"the timer clock if $op = PLATFORM_TIMER_GET_CLOCK$",
"the maximum achievable delay (in microseconds) if $op = PLATFORM_TIMER_OP_GET_MAX_DELAY$",
"the minimum achievable delay (in microseconds) if $op = PLATFORM_TIMER_OP_GET_MIN_DELAY$"
}
},
{ sig = "u32 #platform_timer_get_diff_us#( unsigned id, timer_data_type end, timer_data_type start );",
desc = [[Return the time difference (in us) betweeen two timer values. This function is generic for all platforms, thus it is implemented in %src/common.c%.]],
args =
{
{ name = "id", desc = "the timer ID" },
{ name = "end", desc = "the first timer value" },
{ name = "start", desc = "the second timer value" },
},
ret = "the time difference (in microseconds)"
}
},
{ sig = "u32 platform_timer_op( unsigned id, int op, u32 data );",
link = "platform_timer_op",
desc = [[Executes an operation on a timer. This function is "split" in two parts: a platform-independent part implemented in %src/common.c% (that handles virtual timers) and a
platform-dependent part that must be implemented by each platform in a function named @#platform_s_timer_op@platform_s_timer_op@. This function handles both hardware timer IDs and virtual
timer IDs.]],
args =
{
{ name = "id", desc = "the timer ID" },
{ name = "op", desc = [[the operation. $op$ can take any value from the @#opval@this enum@, as follows:
<ul>
<li>$PLATFORM_TIMER_OP_START$: start the specified timer by setting its counter register to a predefined value.</li>
<li>$PLATFORM_TIMER_OP_READ$: get the value of the specified timer's counter register.</li>
<li>$PLATFORM_TIMER_SET_CLOCK$: set the clock of the specified timer to $data$ (in hertz). You can never set the clock of a virtual timer, which is set at compile time.</li>
<li>$PLATFORM_TIMER_GET_CLOCK$: get the clock of the specified timer.</li>
<li>$PLATFORM_TIMER_OP_GET_MAX_DELAY$: get the maximum achievable timeout on the specified timer (in us).</li>
<li>$PLATFORM_TIMER_OP_GET_MIN_DELAY$: get the minimum achievable timeout on the specified timer (in us).</li>
</ul>]] },
{ name = "data", desc = "used to specify the timer clock value when $op = PLATFORM_TIMER_SET_CLOCK$, ignored otherwise" },
},
ret =
{
"the predefined value used when starting the clock if $op = PLATFORM_TIMER_OP_START$",
"the timer's counter register if $op = PLATFORM_TIMER_OP_READ$",
"the actual clock set on the timer, which might be different than the request clock depending on the hardware if $op = PLATFORM_TIMER_SET_CLOCK$",
"the timer clock if $op = PLATFORM_TIMER_GET_CLOCK$",
"the maximum achievable delay (in microseconds) if $op = PLATFORM_TIMER_OP_GET_MAX_DELAY$",
"the minimum achievable delay (in microseconds) if $op = PLATFORM_TIMER_OP_GET_MIN_DELAY$"
}
},
{ sig = "u32 platform_s_timer_op( unsigned id, int op, u32 data );",
link = "platform_s_timer_op",
desc = [[This function is identical in functionality to @#platform_timer_op@platform_timer_op@, but this is the function that must actually be implemented by a platform port, and it must
never handle virtual timer IDs, only hardware timer IDs.]],
args =
{
{ name = "id", desc = "the timer ID" },
{ name = "op", desc = [[the operation. $op$ can take any value from the @#opval@this enum@, as follows:
<ul>
<li>$PLATFORM_TIMER_OP_START$: start the specified timer by setting its counter register to a predefined value.</li>
<li>$PLATFORM_TIMER_OP_READ$: get the value of the specified timer's counter register.</li>
<li>$PLATFORM_TIMER_SET_CLOCK$: set the clock of the specified timer to $data$ (in hertz). You can never set the clock of a virtual timer, which is set at compile time.</li>
<li>$PLATFORM_TIMER_GET_CLOCK$: get the clock of the specified timer.</li>
<li>$PLATFORM_TIMER_OP_GET_MAX_DELAY$: get the maximum achievable timeout on the specified timer (in us).</li>
<li>$PLATFORM_TIMER_OP_GET_MIN_DELAY$: get the minimum achievable timeout on the specified timer (in us).</li>
</ul>]] },
{ name = "data", desc = "used to specify the timer clock value when $op = PLATFORM_TIMER_SET_CLOCK$, ignored otherwise" },
},
ret =
{
"the predefined value used when starting the clock if $op = PLATFORM_TIMER_OP_START$",
"the timer's counter register if $op = PLATFORM_TIMER_OP_READ$",
"the actual clock set on the timer, which might be different than the request clock depending on the hardware if $op = PLATFORM_TIMER_SET_CLOCK$",
"the timer clock if $op = PLATFORM_TIMER_GET_CLOCK$",
"the maximum achievable delay (in microseconds) if $op = PLATFORM_TIMER_OP_GET_MAX_DELAY$",
"the minimum achievable delay (in microseconds) if $op = PLATFORM_TIMER_OP_GET_MIN_DELAY$"
}
},
{ sig = "u32 platform_timer_get_diff_us( unsigned id, timer_data_type end, timer_data_type start );",
desc = [[Return the time difference (in us) betweeen two timer values. This function is generic for all platforms, thus it is implemented in %src/common.c%.]],
args =
{
{ name = "id", desc = "the timer ID" },
{ name = "end", desc = "the first timer value" },
{ name = "start", desc = "the second timer value" },
},
ret = "the time difference (in microseconds)"
}
}
auxdata =
{
{ title = "Virtual timers",
link = "virtual",
desc =
[[$Virtual timers$ were added to eLua to overcome some limitations:
<ul>
<li>there are generally few hardware timers available, some of which might be dedicated (thus not usable directly by eLua).</li>
<li>many times it is difficult to share a hardware timer between different parts of an application because of conflicting requirements. Generally it's not possible to have timers that can
achieve long delays and high accuracy at the same time (this is especially true for systems that have 16 bit or even smaller timers).</li>
</ul></p>
<p>In this respect, $virtual timers$ are a set of timers that share a single hardware timer. It is possible, in this way, to have a hardware timer that can implement 4, 8 or more hardware
timers. There are a few drawbacks to this approach:
<ul>
<li>the hardware timer used to implement the virtual timers must generally be dedicated. In fact in cat be still used in "read only mode", which means that the only operations that can
be executed on it are $PLATFORM_TIMER_OP_READ$, $PLATFORM_TIMER_GET_CLOCK$, $PLATFORM_TIMER_OP_GET_MAX_DELAY$ and $PLATFORM_TIMER_OP_GET_MIN_DELAY$. However,
since the "read only mode" is not enforced by the code, it is advisable to treat this timer as a dedicated resource and thus make it invisible to eLua by not associating it with
an ID.</li>
<li>the number of virtual timers and their base frequency are fixed at compile time.</li>
<li>virtual timers are generally used for large delays with low accuracy, since their base frequency should be fairly low (see below).</li>
</ul></p>
<p>To $enable$ virtual timers:
<ol>
<li>edit $platform_conf.h$ (see @arch_overview.html#platforms@here@ for details) and set $VTMR_NUM_TIMERS$ to the number of desired virtual timers and
$VTMR_FREQ_HZ$ to the base frequency of the virtual timers (in hertz). For example:
~#define VTMR_NUM_TIMERS 4 // we need 4 virtual timers
auxdata =
{
{ title = "Virtual timers",
desc =
[[$Virtual timers$ were added to eLua to overcome some limitations:
<ul>
<li>there are generally few hardware timers available, some of which might be dedicated (thus not usable directly by eLua).</li>
<li>many times it is difficult to share a hardware timer between different parts of an application because of conflicting requirements. Generally it's not possible to have timers that can
achieve long delays and high accuracy at the same time (this is especially true for systems that have 16 bit or even smaller timers).</li>
</ul></p>
<p>In this respect, $virtual timers$ are a set of timers that share a single hardware timer. It is possible, in this way, to have a hardware timer that can implement 4, 8 or more hardware
timers. There are a few drawbacks to this approach:
<ul>
<li>the hardware timer used to implement the virtual timers must generally be dedicated. In fact in cat be still used in "read only mode", which means that the only operations that can
be executed on it are $PLATFORM_TIMER_OP_READ$, $PLATFORM_TIMER_GET_CLOCK$, $PLATFORM_TIMER_OP_GET_MAX_DELAY$ and $PLATFORM_TIMER_OP_GET_MIN_DELAY$. However,
since the "read only mode" is not enforced by the code, it is advisable to treat this timer as a dedicated resource and thus make it invisible to eLua by not associating it with
an ID.</li>
<li>the number of virtual timers and their base frequency are fixed at compile time.</li>
<li>virtual timers are generally used for large delays with low accuracy, since their base frequency should be fairly low (see below).</li>
</ul></p>
<p>To $enable$ virtual timers:
<ol>
<li>edit $platform_conf.h$ (see @arch_overview.html#platforms@here@ for details) and set $VTMR_NUM_TIMERS$ to the number of desired virtual timers and
$VTMR_FREQ_HZ$ to the base frequency of the virtual timers (in hertz). For example:
~#define VTMR_NUM_TIMERS 4 // we need 4 virtual timers
#define VTMR_FREQ_HZ 4 // the base clock for the virtual timers is 4Hz~</li>
<li>in your platform port setup a hardware timer to fire an interrupt at $VTMR_FREQ_HZ$ and call the $cmn_virtual_timer_cb$ function (defined in %src/common.c%) in the
timer interrupt handler. For example, if the the interrupt handler is called $timer_int_handler$, do this:
~void timer_int_handler( void )
<li>in your platform port setup a hardware timer to fire an interrupt at $VTMR_FREQ_HZ$ and call the $cmn_virtual_timer_cb$ function (defined in %src/common.c%) in the
timer interrupt handler. For example, if the the interrupt handler is called $timer_int_handler$, do this:
~void timer_int_handler( void )
{
// add code to clear the timer interrupt flag here if needed
cmn_virtual_timer_cb();
}~</li>
</ol></p>
<p>Note that because of step 2 above you are limited by practical constraints on the value of $VTMR_FREQ_HZ$. If set too high, the timer interrupt will fire too often, thus taking too much
CPU time. The maximum value depends largely on the hardware and the desired behaviour of the virtual timers, but in practice values larger than 10 might visibly change the behaviour of your
system.</p>
<p>To $use$ a virtual timer, identify it with the constant $VTMR_FIRST_ID$ (defined in %inc/common.h%) plus an offset. For example, $VTMR_FIRST_ID+0$ (or simply
$VTMR_FIRST_ID$) is the ID of the first virtual timer in the system, and $VTMR_FIRST_ID+2$ is the ID of the third virtual timer in the system.</p>
]]
</ol></p>
<p>Note that because of step 2 above you are limited by practical constraints on the value of $VTMR_FREQ_HZ$. If set too high, the timer interrupt will fire too often, thus taking too much
CPU time. The maximum value depends largely on the hardware and the desired behaviour of the virtual timers, but in practice values larger than 10 might visibly change the behaviour of your
system.</p>
<p>To $use$ a virtual timer, identify it with the constant $VTMR_FIRST_ID$ (defined in %inc/common.h%) plus an offset. For example, $VTMR_FIRST_ID+0$ (or simply
$VTMR_FIRST_ID$) is the ID of the first virtual timer in the system, and $VTMR_FIRST_ID+2$ is the ID of the third virtual timer in the system.</p>
]]
}
}
}

View File

@ -1,122 +1,128 @@
-- eLua platform interface - UART
-- Title
title = "eLua platform interface - UART"
-- Overview
overview = "This part of the platform interface groups functions related to the UART interface(s) of the MCU."
-- Data structures, constants and types
structures =
data_en =
{
{ text = [[// Parity
-- Title
title = "eLua platform interface - UART",
-- Menu name
menu_name = "UART",
-- Overview
overview = "This part of the platform interface groups functions related to the UART interface(s) of the MCU.",
-- Data structures, constants and types
structures =
{
{ text = [[// Parity
enum
{
PLATFORM_UART_PARITY_EVEN,
PLATFORM_UART_PARITY_ODD,
PLATFORM_UART_PARITY_NONE
};]],
link = "parval",
desc = "Constants used to specify the UART parity mode."
},
name = "UART parity",
desc = "Constants used to specify the UART parity mode."
},
{ text = [[// Stop bits
{ text = [[// Stop bits
enum
{
PLATFORM_UART_STOPBITS_1,
PLATFORM_UART_STOPBITS_1_5,
PLATFORM_UART_STOPBITS_2
};]],
link = "stopval",
desc = "Constants used to specify the number of UART stop bits.",
},
name = "UART stop bits",
desc = "Constants used to specify the number of UART stop bits.",
},
{ text = [[// "Infinite timeout" constant for recv
{ text = [[// "Infinite timeout" constant for recv
#define PLATFORM_UART_INFINITE_TIMEOUT (-1)]],
link = "toinf",
desc = "This constant is used as a special timeout value (infinite timeout) in the UART functions that expect a timeout as argument.",
}
}
-- Functions
funcs =
{
{ sig = "int platform_uart_exists( unsigned id );",
desc = [[Checks if the platform has the hardware UART specified as argument. Implemented in %src/common.c%, it uses the $NUM_UART$ macro that must be defined in the
platform's $platform_conf.h$ file (see @arch_overview.html#platforms@here@ for details). For example:</p>
~#define NUM_UART 2 $// The platform has 2 UART interfaces$~<p>]],
args =
{
{ name = "id", desc = "UART interface ID" },
},
ret = "1 if the specified UART exists, 0 otherwise"
},
{ sig = "u32 platform_uart_setup( unsigned id, u32 baud, int databits, int parity, int stopbits );",
desc = "This function is used to initialize the parameters of the UART interface.",
args =
{
{ name = "id", desc = "UART interface ID." },
{ name = "baud", desc = "baud rate." },
{ name = "databits", desc = "number of databits (maximum 8)." },
{ name = "parity", desc = "parity type (can be either $PLATFORM_UART_PARITY_EVEN$, $PLATFORM_UART_PARITY_ODD$ or $PLATFORM_UART_PARITY_NONE$, see @#parval@here@)." },
{ name = "stopbits", desc = [[number of stop bits (can be either $PLATFORM_UART_STOPBITS_1$, $PLATFORM_UART_STOPBITS_1_5$ or $PLATFORM_UART_STOPBITS_2$, see
@#stopval@here@).]] },
},
ret = "the actual baud rate. Depending on the hardware, this may have a different value than the $baud$ argument.",
},
{ sig = "void platform_uart_send( unsigned id, u8 data );",
desc = "Send data to an UART interface.",
args =
{
{ name = "id", desc = "UART interface ID." },
{ name = "data", desc = "data to be sent." },
},
},
{ sig = "int platform_uart_recv( unsigned id, unsigned timer_id, s32 timeout );",
link = "platform_uart_recv",
desc = [[Receive data from the UART interface (blocking/non blocking with timeout/immediate).<br>
This function is "split" in two parts: a platform-independent part that is implemented in %src/common.c%, and a platform-dependent part that must be implemented by each
platform in a function named @#platform_s_uart_recv@platform_s_uart_recv@.]],
args =
{
{ name = "id", desc = "UART interface ID." },
{ name = "timer_id", desc = "the ID of the timer used in this operation (see @arch_platform_timers.html@here@ for details). See also the description of the $timeout$ argument." },
{ name = "timeout", desc = [[specifies a timeout for the receive operation as follows:
<ul>
<li>$timeout &gt; 0$: the timer with the specified $timer_id$ will be used to timeout the receive operation after $timeout$ microseconds.</li>
<li>$timeout = 0$: the function returns immediately regardless of data being available or not. $timer_id$ is ignored.</li>
<li>$timeout$ = @#toinf@PLATFORM_UART_INFINITE_TIMEOUT@: the function waits indefinitely for UART data to be available and returns it. In this mode the function doesn't
time out, so $timer_id$ is ignored.</li>
</ul>]] },
},
ret =
{
"if $timeout &gt; 0$ and data from the UART is available in $timeout$ microseconds of less it is returned, otherwise -1 is returned",
"if $timeout = 0$ and data from the UART is available when the function is called it is returned, otherwise -1 is returned",
"if $timeout$ = @#toinf@PLATFORM_UART_INIFINITE_TIMEOUT@ it returns the data read from the UART after it becomes available"
name = "UART timeout",
desc = "This constant is used as a special timeout value (infinite timeout) in the UART functions that expect a timeout as argument.",
}
},
{ sig = "int platform_s_uart_recv( unsigned id, s32 timeout );",
link = "platform_s_uart_recv",
desc = [[This is the platform-dependent part of the UART receive function @#platform_uart_recv@platform_uart_recv@, and is in fact a "subset" of the full function
(thus being easier to implement by each platform in part). In particular, it never needs to deal with the $timeout &gt; 0$ case, which is handled by @#platform_uart_recv@platform_uart_recv@.]],
args =
{
{ name = "id", desc = "UART interface ID." },
{ name = "timeout", desc = [[specifies a timeout for the receive operation as follows:
<ul>
<li>$timeout = 0$: the function returns immediately regardless of data being available or not.</li>
<li>$timeout$ = @#toinf@PLATFORM_UART_INFINITE_TIMEOUT@: the function waits indefinitely for UART data to be available and returns it.</li>
</ul>]] },
-- Functions
funcs =
{
{ sig = "int #platform_uart_exists#( unsigned id );",
desc = [[Checks if the platform has the hardware UART specified as argument. Implemented in %src/common.c%, it uses the $NUM_UART$ macro that must be defined in the
platform's $platform_conf.h$ file (see @arch_overview.html#platforms@here@ for details). For example:</p>
~#define NUM_UART 2 $// The platform has 2 UART interfaces$~<p>]],
args =
{
{ name = "id", desc = "UART interface ID" },
},
ret = "1 if the specified UART exists, 0 otherwise"
},
ret =
{
"if $timeout = 0$ and data from the UART is available when the function is called it is returned, otherwise -1 is returned",
"if $timeout$ = @#toinf@PLATFORM_UART_INIFINITE_TIMEOUT@ it returns the data read from the UART after it becomes available"
{ sig = "u32 #platform_uart_setup#( unsigned id, u32 baud, int databits, int parity, int stopbits );",
desc = "This function is used to initialize the parameters of the UART interface.",
args =
{
{ name = "id", desc = "UART interface ID." },
{ name = "baud", desc = "baud rate." },
{ name = "databits", desc = "number of databits (maximum 8)." },
{ name = "parity", desc = "parity type (can be either $PLATFORM_UART_PARITY_EVEN$, $PLATFORM_UART_PARITY_ODD$ or $PLATFORM_UART_PARITY_NONE$, see @#uart_parity@here@)." },
{ name = "stopbits", desc = [[number of stop bits (can be either $PLATFORM_UART_STOPBITS_1$, $PLATFORM_UART_STOPBITS_1_5$ or $PLATFORM_UART_STOPBITS_2$, see
@#uart_stop_bits@here@).]] },
},
ret = "the actual baud rate. Depending on the hardware, this may have a different value than the $baud$ argument.",
},
{ sig = "void #platform_uart_send#( unsigned id, u8 data );",
desc = "Send data to an UART interface.",
args =
{
{ name = "id", desc = "UART interface ID." },
{ name = "data", desc = "data to be sent." },
},
},
{ sig = "int #platform_uart_recv#( unsigned id, unsigned timer_id, s32 timeout );",
link = "platform_uart_recv",
desc = [[Receive data from the UART interface (blocking/non blocking with timeout/immediate).<br>
This function is "split" in two parts: a platform-independent part that is implemented in %src/common.c%, and a platform-dependent part that must be implemented by each
platform in a function named @#platform_s_uart_recv@platform_s_uart_recv@.]],
args =
{
{ name = "id", desc = "UART interface ID." },
{ name = "timer_id", desc = "the ID of the timer used in this operation (see @arch_platform_timers.html@here@ for details). See also the description of the $timeout$ argument." },
{ name = "timeout", desc = [[specifies a timeout for the receive operation as follows:
<ul>
<li>$timeout &gt; 0$: the timer with the specified $timer_id$ will be used to timeout the receive operation after $timeout$ microseconds.</li>
<li>$timeout = 0$: the function returns immediately regardless of data being available or not. $timer_id$ is ignored.</li>
<li>$timeout$ = @#uart_timeout@PLATFORM_UART_INFINITE_TIMEOUT@: the function waits indefinitely for UART data to be available and returns it. In this mode the function doesn't
time out, so $timer_id$ is ignored.</li>
</ul>]] },
},
ret =
{
"if $timeout &gt; 0$ and data from the UART is available in $timeout$ microseconds of less it is returned, otherwise -1 is returned",
"if $timeout = 0$ and data from the UART is available when the function is called it is returned, otherwise -1 is returned",
"if $timeout$ = @#uart_timeout@PLATFORM_UART_INIFINITE_TIMEOUT@ it returns the data read from the UART after it becomes available"
}
},
{ sig = "int #platform_s_uart_recv#( unsigned id, s32 timeout );",
link = "platform_s_uart_recv",
desc = [[This is the platform-dependent part of the UART receive function @#platform_uart_recv@platform_uart_recv@, and is in fact a "subset" of the full function
(thus being easier to implement by each platform in part). In particular, it never needs to deal with the $timeout &gt; 0$ case, which is handled by @#platform_uart_recv@platform_uart_recv@.]],
args =
{
{ name = "id", desc = "UART interface ID." },
{ name = "timeout", desc = [[specifies a timeout for the receive operation as follows:
<ul>
<li>$timeout = 0$: the function returns immediately regardless of data being available or not.</li>
<li>$timeout$ = @#uart_timeout@PLATFORM_UART_INFINITE_TIMEOUT@: the function waits indefinitely for UART data to be available and returns it.</li>
</ul>]] },
},
ret =
{
"if $timeout = 0$ and data from the UART is available when the function is called it is returned, otherwise -1 is returned",
"if $timeout$ = @#uart_timeout@PLATFORM_UART_INIFINITE_TIMEOUT@ it returns the data read from the UART after it becomes available"
}
}
}
}

View File

@ -1,24 +1,40 @@
#!/bin/bash
# Builds a full documentation package in the "dist/" directory
# Delete and recreate directory
rm -rf dist
mkdir dist
# Build platform docs
for f in arch_platform/arch_platform_*.lua
lua builddoc.lua
cd wb
lua wb_build.lua
cd ..
# Copy the required files to the dist/ directory
for lang in en pt
do
fname=$(basename $f)
if [ $fname == "arch_platform_template.lua" ]
then
echo "Skipping $fname"
echo
continue
fi
newfname=$(echo $fname | sed "s/\.lua/\.html/")
lua builddoc.lua $f
if [ $? -eq 0 ]
then
mv arch_platform/$newfname en/
echo "DONE processing $f"
else
echo "**** Building $f failed"
fi
echo
cp -R $lang/ dist/
done
cp -R wb_img dist/
for f in wb*.html style.css index*.html
do
echo Copying $f...
cp $f dist/
done
# Remove all version data from dist
find dist/ -name ".svn" | xargs rm -rf
# Remove unneeded files from base dir
for lang in en pt
do
rm $lang/arch_platform_*.html
done
rm wb/wb_usr.lua
# All done
echo
echo "DONE! Enjoy your documentation in dist/ :)"

View File

@ -1,5 +1,31 @@
-- eLua doc builder tool
-- List here all the components of the platform interface
local arch_platform_components = { "ll", "pio", "spi", "uart", "timers", "pwm", "cpu", "eth" }
-- local arch_platform_components = { "cpu" }
-- List here all languages for the documentation (make sure to keep English ("en") the first one)
local languages = { "en", "pt" }
-- Also list here the translation for a bunch of fixed strings
local overview_tr = { en = "Overview", pt = "##Overview" }
local structures_tr = { en = "Data structures", pt = "##Data structures" }
local functions_tr = { en = "Functions", pt = "##Functions" }
local pi_tr = { en = "Platform interface", pt = "##Platform interface" }
-- Format a name to a link by changing all the spaces to "_" and
-- making all letters lowercase
local function name2link( str )
str = str:gsub( " ", "_" )
return str:lower()
end
-- Returns the part of the string enclosed between two '#' chars
-- Used for parsing function sig.
local function namefromsig( str )
local _, _, name = str:find( "#(.*)#" )
return name
end
--[[ Process the given string as follows:
- $string$ becomes <b>string</b>
- %string% becomes <i>string</i>
@ -11,7 +37,7 @@
- newlines are changed to ' ' if 'keepnl' isn't true
--]]
local function format_string( str, keepnl )
-- replace double "special chars" with "temps" for later usage
-- replace double "special chars" with "temps" for later use
str = str:gsub( "%$%$", "\001" )
str = str:gsub( "%%%%", "\002" )
str = str:gsub( "@@", "\003" )
@ -67,129 +93,260 @@ local header = [[
-- Build the documentation starting from the given file
local function build_file( fname )
dofile( fname )
local res = {}
-- process title
if not title then
return false, "title not found"
end
local page = header:format( title ) .. "\n\n"
-- process overview
if not overview then
return false, "overview not found"
end
page = page .. '<a name="overview"><h3>Overview</h3></a>\n<p>' .. format_string( overview ) .. "</p>\n\n"
-- process structures if needed
if structures then
page = page .. "<h3>Data structures, constants and types</h3>\n"
for i = 1, #structures do
local s = structures[ i ]
if not s.text or not s.desc then
return false, "structure without text or desc fields"
end
-- text/link
if s.link then page = page .. string.format( '<a name="%s">', s.link ) end
page = page .. "<p><pre><code>" .. format_string( s.text, true ) .. "</code></pre></p>"
if s.link then page = page .. "</a>" end
-- description
page = page .. "\n<p>" .. format_string( s.desc ) .. "</p>\n\n"
end
end
-- process functions now
if not funcs then
return false, "funcs not found"
end
page = page .. "<h3>Functions</h3>\n"
for i = 1, #funcs do
local f = funcs[ i ]
if not f.sig or not f.desc then
return false, "function without sig or desc fields"
end
-- signature/link
if f.link then page = page .. string.format( '<a name="%s">', f.link ) end
page = page .. "<p><pre><code>" .. f.sig .. "</code></pre></p>"
if f.link then page = page .. "</a>" end
-- description
page = page .. "\n<p>" .. format_string( f.desc ) .. "</p>\n"
-- arguments
page = page .. "<p><b>Arguments</b>: "
if f.args then
local a = f.args
if #a == 1 then
local t = a[ 1 ]
page = page .. "<b>" .. t.name .. "</b> - " .. format_string( t.desc )
for _, lang in pairs( languages ) do
res[ lang ] = {}
res[ lang ].wb = {}
local wb = res[ lang ].wb
-- we need english always
-- the other languages will be substituted with english if not found
local resname = string.format( "data_%s", lang )
local r = _G[ resname ]
if not r then
if lang == "en" then
return false, "data_en must exist in the description"
else
page = page .. "\n<ul>\n"
for i = 1, #a do
local t = a[ i ]
page = page .. " <li><b>" .. t.name .. "</b> - " .. format_string( t.desc) .. "</li>\n"
print( string.format( "'%s': data for language '%s' not found, defaulting to english", fname, lang ) )
r = _G[ "data_en" ]
end
end
-- process names
if not r.menu_name then
return false, "menu_names not found"
end
wb.name = r.menu_name
-- process title
if not r.title then
return false, "title not found"
end
local page = header:format( r.title ) .. "\n\n"
-- process overview
if not r.overview then
return false, "overview not found"
end
page = page .. '<a name="overview"><h3>Overview</h3></a>\n<p>' .. format_string( r.overview ) .. "</p>\n\n"
-- process structures if needed
if r.structures then
local structures = r.structures
wb.structs = {}
page = page .. '<a name="structures"><h3>Data structures, constants and types</h3></a>\n'
for i = 1, #structures do
local s = structures[ i ]
wb.structs[ #wb.structs + 1 ] = s.name
if not s.text or not s.desc or not s.name then
return false, "structure without text, desc or name fields"
end
page = page .. "</ul>"
end
else
page = page .. "none"
-- text/name. The link name is ALWAYS the one in ENGLISH.
page = page .. string.format( '<a name="%s">', name2link( res.en.wb.structs[ i ] ) )
page = page .. "<p><pre><code>" .. format_string( s.text, true ) .. "</code></pre></p>"
page = page .. "</a>"
-- description
page = page .. "\n<p>" .. format_string( s.desc ) .. "</p>\n\n"
end
end
page = page .. "</p>\n"
-- return value
page = page .. "<p><b>Returns</b>: "
if f.ret then
local r = f.ret
if type( r ) == "string" or ( type( r ) == "table" and #r == 1 ) then
local text = type( r ) == "string" and r or r[ 1 ]
page = page .. format_string( text )
-- process functions now
if not r.funcs then
return false, "funcs not found"
end
local funcs = r.funcs
page = page .. '<a name="funcs"><h3>Functions</h3></a>\n'
wb.funcs = {}
for i = 1, #funcs do
local f = funcs[ i ]
if not f.sig or not f.desc then
return false, "function without sig or desc fields"
end
local funcname = namefromsig( f.sig )
if not funcname then
return false, string.format( "'%s' should contain the function name between '*' chars", f.sig )
end
wb.funcs[ #wb.funcs + 1 ] = funcname
-- signature
page = page .. string.format( '<a name="%s">', funcname )
page = page .. "<p><pre><code>" .. f.sig:gsub( '#', '' ) .. "</code></pre></p>"
page = page .. "</a>"
-- description
page = page .. "\n<p>" .. format_string( f.desc ) .. "</p>\n"
-- arguments
page = page .. "<p><b>Arguments</b>: "
if f.args then
local a = f.args
if #a == 1 then
local t = a[ 1 ]
page = page .. "<b>" .. t.name .. "</b> - " .. format_string( t.desc )
else
page = page .. "\n<ul>\n"
for i = 1, #a do
local t = a[ i ]
page = page .. " <li><b>" .. t.name .. "</b> - " .. format_string( t.desc) .. "</li>\n"
end
page = page .. "</ul>"
end
else
page = page .. "\n<ul>\n"
for i = 1, #r do page = page .. " <li>" .. format_string( r[ i ] ) .. "</li>\n" end
page = page .. "</ul>"
page = page .. "none"
end
else
page = page .. "nothing"
end
page = page .. "</p>\n\n"
end
-- aux data (if any)
if auxdata then
for i = 1, #auxdata do
local a = auxdata[ i ]
if not a.title or not a.desc then
return false, "auxdata without title or desc"
page = page .. "</p>\n"
-- return value
page = page .. "<p><b>Returns</b>: "
if f.ret then
local r = f.ret
if type( r ) == "string" or ( type( r ) == "table" and #r == 1 ) then
local text = type( r ) == "string" and r or r[ 1 ]
page = page .. format_string( text )
else
page = page .. "\n<ul>\n"
for i = 1, #r do page = page .. " <li>" .. format_string( r[ i ] ) .. "</li>\n" end
page = page .. "</ul>"
end
else
page = page .. "nothing"
end
if a.link then page = page .. string.format( '<a name="%s">', a.link ) end
page = page .. "<h3>" .. a.title .. "</h3>"
if a.link then page = page .. "</a>" end
page = page .. "\n<p>" .. format_string( a.desc ) .. "</p>\n\n"
page = page .. "</p>\n\n"
end
end
-- footer
page = page .. "</body></html>\n"
return page
-- aux data (if any)
if r.auxdata then
local auxdata = r.auxdata
wb.auxdata = {}
for i = 1, #auxdata do
local a = auxdata[ i ]
wb.auxdata[ #wb.auxdata + 1 ] = a.title
if not a.title or not a.desc then
return false, "auxdata without title or desc"
end
-- the link name is ALWAYS the one in ENGLISH
page = page .. string.format( '<a name="%s">', name2link( res.en.wb.auxdata[ i ] ) )
page = page .. "<h3>" .. a.title .. "</h3>"
page = page .. "</a>"
page = page .. "\n<p>" .. format_string( a.desc ) .. "</p>\n\n"
end
end
-- footer
page = page .. "</body></html>\n"
res[ lang ].page = page
end
return res
end
-- Helper function to get strings in all languages when needed
local function alllangs( getstr )
local str = "name = {"
for _, lang in pairs( languages ) do
str = str .. string.format( ' %s = "%s",', lang, getstr( lang ) )
end
return str .. " }"
end
local args = { ... }
if #args ~= 1 then
print "Usage: builddoc <filename>"
-- Transform the data from the wb dictionary (in 'fulldata') for module 'modname' to a wb string
local function wb2str( fulldata, modname )
local relfname = "arch_platform_" .. modname .. ".html"
local res = fulldata[ modname ]
local wbstr = string.format( ' { %s,\n link = "%s",\n folder =\n {\n', alllangs( function( x ) return res[ x ].wb.name end ), relfname )
-- Overview
wbstr = wbstr .. string.format( ' { %s,\n link = "%s#overview"\n },\n', alllangs( function( x ) return overview_tr[ x ] end ), relfname )
-- Data structures (if needed)
if res.en.wb.structs then
wbstr = wbstr .. string.format( ' { %s,\n link = "%s#structures",\n folder =\n {\n', alllangs( function( x ) return structures_tr[ x ] end ), relfname )
for i = 1, #res.en.wb.structs do
local v = res.en.wb.structs[ i ]
wbstr = wbstr .. string.format( ' { %s,\n link = "%s#%s",\n },\n', alllangs( function( x ) return res[ x ].wb.structs[ i ] end ), relfname, name2link( v ) )
end
wbstr = wbstr .. " }\n },\n"
end
-- Functions
wbstr = wbstr .. string.format( ' { %s,\n link = "%s#funcs",\n folder =\n {\n', alllangs( function( x ) return functions_tr[ x ] end ), relfname )
for _, v in pairs( res.en.wb.funcs ) do
wbstr = wbstr .. string.format( ' { name = { en = "%s", pt = "%s" },\n link = "%s#%s",\n },\n', v, v, relfname, name2link( v ) )
end
wbstr = wbstr .. " }\n },\n"
-- Aux data (if needed)
if res.en.wb.auxdata then
for i = 1, #res.en.wb.auxdata do
local v = res.en.wb.auxdata[ i ]
wbstr = wbstr .. string.format( ' { %s,\n link = "%s#%s"\n },\n', alllangs( function( x ) return res[ x ].wb.auxdata[ i ] end ), relfname, name2link( v ) )
end
end
-- Close the structure and return
wbstr = wbstr .. " }\n },\n"
return wbstr
end
-- Read our complete template for wb_usr.lua
local wbloc = "wb/wb_usr_template.lua"
local realwbloc = "wb/wb_usr.lua"
local wbf = io.open( wbloc, "rb" )
if not wbf then
print( string.format( "Cannot open %s for reading", wbloc ) )
return 1
end
local wbdata = wbf:read( "*a" )
wbf:close()
-- Check that our template has the required pattern
local pattern = "%$%$ARCH_PLATFORM%$%$"
if not wbdata:find( pattern ) then
print( string.format( "$$arch_platform$$ not found in wb_usr_template.lua", modname ) )
return 1
end
-- Open the actual wb_usr.lua in write mode
local realwbf = io.open( realwbloc, "wb" )
if not realwbf then
print( string.format( "Cannot open %s for writing", realwbloc ) )
return 1
end
local page, res = build_file( args[ 1 ] )
if page then
local fname = args[ 1 ]:gsub( "%.lua", "" ) .. ".html"
local f = io.open( fname, "wb" )
if not f then
print( string.format( "Unable to open %s for writing", fname ) )
return 1
-- Generate documentation for each module in turn
local fulldata = {}
for _, modname in pairs( arch_platform_components ) do
local descfname = string.format( "arch_platform/arch_platform_%s.lua", modname )
local res, err = build_file( descfname )
if res then
fulldata[ modname ] = res
-- Write doc for each language
for _, lang in pairs( languages ) do
local fname = string.format( "%s/arch_platform_%s.html", lang, modname )
local f = io.open( fname, "wb" )
if not f then
print( string.format( "Unable to open %s for writing", fname ) )
return 1
else
f:write( res[ lang ].page )
f:close()
print( ( "Wrote %s" ):format( fname ) )
end
end
else
f:write( page )
f:close()
print( ( "Wrote %s" ):format( fname ) )
print( string.format( "Error processing module '%s': %s", modname, err ) )
return 1
end
else
print( string.format( "Error processing %s: %s", args[ 1 ], res ) )
return 1
end
print ""
end
-- Now it's finally time to get our wb/wb_usr.lua
local fullwb = ''
for _, modname in pairs( arch_platform_components ) do
local wbstr = wb2str( fulldata, modname )
fullwb = fullwb .. wbstr
end
-- Add beginning and end to fullwb
fullwb = string.format( '{ %s,\n link = "arch_platform.html",\n folder = \n {\n%s }\n}\n', alllangs( function( x ) return pi_tr[ x ] end ), fullwb )
-- Substitute our pattern and write everything back to disk
wbdata = wbdata:gsub( pattern, fullwb )
realwbf:write( wbdata )
realwbf:close()
print "All done, remember to run 'lua wb_build.lua' in the 'wb' directory to build your navigation tree"

View File

@ -287,39 +287,7 @@ wb_usr.tree =
},
},
},
{ name = { en = "Platform interface", pt = "##Platform interface" },
link = "arch_platform.html",
folder =
{
{ name = { en = "Low-level", pt="##Low-level"},
link = "arch_platform_ll.html",
},
{ name = { en = "PIO", pt = "PIO" },
link = "arch_platform_pio.html",
},
{ name = { en = "SPI", pt = "SPI" },
link = "arch_platform_spi.html",
},
{ name = { en = "UART", pt = "UART" },
link = "arch_platform_uart.html",
},
{ name = { en = "Timers", pt = "##Timers" },
link = "arch_platform_timers.html",
},
{ name = { en = "PWM", pt = "PWM" },
link = "arch_platform_pwm.html",
},
{ name = { en = "CPU", pt = "CPU" },
link = "arch_platform_cpu.html",
},
{ name = { en = "ADC", pt = "ADC" },
link = "arch_platform_adc.html",
},
{ name = { en = "Ethernet", pt = "ethernet" },
link = "arch_platform_eth.html",
},
},
},
$$ARCH_PLATFORM$$,
{ name = { en = "ROM file system", pt = "##ROM file system" },
link = "arch_romfs.html",
},

View File

@ -16,26 +16,25 @@ en/tc_cortex.html
en/arch_platform_ll.html
en/faq.html
en/net_ref.html
en/refman.html
en/arch_newport.html
en/doc.html
en/tutorials.html
en/refman.html
en/tut_bootpc.html
en/tc_arm.html
en/tchainbuild.html
en/tut_bootpc.html
en/tut_openocd.html
en/arch.html
en/tutorials.html
en/arch_platform_spi.html
en/arch_coding.html
en/arch.html
en/arch_romfs.html
en/arch_coding.html
en/arch_con_term.html
en/arch_ltr.html
en/arch_platform_pwm.html
en/installing_avr32.html
en/installing_str7.html
en/installing_at91sam7x.html
en/installing.html
en/arch_platform_adc.html
en/arch_ltr.html
en/using.html
en/versionhistory.html
en/toolchains.html

View File

@ -16,26 +16,25 @@ pt/tc_cortex.html
pt/arch_platform_ll.html
pt/faq.html
pt/net_ref.html
pt/refman.html
pt/arch_newport.html
pt/doc.html
pt/tutorials.html
pt/refman.html
pt/tut_bootpc.html
pt/tc_arm.html
pt/tchainbuild.html
pt/tut_bootpc.html
pt/tut_openocd.html
pt/arch.html
pt/tutorials.html
pt/arch_platform_spi.html
pt/arch_coding.html
pt/arch.html
pt/arch_romfs.html
pt/arch_coding.html
pt/arch_con_term.html
pt/arch_ltr.html
pt/arch_platform_pwm.html
pt/installing_avr32.html
pt/installing_str7.html
pt/installing_at91sam7x.html
pt/installing.html
pt/arch_platform_adc.html
pt/arch_ltr.html
pt/using.html
pt/versionhistory.html
pt/toolchains.html

View File

@ -298,160 +298,270 @@
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2')"><a name="link55folder.5.4.2" class="el" href="en/arch_platform.html">Platform interface</a></p>
<div id="folder.5.4.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link56folder.5.4.2" href="en/arch_platform_ll.html">Low-level</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link57folder.5.4.2" href="en/arch_platform_pio.html">PIO</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link58folder.5.4.2" href="en/arch_platform_spi.html">SPI</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link59folder.5.4.2" href="en/arch_platform_uart.html">UART</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link60folder.5.4.2" href="en/arch_platform_timers.html">Timers</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link61folder.5.4.2" href="en/arch_platform_pwm.html">PWM</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link62folder.5.4.2" href="en/arch_platform_cpu.html">CPU</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link63folder.5.4.2" href="en/arch_platform_adc.html">ADC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link64folder.5.4.2" href="en/arch_platform_eth.html">Ethernet</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.1')"><a name="link56folder.5.4.2.1" class="el" href="en/arch_platform_ll.html">Low-level</a></p>
<div id="folder.5.4.2.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link57folder.5.4.2.1" href="en/arch_platform_ll.html#overview">Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.1.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.1.1')"><a name="link58folder.5.4.2.1.1" class="el" href="en/arch_platform_ll.html#structures">Data structures</a></p>
<div id="folder.5.4.2.1.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link59folder.5.4.2.1.1" href="en/arch_platform_ll.html#status_codes">Status codes</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.1.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.1.2')"><a name="link60folder.5.4.2.1.2" class="el" href="en/arch_platform_ll.html#funcs">Functions</a></p>
<div id="folder.5.4.2.1.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link61folder.5.4.2.1.2" href="en/arch_platform_ll.html#platform_init">platform_init</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link62folder.5.4.2.1.2" href="en/arch_platform_ll.html#platform_get_last_free_ram">platform_get_last_free_ram</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link63folder.5.4.2.1.2" href="en/arch_platform_ll.html#platform_get_last_free_ram">platform_get_last_free_ram</a></p>
</div>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.2')"><a name="link64folder.5.4.2.2" class="el" href="en/arch_platform_pio.html">PIO</a></p>
<div id="folder.5.4.2.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link65folder.5.4.2.2" href="en/arch_platform_pio.html#overview">Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.2.1')"><a name="link66folder.5.4.2.2.1" class="el" href="en/arch_platform_pio.html#structures">Data structures</a></p>
<div id="folder.5.4.2.2.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link67folder.5.4.2.2.1" href="en/arch_platform_pio.html#pio_operations">PIO operations</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link68folder.5.4.2.2.1" href="en/arch_platform_pio.html#pio_data_type">PIO data type</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.2.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.2.2')"><a name="link69folder.5.4.2.2.2" class="el" href="en/arch_platform_pio.html#funcs">Functions</a></p>
<div id="folder.5.4.2.2.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link70folder.5.4.2.2.2" href="en/arch_platform_pio.html#platform_pio_has_port">platform_pio_has_port</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link71folder.5.4.2.2.2" href="en/arch_platform_pio.html#platform_pio_has_pin">platform_pio_has_pin</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link72folder.5.4.2.2.2" href="en/arch_platform_pio.html#platform_pio_get_prefix">platform_pio_get_prefix</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link73folder.5.4.2.2.2" href="en/arch_platform_pio.html#platform_pio_op">platform_pio_op</a></p>
</div>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.3')"><a name="link74folder.5.4.2.3" class="el" href="en/arch_platform_spi.html">SPI</a></p>
<div id="folder.5.4.2.3">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link75folder.5.4.2.3" href="en/arch_platform_spi.html#overview">Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.3.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.3.1')"><a name="link76folder.5.4.2.3.1" class="el" href="en/arch_platform_spi.html#structures">Data structures</a></p>
<div id="folder.5.4.2.3.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link77folder.5.4.2.3.1" href="en/arch_platform_spi.html#chip_select">Chip select</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link78folder.5.4.2.3.1" href="en/arch_platform_spi.html#spi_mode">SPI mode</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link79folder.5.4.2.3.1" href="en/arch_platform_spi.html#spi_data_type">SPI data type</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.3.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.3.2')"><a name="link80folder.5.4.2.3.2" class="el" href="en/arch_platform_spi.html#funcs">Functions</a></p>
<div id="folder.5.4.2.3.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link81folder.5.4.2.3.2" href="en/arch_platform_spi.html#platform_spi_exists">platform_spi_exists</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link82folder.5.4.2.3.2" href="en/arch_platform_spi.html#platform_spi_setup">platform_spi_setup</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link83folder.5.4.2.3.2" href="en/arch_platform_spi.html#platform_spi_send_recv">platform_spi_send_recv</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link84folder.5.4.2.3.2" href="en/arch_platform_spi.html#platform_spi_select">platform_spi_select</a></p>
</div>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.4')"><a name="link85folder.5.4.2.4" class="el" href="en/arch_platform_uart.html">UART</a></p>
<div id="folder.5.4.2.4">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link86folder.5.4.2.4" href="en/arch_platform_uart.html#overview">Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.4.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.4.1')"><a name="link87folder.5.4.2.4.1" class="el" href="en/arch_platform_uart.html#structures">Data structures</a></p>
<div id="folder.5.4.2.4.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link88folder.5.4.2.4.1" href="en/arch_platform_uart.html#uart_parity">UART parity</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link89folder.5.4.2.4.1" href="en/arch_platform_uart.html#uart_stop_bits">UART stop bits</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link90folder.5.4.2.4.1" href="en/arch_platform_uart.html#uart_timeout">UART timeout</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.4.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.4.2')"><a name="link91folder.5.4.2.4.2" class="el" href="en/arch_platform_uart.html#funcs">Functions</a></p>
<div id="folder.5.4.2.4.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link92folder.5.4.2.4.2" href="en/arch_platform_uart.html#platform_uart_exists">platform_uart_exists</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link93folder.5.4.2.4.2" href="en/arch_platform_uart.html#platform_uart_setup">platform_uart_setup</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link94folder.5.4.2.4.2" href="en/arch_platform_uart.html#platform_uart_send">platform_uart_send</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link95folder.5.4.2.4.2" href="en/arch_platform_uart.html#platform_uart_recv">platform_uart_recv</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link96folder.5.4.2.4.2" href="en/arch_platform_uart.html#platform_s_uart_recv">platform_s_uart_recv</a></p>
</div>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.5')"><a name="link97folder.5.4.2.5" class="el" href="en/arch_platform_timers.html">Timers</a></p>
<div id="folder.5.4.2.5">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link98folder.5.4.2.5" href="en/arch_platform_timers.html#overview">Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.5.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.5.1')"><a name="link99folder.5.4.2.5.1" class="el" href="en/arch_platform_timers.html#structures">Data structures</a></p>
<div id="folder.5.4.2.5.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link100folder.5.4.2.5.1" href="en/arch_platform_timers.html#timer_data_type">Timer data type</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link101folder.5.4.2.5.1" href="en/arch_platform_timers.html#timer_operations">Timer operations</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.5.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.5.2')"><a name="link102folder.5.4.2.5.2" class="el" href="en/arch_platform_timers.html#funcs">Functions</a></p>
<div id="folder.5.4.2.5.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link103folder.5.4.2.5.2" href="en/arch_platform_timers.html#platform_timer_exists">platform_timer_exists</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link104folder.5.4.2.5.2" href="en/arch_platform_timers.html#platform_timer_delay">platform_timer_delay</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link105folder.5.4.2.5.2" href="en/arch_platform_timers.html#platform_s_timer_delay">platform_s_timer_delay</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link106folder.5.4.2.5.2" href="en/arch_platform_timers.html#platform_timer_op">platform_timer_op</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link107folder.5.4.2.5.2" href="en/arch_platform_timers.html#platform_s_timer_op">platform_s_timer_op</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link108folder.5.4.2.5.2" href="en/arch_platform_timers.html#platform_timer_get_diff_us">platform_timer_get_diff_us</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link109folder.5.4.2.5" href="en/arch_platform_timers.html#virtual_timers">Virtual timers</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.6')"><a name="link110folder.5.4.2.6" class="el" href="en/arch_platform_pwm.html">PWM</a></p>
<div id="folder.5.4.2.6">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link111folder.5.4.2.6" href="en/arch_platform_pwm.html#overview">Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.6.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.6.1')"><a name="link112folder.5.4.2.6.1" class="el" href="en/arch_platform_pwm.html#structures">Data structures</a></p>
<div id="folder.5.4.2.6.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link113folder.5.4.2.6.1" href="en/arch_platform_pwm.html#pwm_operations">PWM operations</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.6.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.6.2')"><a name="link114folder.5.4.2.6.2" class="el" href="en/arch_platform_pwm.html#funcs">Functions</a></p>
<div id="folder.5.4.2.6.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link115folder.5.4.2.6.2" href="en/arch_platform_pwm.html#platform_pwm_exists">platform_pwm_exists</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link116folder.5.4.2.6.2" href="en/arch_platform_pwm.html#platform_pwm_setup">platform_pwm_setup</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link117folder.5.4.2.6.2" href="en/arch_platform_pwm.html#platform_pwm_op">platform_pwm_op</a></p>
</div>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.7" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.7')"><a name="link118folder.5.4.2.7" class="el" href="en/arch_platform_cpu.html">CPU</a></p>
<div id="folder.5.4.2.7">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link119folder.5.4.2.7" href="en/arch_platform_cpu.html#overview">Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.7.1" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.7.1')"><a name="link120folder.5.4.2.7.1" class="el" href="en/arch_platform_cpu.html#funcs">Functions</a></p>
<div id="folder.5.4.2.7.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link121folder.5.4.2.7.1" href="en/arch_platform_cpu.html#platform_cpu_enable_interrupts">platform_cpu_enable_interrupts</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link122folder.5.4.2.7.1" href="en/arch_platform_cpu.html#platform_cpu_disable_interrupts">platform_cpu_disable_interrupts</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link123folder.5.4.2.7.1" href="en/arch_platform_cpu.html#platform_cpu_get_frequency">platform_cpu_get_frequency</a></p>
</div>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.8" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.8')"><a name="link124folder.5.4.2.8" class="el" href="en/arch_platform_eth.html">Ethernet</a></p>
<div id="folder.5.4.2.8">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link125folder.5.4.2.8" href="en/arch_platform_eth.html#overview">Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img name="imgfolder.5.4.2.8.1" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.8.1')"><a name="link126folder.5.4.2.8.1" class="el" href="en/arch_platform_eth.html#funcs">Functions</a></p>
<div id="folder.5.4.2.8.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link127folder.5.4.2.8.1" href="en/arch_platform_eth.html#platform_eth_send_packet">platform_eth_send_packet</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link128folder.5.4.2.8.1" href="en/arch_platform_eth.html#platform_eth_get_packet_nb">platform_eth_get_packet_nb</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link129folder.5.4.2.8.1" href="en/arch_platform_eth.html#platform_eth_force_interrupt">platform_eth_force_interrupt</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link130folder.5.4.2.8.1" href="en/arch_platform_eth.html#platform_eth_get_elapsed_time">platform_eth_get_elapsed_time</a></p>
</div>
</div>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link65folder.5.4" href="en/arch_romfs.html">ROM file system</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link66folder.5.4" href="en/arch_newport.html">Adding a new port</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link67folder.5.4" href="en/arch_ltr.html">Modules and LTR</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link68folder.5.4" href="en/arch_con_term.html">Consoles and terminals</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link69folder.5.4" href="en/arch_tcpip.html">TCP/IP in eLua</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link70folder.5.4" href="en/arch_coding.html">eLua coding style</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link131folder.5.4" href="en/arch_romfs.html">ROM file system</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link132folder.5.4" href="en/arch_newport.html">Adding a new port</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link133folder.5.4" href="en/arch_ltr.html">Modules and LTR</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link134folder.5.4" href="en/arch_con_term.html">Consoles and terminals</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link135folder.5.4" href="en/arch_tcpip.html">TCP/IP in eLua</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link136folder.5.4" href="en/arch_coding.html">eLua coding style</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link71folder.5" href="en/examples.html">Examples</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link137folder.5" href="en/examples.html">Examples</a></p>
</div>
<p><img name="imgfolder.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6')"><a name="link72folder.6" class="el" href="en/tutorials.html">Tutorials</a></p>
<p><img name="imgfolder.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6')"><a name="link138folder.6" class="el" href="en/tutorials.html">Tutorials</a></p>
<div id="folder.6">
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link73folder.6" href="en/tut_bootpc.html">Booting on a PC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link74folder.6" href="en/tut_bootstick.html">Booting from a Pendrive</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.6.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1')"><a name="link75folder.6.1" class="el" href="en/tchainbuild.html">Toolchain Building</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link139folder.6" href="en/tut_bootpc.html">Booting on a PC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link140folder.6" href="en/tut_bootstick.html">Booting from a Pendrive</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.6.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1')"><a name="link141folder.6.1" class="el" href="en/tchainbuild.html">Toolchain Building</a></p>
<div id="folder.6.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link76folder.6.1" href="en/tc_arm.html">ARM7 & ARM9 Toolchains</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link77folder.6.1" href="en/tc_cortex.html">ARM Cortex-M3</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link78folder.6.1" href="en/tc_386.html">i386</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link142folder.6.1" href="en/tc_arm.html">ARM7 & ARM9 Toolchains</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link143folder.6.1" href="en/tc_cortex.html">ARM Cortex-M3</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link144folder.6.1" href="en/tc_386.html">i386</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link79folder.6" href="en/tut_openocd.html">Using OpenOCD</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link145folder.6" href="en/tut_openocd.html">Using OpenOCD</a></p>
</div>
<p><img name="imgfolder.7" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7')"><a name="link80folder.7" class="el" href="en/refman.html#genericmodules">Reference Manual</a></p>
<p><img name="imgfolder.7" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7')"><a name="link146folder.7" class="el" href="en/refman.html#genericmodules">Reference Manual</a></p>
<div id="folder.7">
<p><img src="wb_img/blank.png"><img name="imgfolder.7.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1')"><a name="link81folder.7.1" class="el" href="en/refman.html#genericmodules">Generic Modules</a></p>
<p><img src="wb_img/blank.png"><img name="imgfolder.7.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1')"><a name="link147folder.7.1" class="el" href="en/refman.html#genericmodules">Generic Modules</a></p>
<div id="folder.7.1">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.1')"><a name="link82folder.7.1.1" class="el" href="en/refman.html#bitmodule">bit</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.1')"><a name="link148folder.7.1.1" class="el" href="en/refman.html#bitmodule">bit</a></p>
<div id="folder.7.1.1">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link83folder.7.1.1" href="en/refman.html#bit_bnot">bnot</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link84folder.7.1.1" href="en/refman.html#bit_band">band</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link85folder.7.1.1" href="en/refman.html#bit_bor">bor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link86folder.7.1.1" href="en/refman.html#bit_bxor">bxor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link87folder.7.1.1" href="en/refman.html#bit_lshift">lshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link88folder.7.1.1" href="en/refman.html#bit_rshift">rshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link89folder.7.1.1" href="en/refman.html#bit_bit">bit</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link90folder.7.1.1" href="en/refman.html#bit_set">set</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link91folder.7.1.1" href="en/refman.html#bit_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link92folder.7.1.1" href="en/refman.html#bit_isset">isset</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link93folder.7.1.1" href="en/refman.html#bit_isclear">isclear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link149folder.7.1.1" href="en/refman.html#bit_bnot">bnot</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link150folder.7.1.1" href="en/refman.html#bit_band">band</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link151folder.7.1.1" href="en/refman.html#bit_bor">bor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link152folder.7.1.1" href="en/refman.html#bit_bxor">bxor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link153folder.7.1.1" href="en/refman.html#bit_lshift">lshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link154folder.7.1.1" href="en/refman.html#bit_rshift">rshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link155folder.7.1.1" href="en/refman.html#bit_bit">bit</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link156folder.7.1.1" href="en/refman.html#bit_set">set</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link157folder.7.1.1" href="en/refman.html#bit_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link158folder.7.1.1" href="en/refman.html#bit_isset">isset</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link159folder.7.1.1" href="en/refman.html#bit_isclear">isclear</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.2')"><a name="link94folder.7.1.2" class="el" href="en/refman.html#cpumodule">cpu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.2')"><a name="link160folder.7.1.2" class="el" href="en/refman.html#cpumodule">cpu</a></p>
<div id="folder.7.1.2">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link95folder.7.1.2" href="en/refman.html#cpu_write32">write32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link96folder.7.1.2" href="en/refman.html#cpu_write16">write16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link97folder.7.1.2" href="en/refman.html#cpu_write8">write8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link98folder.7.1.2" href="en/refman.html#cpu_read32">reat32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link99folder.7.1.2" href="en/refman.html#cpu_read16">read16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link100folder.7.1.2" href="en/refman.html#cpu_read8">read8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link101folder.7.1.2" href="en/refman.html#cpu_disableinterrupts">disableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link102folder.7.1.2" href="en/refman.html#cpu_enableinterrupts">enableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link103folder.7.1.2" href="en/refman.html#cpu_clockfrequency">clockfrequency</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link161folder.7.1.2" href="en/refman.html#cpu_write32">write32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link162folder.7.1.2" href="en/refman.html#cpu_write16">write16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link163folder.7.1.2" href="en/refman.html#cpu_write8">write8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link164folder.7.1.2" href="en/refman.html#cpu_read32">reat32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link165folder.7.1.2" href="en/refman.html#cpu_read16">read16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link166folder.7.1.2" href="en/refman.html#cpu_read8">read8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link167folder.7.1.2" href="en/refman.html#cpu_disableinterrupts">disableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link168folder.7.1.2" href="en/refman.html#cpu_enableinterrupts">enableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link169folder.7.1.2" href="en/refman.html#cpu_clockfrequency">clockfrequency</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.3')"><a name="link104folder.7.1.3" class="el" href="en/refman.html#gpiomodule">gpio</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.3')"><a name="link170folder.7.1.3" class="el" href="en/refman.html#gpiomodule">gpio</a></p>
<div id="folder.7.1.3">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link105folder.7.1.3" href="en/refman.html#gpio_configpin">configpin</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link106folder.7.1.3" href="en/refman.html#gpio_setpinvalue">setpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link107folder.7.1.3" href="en/refman.html#gpio_getpinvalue">getpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link108folder.7.1.3" href="en/refman.html#gpio_setpinhigh">setpinhigh</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link109folder.7.1.3" href="en/refman.html#gpio_setpinlow">setpinlow</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link171folder.7.1.3" href="en/refman.html#gpio_configpin">configpin</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link172folder.7.1.3" href="en/refman.html#gpio_setpinvalue">setpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link173folder.7.1.3" href="en/refman.html#gpio_getpinvalue">getpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link174folder.7.1.3" href="en/refman.html#gpio_setpinhigh">setpinhigh</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link175folder.7.1.3" href="en/refman.html#gpio_setpinlow">setpinlow</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.4')"><a name="link110folder.7.1.4" class="el" href="en/refman.html#netmodule">net</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.4')"><a name="link176folder.7.1.4" class="el" href="en/refman.html#netmodule">net</a></p>
<div id="folder.7.1.4">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link111folder.7.1.4" href="en/net_ref.html#net_setup">to be added ...</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link177folder.7.1.4" href="en/net_ref.html#net_setup">to be added ...</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.5')"><a name="link112folder.7.1.5" class="el" href="en/refman.html#pwmmodule">pwm</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.5')"><a name="link178folder.7.1.5" class="el" href="en/refman.html#pwmmodule">pwm</a></p>
<div id="folder.7.1.5">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link113folder.7.1.5" href="en/refman.html#pwm_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link114folder.7.1.5" href="en/refman.html#pwm_setcycle">setcycle</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link115folder.7.1.5" href="en/refman.html#pwm_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link116folder.7.1.5" href="en/refman.html#pwm_stop">stop</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link117folder.7.1.5" href="en/refman.html#pwm_setclock">setclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link118folder.7.1.5" href="en/refman.html#pwm_getclock">getclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link179folder.7.1.5" href="en/refman.html#pwm_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link180folder.7.1.5" href="en/refman.html#pwm_setcycle">setcycle</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link181folder.7.1.5" href="en/refman.html#pwm_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link182folder.7.1.5" href="en/refman.html#pwm_stop">stop</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link183folder.7.1.5" href="en/refman.html#pwm_setclock">setclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link184folder.7.1.5" href="en/refman.html#pwm_getclock">getclock</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.6')"><a name="link119folder.7.1.6" class="el" href="en/refman.html#spimodules">spi</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.6')"><a name="link185folder.7.1.6" class="el" href="en/refman.html#spimodules">spi</a></p>
<div id="folder.7.1.6">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link120folder.7.1.6" href="en/refman.html#spi_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link121folder.7.1.6" href="en/refman.html#spi_select">select</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link122folder.7.1.6" href="en/refman.html#spi_unselect">unselect</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link123folder.7.1.6" href="en/refman.html#spi_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link124folder.7.1.6" href="en/refman.html#spi_sendrecv">sendrecv</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link186folder.7.1.6" href="en/refman.html#spi_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link187folder.7.1.6" href="en/refman.html#spi_select">select</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link188folder.7.1.6" href="en/refman.html#spi_unselect">unselect</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link189folder.7.1.6" href="en/refman.html#spi_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link190folder.7.1.6" href="en/refman.html#spi_sendrecv">sendrecv</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.7" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.7')"><a name="link125folder.7.1.7" class="el" href="en/refman.html#sysmodule">sys</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.7" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.7')"><a name="link191folder.7.1.7" class="el" href="en/refman.html#sysmodule">sys</a></p>
<div id="folder.7.1.7">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link126folder.7.1.7" href="en/refman.html#sys_platforms">platform</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link127folder.7.1.7" href="en/refman.html#sys_mcu">mcu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link128folder.7.1.7" href="en/refman.html#sys_cpu">cpu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link129folder.7.1.7" href="en/refman.html#sys_board">board</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link192folder.7.1.7" href="en/refman.html#sys_platforms">platform</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link193folder.7.1.7" href="en/refman.html#sys_mcu">mcu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link194folder.7.1.7" href="en/refman.html#sys_cpu">cpu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link195folder.7.1.7" href="en/refman.html#sys_board">board</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.8" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.8')"><a name="link130folder.7.1.8" class="el" href="en/refman.html#termmodule">term</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.8" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.8')"><a name="link196folder.7.1.8" class="el" href="en/refman.html#termmodule">term</a></p>
<div id="folder.7.1.8">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link131folder.7.1.8" href="en/refman.html#term_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link132folder.7.1.8" href="en/refman.html#term_cleareol">cleareol</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link133folder.7.1.8" href="en/refman.html#term_moveto">moveto</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link134folder.7.1.8" href="en/refman.html#term_moveup">moveup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link135folder.7.1.8" href="en/refman.html#term_movedown">movedown</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link136folder.7.1.8" href="en/refman.html#term_moveleft">moveleft</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link137folder.7.1.8" href="en/refman.html#term_moveright">moveright</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link138folder.7.1.8" href="en/refman.html#term_getlinecount">getlinecount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link139folder.7.1.8" href="en/refman.html#term_getcolcount">getcolcount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link140folder.7.1.8" href="en/refman.html#term_printstr">printstr</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link141folder.7.1.8" href="en/refman.html#term_getx">getx</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link142folder.7.1.8" href="en/refman.html#term_gety">gety</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link143folder.7.1.8" href="en/refman.html#term_inputchar">inputchar</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link197folder.7.1.8" href="en/refman.html#term_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link198folder.7.1.8" href="en/refman.html#term_cleareol">cleareol</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link199folder.7.1.8" href="en/refman.html#term_moveto">moveto</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link200folder.7.1.8" href="en/refman.html#term_moveup">moveup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link201folder.7.1.8" href="en/refman.html#term_movedown">movedown</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link202folder.7.1.8" href="en/refman.html#term_moveleft">moveleft</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link203folder.7.1.8" href="en/refman.html#term_moveright">moveright</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link204folder.7.1.8" href="en/refman.html#term_getlinecount">getlinecount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link205folder.7.1.8" href="en/refman.html#term_getcolcount">getcolcount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link206folder.7.1.8" href="en/refman.html#term_printstr">printstr</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link207folder.7.1.8" href="en/refman.html#term_getx">getx</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link208folder.7.1.8" href="en/refman.html#term_gety">gety</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link209folder.7.1.8" href="en/refman.html#term_inputchar">inputchar</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.9" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.9')"><a name="link144folder.7.1.9" class="el" href="en/refman.html#tmrmodule">tmr</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.9" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.9')"><a name="link210folder.7.1.9" class="el" href="en/refman.html#tmrmodule">tmr</a></p>
<div id="folder.7.1.9">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link145folder.7.1.9" href="en/refman.html#tmr_delay">delay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link146folder.7.1.9" href="en/refman.html#tmr_read">read</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link147folder.7.1.9" href="en/refman.html#tmr_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link148folder.7.1.9" href="en/refman.html#tmr_diff">diff</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link149folder.7.1.9" href="en/refman.html#tmr_mindelay">mindelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link150folder.7.1.9" href="en/refman.html#tmr_maxdelay">maxdelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link151folder.7.1.9" href="en/refman.html#tmr_setclock">setclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link211folder.7.1.9" href="en/refman.html#tmr_delay">delay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link212folder.7.1.9" href="en/refman.html#tmr_read">read</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link213folder.7.1.9" href="en/refman.html#tmr_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link214folder.7.1.9" href="en/refman.html#tmr_diff">diff</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link215folder.7.1.9" href="en/refman.html#tmr_mindelay">mindelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link216folder.7.1.9" href="en/refman.html#tmr_maxdelay">maxdelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link217folder.7.1.9" href="en/refman.html#tmr_setclock">setclock</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.10" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.1.10')"><a name="link152folder.7.1.10" class="el" href="en/refman.html#uartmodule">uart</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.10" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.1.10')"><a name="link218folder.7.1.10" class="el" href="en/refman.html#uartmodule">uart</a></p>
<div id="folder.7.1.10">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link153folder.7.1.10" href="en/refman.html#uart_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link154folder.7.1.10" href="en/refman.html#uart_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link155folder.7.1.10" href="en/refman.html#uart_recv">recv</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link219folder.7.1.10" href="en/refman.html#uart_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link220folder.7.1.10" href="en/refman.html#uart_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link221folder.7.1.10" href="en/refman.html#uart_recv">recv</a></p>
</div>
</div>
<p><img src="wb_img/blank.png"><img name="imgfolder.7.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.2')"><a name="link156folder.7.2" class="el" href="en/refman.html#platdepmodules">Platform Dependent Modules</a></p>
<p><img src="wb_img/blank.png"><img name="imgfolder.7.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.2')"><a name="link222folder.7.2" class="el" href="en/refman.html#platdepmodules">Platform Dependent Modules</a></p>
<div id="folder.7.2">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.7.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.2.1')"><a name="link157folder.7.2.1" class="el" href="en/refman.html#adcmodule">adc</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.7.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.2.1')"><a name="link223folder.7.2.1" class="el" href="en/refman.html#adcmodule">adc</a></p>
<div id="folder.7.2.1">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link158folder.7.2.1" href="en/refman.html#adc_sample">sample</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link159folder.7.2.1" href="en/refman.html#adc_getsamples">getsamples</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link160folder.7.2.1" href="en/refman.html#adc_maxval">maxval</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link161folder.7.2.1" href="en/refman.html#adc_samplesready">samplesready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link162folder.7.2.1" href="en/refman.html#adc_dataready">dataready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link163folder.7.2.1" href="en/refman.html#adc_setmode">setmode</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link164folder.7.2.1" href="en/refman.html#adc_setsmoothing">setsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link165folder.7.2.1" href="en/refman.html#adc_getsmoothing">getsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link166folder.7.2.1" href="en/refman.html#adc_burst">burst</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link224folder.7.2.1" href="en/refman.html#adc_sample">sample</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link225folder.7.2.1" href="en/refman.html#adc_getsamples">getsamples</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link226folder.7.2.1" href="en/refman.html#adc_maxval">maxval</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link227folder.7.2.1" href="en/refman.html#adc_samplesready">samplesready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link228folder.7.2.1" href="en/refman.html#adc_dataready">dataready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link229folder.7.2.1" href="en/refman.html#adc_setmode">setmode</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link230folder.7.2.1" href="en/refman.html#adc_setsmoothing">setsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link231folder.7.2.1" href="en/refman.html#adc_getsmoothing">getsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link232folder.7.2.1" href="en/refman.html#adc_burst">burst</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.7.2.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.2.2')"><a name="link167folder.7.2.2" class="el" href="en/refman.html#dispmodule">disp</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.7.2.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.2.2')"><a name="link233folder.7.2.2" class="el" href="en/refman.html#dispmodule">disp</a></p>
<div id="folder.7.2.2">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link168folder.7.2.2" href="en/refman.html#disp_init">init</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link169folder.7.2.2" href="en/refman.html#disp_enable">enable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link170folder.7.2.2" href="en/refman.html#disp_disable">disable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link171folder.7.2.2" href="en/refman.html#disp_on">on</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link172folder.7.2.2" href="en/refman.html#disp_off">off</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link173folder.7.2.2" href="en/refman.html#disp_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link174folder.7.2.2" href="en/refman.html#disp_print">print</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link175folder.7.2.2" href="en/refman.html#disp_draw">draw</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link234folder.7.2.2" href="en/refman.html#disp_init">init</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link235folder.7.2.2" href="en/refman.html#disp_enable">enable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link236folder.7.2.2" href="en/refman.html#disp_disable">disable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link237folder.7.2.2" href="en/refman.html#disp_on">on</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link238folder.7.2.2" href="en/refman.html#disp_off">off</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link239folder.7.2.2" href="en/refman.html#disp_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link240folder.7.2.2" href="en/refman.html#disp_print">print</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link241folder.7.2.2" href="en/refman.html#disp_draw">draw</a></p>
</div>
</div>
</div>

View File

@ -219,239 +219,349 @@
<body style="margin: 2px; background-color: #F1F1F1" onload="showStartPage()">
<div class="tree" onmouseout="clearLastLink()">
<h3><a name="link0folder.0" class="el" href="pt/news.html">eLua</a></h3>
<p><img name="imgfolder.1" src="wb_img/minusnode.png" onclick="toggleFolder('folder.1')"><a name="link176folder.1" class="el" href="pt/overview.html">Apresentação</a></p>
<p><img name="imgfolder.1" src="wb_img/minusnode.png" onclick="toggleFolder('folder.1')"><a name="link242folder.1" class="el" href="pt/overview.html">Apresentação</a></p>
<div id="folder.1" style="display:block">
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link177folder.1" href="pt/overview.html#whatis">O que é eLua ?</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link178folder.1" href="pt/overview.html#features">##Features</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link179folder.1" href="pt/overview.html#audience">Público alvo</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link180folder.1" href="pt/overview.html#authors">Autores</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link181folder.1" href="pt/overview.html#contacts">Contatos</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link182folder.1" href="pt/overview.html#license">Licença</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link243folder.1" href="pt/overview.html#whatis">O que é eLua ?</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link244folder.1" href="pt/overview.html#features">##Features</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link245folder.1" href="pt/overview.html#audience">Público alvo</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link246folder.1" href="pt/overview.html#authors">Autores</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link247folder.1" href="pt/overview.html#contacts">Contatos</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link248folder.1" href="pt/overview.html#license">Licença</a></p>
</div>
<p><img name="imgfolder.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.2')"><a name="link183folder.2" class="el" href="pt/downloads.html">Downloads</a></p>
<p><img name="imgfolder.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.2')"><a name="link249folder.2" class="el" href="pt/downloads.html">Downloads</a></p>
<div id="folder.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link184folder.2" href="pt/downloads.html#binaries">Binaries</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.2.1')"><a name="link185folder.2.1" class="el" href="pt/downloads.html#source">Fontes</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link250folder.2" href="pt/downloads.html#binaries">Binaries</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.2.1')"><a name="link251folder.2.1" class="el" href="pt/downloads.html#source">Fontes</a></p>
<div id="folder.2.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link186folder.2.1" href="pt/downloads.html#official">Versões Oficiais[B</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link187folder.2.1" href="pt/downloads.html#svnpublic">SVN Público</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link188folder.2.1" href="pt/downloads.html#svndev">Desenvolvedores</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link252folder.2.1" href="pt/downloads.html#official">Versões Oficiais[B</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link253folder.2.1" href="pt/downloads.html#svnpublic">SVN Público</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link254folder.2.1" href="pt/downloads.html#svndev">Desenvolvedores</a></p>
</div>
<p><img src="wb_img/vertline.png"><img name="imgfolder.2.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.2.2')"><a name="link189folder.2.2" class="el" href="pt/dl_old.html">Versões Anteriores</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.2.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.2.2')"><a name="link255folder.2.2" class="el" href="pt/dl_old.html">Versões Anteriores</a></p>
<div id="folder.2.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link190folder.2.2" href="pt/dl_old.html#v041">0.4.1</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link191folder.2.2" href="pt/dl_old.html#v04">0.4</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link192folder.2.2" href="pt/dl_old.html#v03">0.3</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link193folder.2.2" href="pt/dl_old.html#v02">0.2</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link194folder.2.2" href="pt/dl_old.html#v01">0.1</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link256folder.2.2" href="pt/dl_old.html#v041">0.4.1</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link257folder.2.2" href="pt/dl_old.html#v04">0.4</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link258folder.2.2" href="pt/dl_old.html#v03">0.3</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link259folder.2.2" href="pt/dl_old.html#v02">0.2</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link260folder.2.2" href="pt/dl_old.html#v01">0.1</a></p>
</div>
</div>
<p><img name="imgfolder.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.3')"><a name="link195folder.3" class="el" href="pt/comunity.html">Comunidade</a></p>
<p><img name="imgfolder.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.3')"><a name="link261folder.3" class="el" href="pt/comunity.html">Comunidade</a></p>
<div id="folder.3">
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link196folder.3" href="pt/comunity.html#lists">Listas</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link197folder.3" href="pt/comunity.html#forums">##Forums</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link198folder.3" href="pt/comunity.html#credits">Créditos</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link262folder.3" href="pt/comunity.html#lists">Listas</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link263folder.3" href="pt/comunity.html#forums">##Forums</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link264folder.3" href="pt/comunity.html#credits">Créditos</a></p>
</div>
<p><img src="wb_img/node.png"><a class="el" name="link199folder" href="pt/news.html">Notícias</a></p>
<p><img name="imgfolder.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4')"><a name="link200folder.4" class="el" href="pt/status.html">Status</a></p>
<p><img src="wb_img/node.png"><a class="el" name="link265folder" href="pt/news.html">Notícias</a></p>
<p><img name="imgfolder.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.4')"><a name="link266folder.4" class="el" href="pt/status.html">Status</a></p>
<div id="folder.4">
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link201folder.4" href="pt/status.html#platforms">Plataformas Suportadas</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link202folder.4" href="pt/status.html#roadmap">Futuro</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link267folder.4" href="pt/status.html#platforms">Plataformas Suportadas</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link268folder.4" href="pt/status.html#roadmap">Futuro</a></p>
</div>
<p><img src="wb_img/node.png"><a class="el" name="link203folder" href="pt/versionhistory.html">Histórico de Versões</a></p>
<p><img src="wb_img/node.png"><a class="el" name="link269folder" href="pt/versionhistory.html">Histórico de Versões</a></p>
<p class="sep"><img src="wb_img/sepnode.png"></p>
<p><img name="imgfolder.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5')"><a name="link204folder.5" class="el" href="pt/doc.html">Documentação</a></p>
<p><img name="imgfolder.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5')"><a name="link270folder.5" class="el" href="pt/doc.html">Documentação</a></p>
<div id="folder.5">
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.1')"><a name="link205folder.5.1" class="el" href="pt/building.html">Building</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.1')"><a name="link271folder.5.1" class="el" href="pt/building.html">Building</a></p>
<div id="folder.5.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link206folder.5.1" href="pt/toolchains.html">##Tools</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link272folder.5.1" href="pt/toolchains.html">##Tools</a></p>
</div>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.2')"><a name="link207folder.5.2" class="el" href="pt/installing.html">##Installing</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.2')"><a name="link273folder.5.2" class="el" href="pt/installing.html">##Installing</a></p>
<div id="folder.5.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link208folder.5.2" href="pt/installing_at91sam7x.html">AT91SAM7X</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link209folder.5.2" href="pt/installing_lm3s.html">LM3S</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link210folder.5.2" href="pt/installing_avr32.html">AVR32</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link211folder.5.2" href="pt/installing_lpc2888.html">LPC288x</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link212folder.5.2" href="pt/installing_str7.html">STR7</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link213folder.5.2" href="pt/installing_str9.html">STR9</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link214folder.5.2" href="pt/installing_stm32.html">STM32</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link215folder.5.2" href="pt/installing_i386.html">i386</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link274folder.5.2" href="pt/installing_at91sam7x.html">AT91SAM7X</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link275folder.5.2" href="pt/installing_lm3s.html">LM3S</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link276folder.5.2" href="pt/installing_avr32.html">AVR32</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link277folder.5.2" href="pt/installing_lpc2888.html">LPC288x</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link278folder.5.2" href="pt/installing_str7.html">STR7</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link279folder.5.2" href="pt/installing_str9.html">STR9</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link280folder.5.2" href="pt/installing_stm32.html">STM32</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link281folder.5.2" href="pt/installing_i386.html">i386</a></p>
</div>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.3')"><a name="link216folder.5.3" class="el" href="pt/using.html">Usando</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.3')"><a name="link282folder.5.3" class="el" href="pt/using.html">Usando</a></p>
<div id="folder.5.3">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link217folder.5.3" href="pt/using.html#uart">##Over UART</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link218folder.5.3" href="pt/using.html#tcpip">##Over TCP/IP</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link219folder.5.3" href="pt/using.html#pc">##On PC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link220folder.5.3" href="pt/using.html#shell">##The shell</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link221folder.5.3" href="pt/using.html#cross">##Cross-compiling</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link283folder.5.3" href="pt/using.html#uart">##Over UART</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link284folder.5.3" href="pt/using.html#tcpip">##Over TCP/IP</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link285folder.5.3" href="pt/using.html#pc">##On PC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link286folder.5.3" href="pt/using.html#shell">##The shell</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link287folder.5.3" href="pt/using.html#cross">##Cross-compiling</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link222folder.5" href="pt/faq.html">FAQ</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4')"><a name="link223folder.5.4" class="el" href="pt/arch.html">##Architecture</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link288folder.5" href="pt/faq.html">FAQ</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.5.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4')"><a name="link289folder.5.4" class="el" href="pt/arch.html">##Architecture</a></p>
<div id="folder.5.4">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.1')"><a name="link224folder.5.4.1" class="el" href="pt/arch_overview.html">##Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.1')"><a name="link290folder.5.4.1" class="el" href="pt/arch_overview.html">##Overview</a></p>
<div id="folder.5.4.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link225folder.5.4.1" href="pt/arch_overview.html#structure">##Structure</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link226folder.5.4.1" href="pt/arch_overview.html#common">##Common code</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link227folder.5.4.1" href="pt/arch_overview.html#platform">##Platform interface</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link228folder.5.4.1" href="pt/arch_overview.html#platforms">##Platforms/ports</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link229folder.5.4.1" href="pt/arch_overview.html#boot">##eLua boot process</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link291folder.5.4.1" href="pt/arch_overview.html#structure">##Structure</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link292folder.5.4.1" href="pt/arch_overview.html#common">##Common code</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link293folder.5.4.1" href="pt/arch_overview.html#platform">##Platform interface</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link294folder.5.4.1" href="pt/arch_overview.html#platforms">##Platforms/ports</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link295folder.5.4.1" href="pt/arch_overview.html#boot">##eLua boot process</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2')"><a name="link230folder.5.4.2" class="el" href="pt/arch_platform.html">##Platform interface</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2')"><a name="link296folder.5.4.2" class="el" href="pt/arch_platform.html">##Platform interface</a></p>
<div id="folder.5.4.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link231folder.5.4.2" href="pt/arch_platform_ll.html">##Low-level</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link232folder.5.4.2" href="pt/arch_platform_pio.html">PIO</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link233folder.5.4.2" href="pt/arch_platform_spi.html">SPI</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link234folder.5.4.2" href="pt/arch_platform_uart.html">UART</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link235folder.5.4.2" href="pt/arch_platform_timers.html">##Timers</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link236folder.5.4.2" href="pt/arch_platform_pwm.html">PWM</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link237folder.5.4.2" href="pt/arch_platform_cpu.html">CPU</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link238folder.5.4.2" href="pt/arch_platform_adc.html">ADC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link239folder.5.4.2" href="pt/arch_platform_eth.html">ethernet</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.1')"><a name="link297folder.5.4.2.1" class="el" href="pt/arch_platform_ll.html">Low-level</a></p>
<div id="folder.5.4.2.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link298folder.5.4.2.1" href="pt/arch_platform_ll.html#overview">##Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.1.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.1.1')"><a name="link299folder.5.4.2.1.1" class="el" href="pt/arch_platform_ll.html#structures">##Data structures</a></p>
<div id="folder.5.4.2.1.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link300folder.5.4.2.1.1" href="pt/arch_platform_ll.html#status_codes">Status codes</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.1.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.1.2')"><a name="link301folder.5.4.2.1.2" class="el" href="pt/arch_platform_ll.html#funcs">##Functions</a></p>
<div id="folder.5.4.2.1.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link302folder.5.4.2.1.2" href="pt/arch_platform_ll.html#platform_init">platform_init</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link303folder.5.4.2.1.2" href="pt/arch_platform_ll.html#platform_get_last_free_ram">platform_get_last_free_ram</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link304folder.5.4.2.1.2" href="pt/arch_platform_ll.html#platform_get_last_free_ram">platform_get_last_free_ram</a></p>
</div>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.2')"><a name="link305folder.5.4.2.2" class="el" href="pt/arch_platform_pio.html">PIO</a></p>
<div id="folder.5.4.2.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link306folder.5.4.2.2" href="pt/arch_platform_pio.html#overview">##Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.2.1')"><a name="link307folder.5.4.2.2.1" class="el" href="pt/arch_platform_pio.html#structures">##Data structures</a></p>
<div id="folder.5.4.2.2.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link308folder.5.4.2.2.1" href="pt/arch_platform_pio.html#pio_operations">PIO operations</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link309folder.5.4.2.2.1" href="pt/arch_platform_pio.html#pio_data_type">PIO data type</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.2.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.2.2')"><a name="link310folder.5.4.2.2.2" class="el" href="pt/arch_platform_pio.html#funcs">##Functions</a></p>
<div id="folder.5.4.2.2.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link311folder.5.4.2.2.2" href="pt/arch_platform_pio.html#platform_pio_has_port">platform_pio_has_port</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link312folder.5.4.2.2.2" href="pt/arch_platform_pio.html#platform_pio_has_pin">platform_pio_has_pin</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link313folder.5.4.2.2.2" href="pt/arch_platform_pio.html#platform_pio_get_prefix">platform_pio_get_prefix</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link314folder.5.4.2.2.2" href="pt/arch_platform_pio.html#platform_pio_op">platform_pio_op</a></p>
</div>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.3')"><a name="link315folder.5.4.2.3" class="el" href="pt/arch_platform_spi.html">SPI</a></p>
<div id="folder.5.4.2.3">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link316folder.5.4.2.3" href="pt/arch_platform_spi.html#overview">##Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.3.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.3.1')"><a name="link317folder.5.4.2.3.1" class="el" href="pt/arch_platform_spi.html#structures">##Data structures</a></p>
<div id="folder.5.4.2.3.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link318folder.5.4.2.3.1" href="pt/arch_platform_spi.html#chip_select">Chip select</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link319folder.5.4.2.3.1" href="pt/arch_platform_spi.html#spi_mode">SPI mode</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link320folder.5.4.2.3.1" href="pt/arch_platform_spi.html#spi_data_type">SPI data type</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.3.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.3.2')"><a name="link321folder.5.4.2.3.2" class="el" href="pt/arch_platform_spi.html#funcs">##Functions</a></p>
<div id="folder.5.4.2.3.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link322folder.5.4.2.3.2" href="pt/arch_platform_spi.html#platform_spi_exists">platform_spi_exists</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link323folder.5.4.2.3.2" href="pt/arch_platform_spi.html#platform_spi_setup">platform_spi_setup</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link324folder.5.4.2.3.2" href="pt/arch_platform_spi.html#platform_spi_send_recv">platform_spi_send_recv</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link325folder.5.4.2.3.2" href="pt/arch_platform_spi.html#platform_spi_select">platform_spi_select</a></p>
</div>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.4')"><a name="link326folder.5.4.2.4" class="el" href="pt/arch_platform_uart.html">UART</a></p>
<div id="folder.5.4.2.4">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link327folder.5.4.2.4" href="pt/arch_platform_uart.html#overview">##Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.4.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.4.1')"><a name="link328folder.5.4.2.4.1" class="el" href="pt/arch_platform_uart.html#structures">##Data structures</a></p>
<div id="folder.5.4.2.4.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link329folder.5.4.2.4.1" href="pt/arch_platform_uart.html#uart_parity">UART parity</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link330folder.5.4.2.4.1" href="pt/arch_platform_uart.html#uart_stop_bits">UART stop bits</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link331folder.5.4.2.4.1" href="pt/arch_platform_uart.html#uart_timeout">UART timeout</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.4.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.4.2')"><a name="link332folder.5.4.2.4.2" class="el" href="pt/arch_platform_uart.html#funcs">##Functions</a></p>
<div id="folder.5.4.2.4.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link333folder.5.4.2.4.2" href="pt/arch_platform_uart.html#platform_uart_exists">platform_uart_exists</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link334folder.5.4.2.4.2" href="pt/arch_platform_uart.html#platform_uart_setup">platform_uart_setup</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link335folder.5.4.2.4.2" href="pt/arch_platform_uart.html#platform_uart_send">platform_uart_send</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link336folder.5.4.2.4.2" href="pt/arch_platform_uart.html#platform_uart_recv">platform_uart_recv</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link337folder.5.4.2.4.2" href="pt/arch_platform_uart.html#platform_s_uart_recv">platform_s_uart_recv</a></p>
</div>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.5')"><a name="link338folder.5.4.2.5" class="el" href="pt/arch_platform_timers.html">Timers</a></p>
<div id="folder.5.4.2.5">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link339folder.5.4.2.5" href="pt/arch_platform_timers.html#overview">##Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.5.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.5.1')"><a name="link340folder.5.4.2.5.1" class="el" href="pt/arch_platform_timers.html#structures">##Data structures</a></p>
<div id="folder.5.4.2.5.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link341folder.5.4.2.5.1" href="pt/arch_platform_timers.html#timer_data_type">Timer data type</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link342folder.5.4.2.5.1" href="pt/arch_platform_timers.html#timer_operations">Timer operations</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.5.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.5.2')"><a name="link343folder.5.4.2.5.2" class="el" href="pt/arch_platform_timers.html#funcs">##Functions</a></p>
<div id="folder.5.4.2.5.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link344folder.5.4.2.5.2" href="pt/arch_platform_timers.html#platform_timer_exists">platform_timer_exists</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link345folder.5.4.2.5.2" href="pt/arch_platform_timers.html#platform_timer_delay">platform_timer_delay</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link346folder.5.4.2.5.2" href="pt/arch_platform_timers.html#platform_s_timer_delay">platform_s_timer_delay</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link347folder.5.4.2.5.2" href="pt/arch_platform_timers.html#platform_timer_op">platform_timer_op</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link348folder.5.4.2.5.2" href="pt/arch_platform_timers.html#platform_s_timer_op">platform_s_timer_op</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link349folder.5.4.2.5.2" href="pt/arch_platform_timers.html#platform_timer_get_diff_us">platform_timer_get_diff_us</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link350folder.5.4.2.5" href="pt/arch_platform_timers.html#virtual_timers">Virtual timers</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.6')"><a name="link351folder.5.4.2.6" class="el" href="pt/arch_platform_pwm.html">PWM</a></p>
<div id="folder.5.4.2.6">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link352folder.5.4.2.6" href="pt/arch_platform_pwm.html#overview">##Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.6.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.6.1')"><a name="link353folder.5.4.2.6.1" class="el" href="pt/arch_platform_pwm.html#structures">##Data structures</a></p>
<div id="folder.5.4.2.6.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link354folder.5.4.2.6.1" href="pt/arch_platform_pwm.html#pwm_operations">PWM operations</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.6.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.6.2')"><a name="link355folder.5.4.2.6.2" class="el" href="pt/arch_platform_pwm.html#funcs">##Functions</a></p>
<div id="folder.5.4.2.6.2">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link356folder.5.4.2.6.2" href="pt/arch_platform_pwm.html#platform_pwm_exists">platform_pwm_exists</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link357folder.5.4.2.6.2" href="pt/arch_platform_pwm.html#platform_pwm_setup">platform_pwm_setup</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link358folder.5.4.2.6.2" href="pt/arch_platform_pwm.html#platform_pwm_op">platform_pwm_op</a></p>
</div>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.7" src="wb_img/plusnode.png" onclick="toggleFolder('folder.5.4.2.7')"><a name="link359folder.5.4.2.7" class="el" href="pt/arch_platform_cpu.html">CPU</a></p>
<div id="folder.5.4.2.7">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link360folder.5.4.2.7" href="pt/arch_platform_cpu.html#overview">##Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.7.1" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.7.1')"><a name="link361folder.5.4.2.7.1" class="el" href="pt/arch_platform_cpu.html#funcs">##Functions</a></p>
<div id="folder.5.4.2.7.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link362folder.5.4.2.7.1" href="pt/arch_platform_cpu.html#platform_cpu_enable_interrupts">platform_cpu_enable_interrupts</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link363folder.5.4.2.7.1" href="pt/arch_platform_cpu.html#platform_cpu_disable_interrupts">platform_cpu_disable_interrupts</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link364folder.5.4.2.7.1" href="pt/arch_platform_cpu.html#platform_cpu_get_frequency">platform_cpu_get_frequency</a></p>
</div>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img name="imgfolder.5.4.2.8" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.8')"><a name="link365folder.5.4.2.8" class="el" href="pt/arch_platform_eth.html">Ethernet</a></p>
<div id="folder.5.4.2.8">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link366folder.5.4.2.8" href="pt/arch_platform_eth.html#overview">##Overview</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img name="imgfolder.5.4.2.8.1" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.5.4.2.8.1')"><a name="link367folder.5.4.2.8.1" class="el" href="pt/arch_platform_eth.html#funcs">##Functions</a></p>
<div id="folder.5.4.2.8.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link368folder.5.4.2.8.1" href="pt/arch_platform_eth.html#platform_eth_send_packet">platform_eth_send_packet</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link369folder.5.4.2.8.1" href="pt/arch_platform_eth.html#platform_eth_get_packet_nb">platform_eth_get_packet_nb</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link370folder.5.4.2.8.1" href="pt/arch_platform_eth.html#platform_eth_force_interrupt">platform_eth_force_interrupt</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link371folder.5.4.2.8.1" href="pt/arch_platform_eth.html#platform_eth_get_elapsed_time">platform_eth_get_elapsed_time</a></p>
</div>
</div>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link240folder.5.4" href="pt/arch_romfs.html">##ROM file system</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link241folder.5.4" href="pt/arch_newport.html">##Adding a new port</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link242folder.5.4" href="pt/arch_ltr.html">##Module and LTR</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link243folder.5.4" href="pt/arch_con_term.html">##Consoles and terminals</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link244folder.5.4" href="pt/arch_tcpip.html">##TCP/IP in eLua</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link245folder.5.4" href="pt/arch_coding.html">##eLua coding style</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link372folder.5.4" href="pt/arch_romfs.html">##ROM file system</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link373folder.5.4" href="pt/arch_newport.html">##Adding a new port</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link374folder.5.4" href="pt/arch_ltr.html">##Module and LTR</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link375folder.5.4" href="pt/arch_con_term.html">##Consoles and terminals</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link376folder.5.4" href="pt/arch_tcpip.html">##TCP/IP in eLua</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link377folder.5.4" href="pt/arch_coding.html">##eLua coding style</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link246folder.5" href="pt/examples.html">Exemplos</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link378folder.5" href="pt/examples.html">Exemplos</a></p>
</div>
<p><img name="imgfolder.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6')"><a name="link247folder.6" class="el" href="pt/tutorials.html">Tutoriais</a></p>
<p><img name="imgfolder.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6')"><a name="link379folder.6" class="el" href="pt/tutorials.html">Tutoriais</a></p>
<div id="folder.6">
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link248folder.6" href="pt/tut_bootpc.html">Booting on a PC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link249folder.6" href="pt/tut_bootstick.html">Booting from a Pendriv</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.6.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1')"><a name="link250folder.6.1" class="el" href="pt/tchainbuild.html">Toolchain Building</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link380folder.6" href="pt/tut_bootpc.html">Booting on a PC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link381folder.6" href="pt/tut_bootstick.html">Booting from a Pendriv</a></p>
<p><img src="wb_img/vertline.png"><img name="imgfolder.6.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.6.1')"><a name="link382folder.6.1" class="el" href="pt/tchainbuild.html">Toolchain Building</a></p>
<div id="folder.6.1">
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link251folder.6.1" href="pt/tc_arm.html">ARM 7 & ARM9 Toolchains</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link252folder.6.1" href="pt/tc_cortex.html">ARM Cortex-M3</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link253folder.6.1" href="pt/tc_386.html">i386</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link383folder.6.1" href="pt/tc_arm.html">ARM 7 & ARM9 Toolchains</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link384folder.6.1" href="pt/tc_cortex.html">ARM Cortex-M3</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link385folder.6.1" href="pt/tc_386.html">i386</a></p>
</div>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link254folder.6" href="pt/tut_openocd.html">Using OpenOC</a></p>
<p><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link386folder.6" href="pt/tut_openocd.html">Using OpenOC</a></p>
</div>
<p><img name="imgfolder.7" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7')"><a name="link255folder.7" class="el" href="pt/refman.html#genericmodules">Manual de Referência</a></p>
<p><img name="imgfolder.7" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7')"><a name="link387folder.7" class="el" href="pt/refman.html#genericmodules">Manual de Referência</a></p>
<div id="folder.7">
<p><img src="wb_img/blank.png"><img name="imgfolder.7.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1')"><a name="link256folder.7.1" class="el" href="pt/refman.html#genericmodules">Módulos Genéricos</a></p>
<p><img src="wb_img/blank.png"><img name="imgfolder.7.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1')"><a name="link388folder.7.1" class="el" href="pt/refman.html#genericmodules">Módulos Genéricos</a></p>
<div id="folder.7.1">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.1')"><a name="link257folder.7.1.1" class="el" href="pt/refman.html#bitmodule">bit</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.1')"><a name="link389folder.7.1.1" class="el" href="pt/refman.html#bitmodule">bit</a></p>
<div id="folder.7.1.1">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link258folder.7.1.1" href="pt/refman.html#bit_bnot">bnot</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link259folder.7.1.1" href="pt/refman.html#bit_band">band</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link260folder.7.1.1" href="pt/refman.html#bit_bor">bor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link261folder.7.1.1" href="pt/refman.html#bit_bxor">bxor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link262folder.7.1.1" href="pt/refman.html#bit_lshift">lshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link263folder.7.1.1" href="pt/refman.html#bit_rshift">rshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link264folder.7.1.1" href="pt/refman.html#bit_bit">bit</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link265folder.7.1.1" href="pt/refman.html#bit_set">set</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link266folder.7.1.1" href="pt/refman.html#bit_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link267folder.7.1.1" href="pt/refman.html#bit_isset">isset</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link268folder.7.1.1" href="pt/refman.html#bit_isclear">isclear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link390folder.7.1.1" href="pt/refman.html#bit_bnot">bnot</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link391folder.7.1.1" href="pt/refman.html#bit_band">band</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link392folder.7.1.1" href="pt/refman.html#bit_bor">bor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link393folder.7.1.1" href="pt/refman.html#bit_bxor">bxor</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link394folder.7.1.1" href="pt/refman.html#bit_lshift">lshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link395folder.7.1.1" href="pt/refman.html#bit_rshift">rshift</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link396folder.7.1.1" href="pt/refman.html#bit_bit">bit</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link397folder.7.1.1" href="pt/refman.html#bit_set">set</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link398folder.7.1.1" href="pt/refman.html#bit_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link399folder.7.1.1" href="pt/refman.html#bit_isset">isset</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link400folder.7.1.1" href="pt/refman.html#bit_isclear">isclear</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.2')"><a name="link269folder.7.1.2" class="el" href="pt/refman.html#cpumodule">cpu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.2" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.2')"><a name="link401folder.7.1.2" class="el" href="pt/refman.html#cpumodule">cpu</a></p>
<div id="folder.7.1.2">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link270folder.7.1.2" href="pt/refman.html#cpu_write32">write32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link271folder.7.1.2" href="pt/refman.html#cpu_write16">write16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link272folder.7.1.2" href="pt/refman.html#cpu_write8">write8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link273folder.7.1.2" href="pt/refman.html#cpu_read32">read32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link274folder.7.1.2" href="pt/refman.html#cpu_read16">read16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link275folder.7.1.2" href="pt/refman.html#cpu_read8">read8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link276folder.7.1.2" href="pt/refman.html#cpu_disableinterrupts">disableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link277folder.7.1.2" href="pt/refman.html#cpu_enableinterrupts">enableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link278folder.7.1.2" href="pt/refman.html#cpu_clockfrequency">clockfrequency</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link402folder.7.1.2" href="pt/refman.html#cpu_write32">write32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link403folder.7.1.2" href="pt/refman.html#cpu_write16">write16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link404folder.7.1.2" href="pt/refman.html#cpu_write8">write8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link405folder.7.1.2" href="pt/refman.html#cpu_read32">read32</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link406folder.7.1.2" href="pt/refman.html#cpu_read16">read16</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link407folder.7.1.2" href="pt/refman.html#cpu_read8">read8</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link408folder.7.1.2" href="pt/refman.html#cpu_disableinterrupts">disableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link409folder.7.1.2" href="pt/refman.html#cpu_enableinterrupts">enableinterrupts</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link410folder.7.1.2" href="pt/refman.html#cpu_clockfrequency">clockfrequency</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.3')"><a name="link279folder.7.1.3" class="el" href="pt/refman.html#gpiomodule">gpio</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.3" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.3')"><a name="link411folder.7.1.3" class="el" href="pt/refman.html#gpiomodule">gpio</a></p>
<div id="folder.7.1.3">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link280folder.7.1.3" href="pt/refman.html#gpio_configpin">configpin</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link281folder.7.1.3" href="pt/refman.html#gpio_setpinvalue">setpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link282folder.7.1.3" href="pt/refman.html#gpio_getpinvalue">getpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link283folder.7.1.3" href="pt/refman.html#gpio_setpinhigh">setpinhigh</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link284folder.7.1.3" href="pt/refman.html#gpio_setpinlow">setpinlow</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link412folder.7.1.3" href="pt/refman.html#gpio_configpin">configpin</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link413folder.7.1.3" href="pt/refman.html#gpio_setpinvalue">setpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link414folder.7.1.3" href="pt/refman.html#gpio_getpinvalue">getpinvalue</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link415folder.7.1.3" href="pt/refman.html#gpio_setpinhigh">setpinhigh</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link416folder.7.1.3" href="pt/refman.html#gpio_setpinlow">setpinlow</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.4')"><a name="link285folder.7.1.4" class="el" href="pt/refman.html#netmodule">net</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.4" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.4')"><a name="link417folder.7.1.4" class="el" href="pt/refman.html#netmodule">net</a></p>
<div id="folder.7.1.4">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link286folder.7.1.4" href="pt/net_ref.html#net_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link418folder.7.1.4" href="pt/net_ref.html#net_setup">setup</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.5')"><a name="link287folder.7.1.5" class="el" href="pt/refman.html#pwmmodule">pwm</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.5" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.5')"><a name="link419folder.7.1.5" class="el" href="pt/refman.html#pwmmodule">pwm</a></p>
<div id="folder.7.1.5">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link288folder.7.1.5" href="pt/refman.html#pwm_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link289folder.7.1.5" href="pt/refman.html#pwm_setcycle">setcycle</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link290folder.7.1.5" href="pt/refman.html#pwm_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link291folder.7.1.5" href="pt/refman.html#pwm_stop">stop</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link292folder.7.1.5" href="pt/refman.html#pwm_setclock">setclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link293folder.7.1.5" href="pt/refman.html#pwm_getclock">getclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link420folder.7.1.5" href="pt/refman.html#pwm_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link421folder.7.1.5" href="pt/refman.html#pwm_setcycle">setcycle</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link422folder.7.1.5" href="pt/refman.html#pwm_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link423folder.7.1.5" href="pt/refman.html#pwm_stop">stop</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link424folder.7.1.5" href="pt/refman.html#pwm_setclock">setclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link425folder.7.1.5" href="pt/refman.html#pwm_getclock">getclock</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.6')"><a name="link294folder.7.1.6" class="el" href="pt/refman.html#spimodules">spi</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.6" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.6')"><a name="link426folder.7.1.6" class="el" href="pt/refman.html#spimodules">spi</a></p>
<div id="folder.7.1.6">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link295folder.7.1.6" href="pt/refman.html#spi_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link296folder.7.1.6" href="pt/refman.html#spi_select">select</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link297folder.7.1.6" href="pt/refman.html#spi_unselect">unselect</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link298folder.7.1.6" href="pt/refman.html#spi_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link299folder.7.1.6" href="pt/refman.html#spi_sendrecv">sendrecv</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link427folder.7.1.6" href="pt/refman.html#spi_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link428folder.7.1.6" href="pt/refman.html#spi_select">select</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link429folder.7.1.6" href="pt/refman.html#spi_unselect">unselect</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link430folder.7.1.6" href="pt/refman.html#spi_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link431folder.7.1.6" href="pt/refman.html#spi_sendrecv">sendrecv</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.7" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.7')"><a name="link300folder.7.1.7" class="el" href="pt/refman.html#sysmodule">sys</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.7" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.7')"><a name="link432folder.7.1.7" class="el" href="pt/refman.html#sysmodule">sys</a></p>
<div id="folder.7.1.7">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link301folder.7.1.7" href="pt/refman.html#sys_platforms">platform</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link302folder.7.1.7" href="pt/refman.html#sys_mcu">mcu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link303folder.7.1.7" href="pt/refman.html#sys_cpu">cpu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link304folder.7.1.7" href="pt/refman.html#sys_board">board</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link433folder.7.1.7" href="pt/refman.html#sys_platforms">platform</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link434folder.7.1.7" href="pt/refman.html#sys_mcu">mcu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link435folder.7.1.7" href="pt/refman.html#sys_cpu">cpu</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link436folder.7.1.7" href="pt/refman.html#sys_board">board</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.8" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.8')"><a name="link305folder.7.1.8" class="el" href="pt/refman.html#termmodule">term</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.8" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.8')"><a name="link437folder.7.1.8" class="el" href="pt/refman.html#termmodule">term</a></p>
<div id="folder.7.1.8">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link306folder.7.1.8" href="pt/refman.html#term_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link307folder.7.1.8" href="pt/refman.html#term_cleareol">cleareol</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link308folder.7.1.8" href="pt/refman.html#term_moveto">moveto</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link309folder.7.1.8" href="pt/refman.html#term_moveup">moveup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link310folder.7.1.8" href="pt/refman.html#term_movedown">movedown</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link311folder.7.1.8" href="pt/refman.html#term_moveleft">moveleft</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link312folder.7.1.8" href="pt/refman.html#term_moveright">moveright</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link313folder.7.1.8" href="pt/refman.html#term_getlinecount">getlinecount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link314folder.7.1.8" href="pt/refman.html#term_getcolcount">getcolcount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link315folder.7.1.8" href="pt/refman.html#term_printstr">printstr</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link316folder.7.1.8" href="pt/refman.html#term_getx">getx</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link317folder.7.1.8" href="pt/refman.html#term_gety">gety</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link318folder.7.1.8" href="pt/refman.html#term_inputchar">inputchar</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link438folder.7.1.8" href="pt/refman.html#term_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link439folder.7.1.8" href="pt/refman.html#term_cleareol">cleareol</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link440folder.7.1.8" href="pt/refman.html#term_moveto">moveto</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link441folder.7.1.8" href="pt/refman.html#term_moveup">moveup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link442folder.7.1.8" href="pt/refman.html#term_movedown">movedown</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link443folder.7.1.8" href="pt/refman.html#term_moveleft">moveleft</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link444folder.7.1.8" href="pt/refman.html#term_moveright">moveright</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link445folder.7.1.8" href="pt/refman.html#term_getlinecount">getlinecount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link446folder.7.1.8" href="pt/refman.html#term_getcolcount">getcolcount</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link447folder.7.1.8" href="pt/refman.html#term_printstr">printstr</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link448folder.7.1.8" href="pt/refman.html#term_getx">getx</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link449folder.7.1.8" href="pt/refman.html#term_gety">gety</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link450folder.7.1.8" href="pt/refman.html#term_inputchar">inputchar</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.9" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.9')"><a name="link319folder.7.1.9" class="el" href="pt/refman.html#tmrmodule">tmr</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.9" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.1.9')"><a name="link451folder.7.1.9" class="el" href="pt/refman.html#tmrmodule">tmr</a></p>
<div id="folder.7.1.9">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link320folder.7.1.9" href="pt/refman.html#tmr_delay">delay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link321folder.7.1.9" href="pt/refman.html#tmr_read">read</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link322folder.7.1.9" href="pt/refman.html#tmr_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link323folder.7.1.9" href="pt/refman.html#tmr_diff">diff</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link324folder.7.1.9" href="pt/refman.html#tmr_mindelay">mindelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link325folder.7.1.9" href="pt/refman.html#tmr_maxdelay">maxdelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link326folder.7.1.9" href="pt/refman.html#tmr_setclock">setclock</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link452folder.7.1.9" href="pt/refman.html#tmr_delay">delay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link453folder.7.1.9" href="pt/refman.html#tmr_read">read</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link454folder.7.1.9" href="pt/refman.html#tmr_start">start</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link455folder.7.1.9" href="pt/refman.html#tmr_diff">diff</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link456folder.7.1.9" href="pt/refman.html#tmr_mindelay">mindelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link457folder.7.1.9" href="pt/refman.html#tmr_maxdelay">maxdelay</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link458folder.7.1.9" href="pt/refman.html#tmr_setclock">setclock</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.10" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.1.10')"><a name="link327folder.7.1.10" class="el" href="pt/refman.html#uartmodule">uart</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img name="imgfolder.7.1.10" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.1.10')"><a name="link459folder.7.1.10" class="el" href="pt/refman.html#uartmodule">uart</a></p>
<div id="folder.7.1.10">
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link328folder.7.1.10" href="pt/refman.html#uart_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link329folder.7.1.10" href="pt/refman.html#uart_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link330folder.7.1.10" href="pt/refman.html#uart_recv">recv</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link460folder.7.1.10" href="pt/refman.html#uart_setup">setup</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link461folder.7.1.10" href="pt/refman.html#uart_send">send</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link462folder.7.1.10" href="pt/refman.html#uart_recv">recv</a></p>
</div>
</div>
<p><img src="wb_img/blank.png"><img name="imgfolder.7.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.2')"><a name="link331folder.7.2" class="el" href="pt/refman.html#platdepmodules">Dependentes de Plataforma</a></p>
<p><img src="wb_img/blank.png"><img name="imgfolder.7.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.2')"><a name="link463folder.7.2" class="el" href="pt/refman.html#platdepmodules">Dependentes de Plataforma</a></p>
<div id="folder.7.2">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.7.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.2.1')"><a name="link332folder.7.2.1" class="el" href="pt/refman.html#adcmodule">adc</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.7.2.1" src="wb_img/plusnode.png" onclick="toggleFolder('folder.7.2.1')"><a name="link464folder.7.2.1" class="el" href="pt/refman.html#adcmodule">adc</a></p>
<div id="folder.7.2.1">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link333folder.7.2.1" href="pt/refman.html#adc_sample">sample</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link334folder.7.2.1" href="pt/refman.html#adc_getsamples">getsamples</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link335folder.7.2.1" href="pt/refman.html#adc_maxval">maxval</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link336folder.7.2.1" href="pt/refman.html#adc_samplesready">samplesready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link337folder.7.2.1" href="pt/refman.html#adc_dataready">dataready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link338folder.7.2.1" href="pt/refman.html#adc_setmode">setmode</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link339folder.7.2.1" href="pt/refman.html#adc_setsmoothing">setsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link340folder.7.2.1" href="pt/refman.html#adc_getsmoothing">getsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link341folder.7.2.1" href="pt/refman.html#adc_burst">burst</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link465folder.7.2.1" href="pt/refman.html#adc_sample">sample</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link466folder.7.2.1" href="pt/refman.html#adc_getsamples">getsamples</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link467folder.7.2.1" href="pt/refman.html#adc_maxval">maxval</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link468folder.7.2.1" href="pt/refman.html#adc_samplesready">samplesready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link469folder.7.2.1" href="pt/refman.html#adc_dataready">dataready</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link470folder.7.2.1" href="pt/refman.html#adc_setmode">setmode</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link471folder.7.2.1" href="pt/refman.html#adc_setsmoothing">setsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/node.png"><a class="el" name="link472folder.7.2.1" href="pt/refman.html#adc_getsmoothing">getsmoothing</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/vertline.png"><img src="wb_img/nodelast.png"><a class="el" name="link473folder.7.2.1" href="pt/refman.html#adc_burst">burst</a></p>
</div>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.7.2.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.2.2')"><a name="link342folder.7.2.2" class="el" href="pt/refman.html#dispmodule">disp</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img name="imgfolder.7.2.2" src="wb_img/plusnodelast.png" onclick="toggleFolder('folder.7.2.2')"><a name="link474folder.7.2.2" class="el" href="pt/refman.html#dispmodule">disp</a></p>
<div id="folder.7.2.2">
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link343folder.7.2.2" href="pt/refman.html#disp_init">init</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link344folder.7.2.2" href="pt/refman.html#disp_enable">enable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link345folder.7.2.2" href="pt/refman.html#disp_disable">disable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link346folder.7.2.2" href="pt/refman.html#disp_on">on</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link347folder.7.2.2" href="pt/refman.html#disp_off">off</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link348folder.7.2.2" href="pt/refman.html#disp_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link349folder.7.2.2" href="pt/refman.html#disp_print">print</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link350folder.7.2.2" href="pt/refman.html#disp_draw">draw</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link475folder.7.2.2" href="pt/refman.html#disp_init">init</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link476folder.7.2.2" href="pt/refman.html#disp_enable">enable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link477folder.7.2.2" href="pt/refman.html#disp_disable">disable</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link478folder.7.2.2" href="pt/refman.html#disp_on">on</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link479folder.7.2.2" href="pt/refman.html#disp_off">off</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link480folder.7.2.2" href="pt/refman.html#disp_clear">clear</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/node.png"><a class="el" name="link481folder.7.2.2" href="pt/refman.html#disp_print">print</a></p>
<p><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/blank.png"><img src="wb_img/nodelast.png"><a class="el" name="link482folder.7.2.2" href="pt/refman.html#disp_draw">draw</a></p>
</div>
</div>
</div>