#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/gpio.h"
// Must declare the main assembly entry point before use.
void main_asm();
/**
* @brief Wrapper to allow the assembly code to call the gpio_init()
* SDK function.
*
* @param pin The GPIO pin number to initialise.
*/
void asm_gpio_init(int pin)
{
gpio_init(pin);
}
/**
* @brief Wrapper to allow the assembly code to call the gpio_set_dir()
* SDK function.
*
* @param pin The GPIO pin number of which to set the direction.
* @param dir Specify the direction that the pin should be set to (0=input/1=output).
*/
void asm_gpio_set_dir(int pin, int dir)
{
gpio_set_dir(pin, dir);
}
/**
* @brief Wrapper to allow the assembly code to call the gpio_get()
* SDK function.
*
* @param pin The GPIO pin number to read from.
* @return int Returns the current value of the GPIO pin.
*/
int asm_gpio_get(int pin)
{
return gpio_get(pin);
}
/**
* @brief Wrapper to allow the assembly code to call the gpio_put()
* SDK function.
*
* @param pin The GPIO pin number to write to.
* @param value Specify the value that the pin should be set to (0/1).
*/
void asm_gpio_put(int pin, int value)
{
gpio_put(pin, value);
}
/**
* @brief EXAMPLE - BLINK_ASM
* Simple example that uses assembly code to initialise
* the built-in LED on Raspberry Pi Pico and then flash
* it forever using a sleep routine to set the period of
* the flash.
*
* @return int Returns exit-status zero on completion.
*/
int main()
{
// Jump into the main assembly code subroutine.
main_asm();
// Returning zero indicates everything went okay.
return 0;
}
pico:GP0
pico:GP1
pico:GND.1
pico:GP2
pico:GP3
pico:GP4
pico:GP5
pico:GND.2
pico:GP6
pico:GP7
pico:GP8
pico:GP9
pico:GND.3
pico:GP10
pico:GP11
pico:GP12
pico:GP13
pico:GND.4
pico:GP14
pico:GP15
pico:GP16
pico:GP17
pico:GND.5
pico:GP18
pico:GP19
pico:GP20
pico:GP21
pico:GND.6
pico:GP22
pico:RUN
pico:GP26
pico:GP27
pico:GND.7
pico:GP28
pico:ADC_VREF
pico:3V3
pico:3V3_EN
pico:GND.8
pico:VSYS
pico:VBUS
led1:A
led1:C
logic1:D0
logic1:D1
logic1:D2
logic1:D3
logic1:D4
logic1:D5
logic1:D6
logic1:D7
logic1:GND
r1:1
r1:2