mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-04 09:11:57 +00:00
Kernel timeouts have always been a 32 bit integer despite the existence of generation macros, and existing code has been inconsistent about using them. Upcoming commits are going to make the timeout arguments opaque, so fix things up to be rigorously correct. Changes include: + Adding a K_TIMEOUT_EQ() macro for code that needs to compare timeout values for equality (e.g. with K_FOREVER or K_NO_WAIT). + Adding a k_msleep() synonym for k_sleep() which can continue to take integral arguments as k_sleep() moves away to timeout arguments. + Pervasively using the K_MSEC(), K_SECONDS(), et. al. macros to generate timeout arguments. + Removing the usage of K_NO_WAIT as the final argument to K_THREAD_DEFINE(). This is just a count of milliseconds and we need to use a zero. This patch include no logic changes and should not affect generated code at all. Signed-off-by: Andy Ross <andrew.j.ross@intel.com> |
||
---|---|---|
.. | ||
src | ||
CMakeLists.txt | ||
prj.conf | ||
README.rst | ||
sample.yaml |
.. _button-sample: Button demo ########### Overview ******** A simple button demo showcasing the use of GPIO input with interrupts. Requirements ************ The demo assumes that a push button is connected to one of GPIO lines. The sample code is configured to work on boards with user defined buttons and that have defined the SW0_* variables. To use this sample, you will require a board that defines the user switch in its header file. The :file:`board.h` must define the following variables: - SW0_GPIO_NAME (or DT_ALIAS_SW0_GPIOS_CONTROLLER) - DT_ALIAS_SW0_GPIOS_PIN Alternatively, this could also be done by defining 'sw0' alias in the board devicetree description file. Building and Running ******************** This sample can be built for multiple boards, in this example we will build it for the nucleo_f103rb board: .. zephyr-app-commands:: :zephyr-app: samples/basic/button :board: nucleo_f103rb :goals: build :compact: After startup, the program looks up a predefined GPIO device, and configures the pin in input mode, enabling interrupt generation on falling edge. During each iteration of the main loop, the state of GPIO line is monitored and printed to the serial console. When the input button gets pressed, the interrupt handler will print an information about this event along with its timestamp.