-
Notifications
You must be signed in to change notification settings - Fork 45
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
3afc29c
commit c1825d1
Showing
1 changed file
with
34 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,48 @@ | ||
# BSC Exercise | ||
|
||
In this exercise you will learn how to write a board support crate. | ||
The bsc template will already contain the led and timer implementation. | ||
The radio and USB/Power implementations will be deleted, because that just takes up unnecessary space and adds to confusion. | ||
The template will already contain the LED and timer implementation. | ||
|
||
Note: Introduction to the exercise is a guided tour through the template and running the hello example. | ||
|
||
|
||
## Learning goals | ||
* implement buttons functionality | ||
* uarte implementation | ||
* impl blocks, associated functions, methods | ||
* UARTE implementation | ||
* `impl` blocks, associated functions, methods | ||
* generate docs! | ||
|
||
## Prerequesits | ||
|
||
* | ||
## Tasks | ||
* Write a button implementation. This entails the following steps | ||
* `struct Buttons` with 4 fields, that represents each of the four buttons | ||
* `struct Button` that is a wrapper for the pin that a single button is connected to | ||
* a method `is_pushed` that checks if a single button is pushed. | ||
* initialize the pins in `fn init()` | ||
* add the `struct Button` to the definition and instantiation of `struct Board`. | ||
* Run `apps/buttons.rs` to test. | ||
* Write a UARTE implementation. | ||
|
||
## Knowledge | ||
|
||
## Representation of Peripherals | ||
The boards peripherals are represented as nested structs. The `struct Board` contains fields that represent single peripherals or groups of peripherals as structs, which in turn either contain a field of the single peripheral or ... | ||
|
||
You have to add structs to represent the buttons and the UARTE peripheral to the board struct. | ||
|
||
## Comments | ||
|
||
|
||
## impl blocks | ||
|
||
## visibility of structs, fields and functions: the pub keyword | ||
|
||
|
||
## Hardware documentation for pin configuration | ||
|
||
## Steps | ||
### Write a button implementation | ||
* add field in the board struct | ||
* add struct for all buttons | ||
* add struct for the single button | ||
|
||
* Read docs, section 8.7 for info about pins and pin configuration | ||
* add button bring up to board init | ||
|
||
* add doc lines every where! | ||
* add methods in impl block: | ||
* detect button push | ||
* debounce button function? like in knurling session, requires implementation of a second timer, just for this? | ||
|
||
### Write Uarte implementation | ||
* add field to the board struct | ||
* add struct for the instance, how to figure out what the type of the inner field is | ||
* create instance in init, add baudrate, parity etc. | ||
* add to instantiation of board struct | ||
* impl fmt::Write for the Uarte struct, simple write does not work because of dma | ||
* example code with button is not a good idea for the simple button implementation. | ||
|
||
I think this is plenty for an hour. |