57 lines
1.6 KiB
ReStructuredText
57 lines
1.6 KiB
ReStructuredText
.. zephyr:code-sample:: watchdog
|
|
:name: Watchdog
|
|
:relevant-api: watchdog_interface
|
|
|
|
Use the watchdog driver API to reset the board when it gets stuck in an infinite loop.
|
|
|
|
Overview
|
|
********
|
|
|
|
This sample demonstrates how to use the watchdog driver API.
|
|
|
|
A typical use case for a watchdog is that the board is restarted in case some piece of code
|
|
is kept in an infinite loop.
|
|
|
|
Building and Running
|
|
********************
|
|
|
|
In this sample, a watchdog callback is used to handle a timeout event once. This functionality is used to request an action before the board
|
|
restarts due to a timeout event in the watchdog driver.
|
|
|
|
The watchdog peripheral is configured in the board's ``.dts`` file. Make sure that the watchdog is enabled
|
|
using the configuration file in ``boards`` folder.
|
|
|
|
Building and Running for ST Nucleo F091RC
|
|
=========================================
|
|
|
|
The sample can be built and executed for the
|
|
:ref:`nucleo_f091rc_board` as follows:
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/drivers/watchdog
|
|
:board: nucleo_f091rc
|
|
:goals: build flash
|
|
:compact:
|
|
|
|
To build for another board, change "nucleo_f091rc" to the name of that board and provide a corresponding devicetree overlay.
|
|
|
|
Sample output
|
|
=============
|
|
|
|
You should get a similar output as below:
|
|
|
|
.. code-block:: console
|
|
|
|
Watchdog sample application
|
|
Attempting to test pre-reset callback
|
|
Feeding watchdog 5 times
|
|
Feeding watchdog...
|
|
Feeding watchdog...
|
|
Feeding watchdog...
|
|
Feeding watchdog...
|
|
Feeding watchdog...
|
|
Waiting for reset...
|
|
Handled things..ready to reset
|
|
|
|
.. note:: After the last message, the board will reset and the sequence will start again
|