1 /*
2 * Copyright (c) 2022 - 2024, Nordic Semiconductor ASA
3 * All rights reserved.
4 *
5 * SPDX-License-Identifier: BSD-3-Clause
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright notice, this
11 * list of conditions and the following disclaimer.
12 *
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 *
17 * 3. Neither the name of the copyright holder nor the names of its
18 * contributors may be used to endorse or promote products derived from this
19 * software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE.
32 */
33
34 #include <nrfx_example.h>
35 #include <nrfx_temp.h>
36
37 #define NRFX_LOG_MODULE EXAMPLE
38 #define NRFX_EXAMPLE_CONFIG_LOG_ENABLED 1
39 #define NRFX_EXAMPLE_CONFIG_LOG_LEVEL 3
40 #include <nrfx_log.h>
41
42 /**
43 * @defgroup nrfx_temp_blocking_example Blocking TEMP example
44 * @{
45 * @ingroup nrfx_temp_examples
46 *
47 * @brief Example shows the functionality of nrfx_temp driver operating in the blocking mode.
48 *
49 * @details Application initializes nrfx_temp driver and starts operating in the blocking mode.
50 * The temperature measurement and relevant message logging are performed, until a number
51 * of measurements taken is equal to the value specified by the user.
52 */
53
54 /** @brief Symbol specifying the number of temperature measurements to take. */
55 #define TEMP_ITERATIONS 5UL
56
57 /**
58 * @brief Function for application main entry.
59 *
60 * @return Nothing.
61 */
main(void)62 int main(void)
63 {
64 nrfx_err_t status;
65 (void)status;
66
67 uint32_t i = 0;
68
69 NRFX_EXAMPLE_LOG_INIT();
70
71 NRFX_LOG_INFO("Starting nrfx_temp blocking example.");
72 NRFX_EXAMPLE_LOG_PROCESS();
73
74 nrfx_temp_config_t config = NRFX_TEMP_DEFAULT_CONFIG;
75 status = nrfx_temp_init(&config, NULL);
76 NRFX_ASSERT(status == NRFX_SUCCESS);
77
78 while (1)
79 {
80 if (i < TEMP_ITERATIONS)
81 {
82 status = nrfx_temp_measure();
83 NRFX_ASSERT(status == NRFX_SUCCESS);
84
85 int32_t temperature = nrfx_temp_result_get();
86 int32_t celsius_temperature = nrfx_temp_calculate(temperature);
87
88 int32_t whole_celsius = celsius_temperature / 100;
89 uint8_t fraction_celsius = NRFX_ABS(celsius_temperature % 100);
90
91 NRFX_LOG_INFO("Measured temperature: %d.%02u [C]", whole_celsius, fraction_celsius);
92
93 i++;
94 }
95 else if (i == TEMP_ITERATIONS)
96 {
97 nrfx_temp_uninit();
98 i++;
99 }
100
101 NRFX_EXAMPLE_LOG_PROCESS();
102 }
103 }
104
105 /** @} */
106