| .. 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 |