Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

the-cave/button-debounce

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

16 Commits

Repository files navigation

Button Debounce

What is it?

Button Debounce is a library to handle contact bounce in your microcontroller system circuit. It build with event driven architecture, non-blocking execution, only standard C, platform and hardware independent. And I hope you'd enjoy it.
I also write up about this library on Slime Systems, be sure to check it out.

How to use this?

Just include the header to your project.

#include "button_debounce.h"

Declaring what to do when the button press has been detected.

// For example toggle an LED
void led_toggle() {
// toggle an LED on pin B5
ChgBit(GPIOB->ODR, 5);
}

Setup an object instance.

const ButtonDebounce_Config button_c3_debounce_config = {
.fell = &led_toggle, // point to the function we just declared

// depend on the circuit and intentions
// you might want to use .rose instead of .fell
// which detects different edge transitions
};
static ButtonDebounce_State button_c3_debounce_state;

// somewhere in main()
button_debounce__init(&button_c3_debounce_state);

And keep sample the signal from the main loop.

for (;;) {
button_debounce__sample(
&button_c3_debounce_config,
&button_c3_debounce_state,
ValBit(GPIOC->IDR, 3)
);
}

See the whole project including Makefile and build instructions at https://github.com/midnight-wonderer/button-debounce-example

License

Button Debounce is released under the BSD 3-Clause License.

Packages

Contributors