move examples to folder, separate page
This commit is contained in:
84
wiki/examples/Blink-app.md
Normal file
84
wiki/examples/Blink-app.md
Normal file
@@ -0,0 +1,84 @@
|
||||
First, let's create a simple led blinking application.
|
||||
|
||||
## Preparing for launch
|
||||
|
||||
We will use integrated LED. Look at the schematic:
|
||||
|
||||

|
||||

|
||||
|
||||
This led connect between power rail and GPIO PA8 and we should configure this pin as open drain to properly control led behaviour.
|
||||
|
||||
You can find GPIO API in `target_*/flipper_hal.h`. Or if you prefer to use Arduino API, you can find bindings in `core/flipper.h`.
|
||||
|
||||
For work with pin we should:
|
||||
|
||||
1. Create `GpioPin` instance and specify pin and port.
|
||||
2. Configure mode of pin by `pinMode` function.
|
||||
3. Control state of pin by `digitalWrite` function.
|
||||
|
||||
## Creating application
|
||||
|
||||
1. Create new file (for example, `blink.c`) in `applications` folder.
|
||||
2. Create code like this:
|
||||
|
||||
```C
|
||||
#include "flipper.h"
|
||||
|
||||
void application_blink(void* p) {
|
||||
// create pin
|
||||
GpioPin led = {.pin = GPIO_PIN_8, .port = GPIOA};
|
||||
|
||||
// configure pin
|
||||
pinMode(led, GpioModeOutput);
|
||||
|
||||
while(1) {
|
||||
digitalWrite(led, HIGH);
|
||||
delay(500);
|
||||
digitalWrite(led, LOW);
|
||||
delay(500);
|
||||
}
|
||||
}
|
||||
```
|
||||
3. To start your application on Flipper startup, add it to autorun:
|
||||
* in `applications/startup.h` add prototype of main application function:
|
||||
|
||||
```C
|
||||
void application_blink(void* p);
|
||||
```
|
||||
|
||||
* add entry to `FLIPPER_STARTUP` array (pointer to application function and application name):
|
||||
|
||||
```C
|
||||
const FlipperStartupApp FLIPPER_STARTUP[] = {
|
||||
#ifdef TEST
|
||||
{.app = flipper_test_app, .name = "test app"}
|
||||
#endif
|
||||
|
||||
// user applications:
|
||||
|
||||
, {.app = application_blink, .name = "blink"}
|
||||
};
|
||||
```
|
||||
|
||||
4. Add your application file to Makefile (for each target, `target_lo/Makefile` and `target_f1/Makefile`, we add one common makefile later):
|
||||
|
||||
```
|
||||
# User application
|
||||
|
||||
C_SOURCES += ../applications/blink.c
|
||||
```
|
||||
|
||||
Build and run for linux (target_lo):
|
||||
|
||||
`docker-compose exec dev make -C target_lo`
|
||||
|
||||
Run:
|
||||
|
||||
`docker-compose exec dev target_lo/build/target_lo`.
|
||||
|
||||
Linux version has no LED or GPIO, but we can see debug messages how state of GPIO is changing:
|
||||
|
||||

|
||||
|
||||
_You also run found source of this example in `applications/examples/blink.c` and run by `docker-compose exec dev make -C target_lo example_blink`_
|
Reference in New Issue
Block a user