The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Mon Oct 02 15:20:36 2017 +0100
Revision:
152:235179ab3f27
Parent:
128:9bcdf88f62b0
Release 152 of the mbed library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 123:b0220dba8be7 1 /* mbed Microcontroller Library
Kojto 123:b0220dba8be7 2 * Copyright (c) 2015-2016 Nuvoton
Kojto 123:b0220dba8be7 3 *
Kojto 123:b0220dba8be7 4 * Licensed under the Apache License, Version 2.0 (the "License");
Kojto 123:b0220dba8be7 5 * you may not use this file except in compliance with the License.
Kojto 123:b0220dba8be7 6 * You may obtain a copy of the License at
Kojto 123:b0220dba8be7 7 *
Kojto 123:b0220dba8be7 8 * http://www.apache.org/licenses/LICENSE-2.0
Kojto 123:b0220dba8be7 9 *
Kojto 123:b0220dba8be7 10 * Unless required by applicable law or agreed to in writing, software
Kojto 123:b0220dba8be7 11 * distributed under the License is distributed on an "AS IS" BASIS,
Kojto 123:b0220dba8be7 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Kojto 123:b0220dba8be7 13 * See the License for the specific language governing permissions and
Kojto 123:b0220dba8be7 14 * limitations under the License.
Kojto 123:b0220dba8be7 15 */
Kojto 123:b0220dba8be7 16
Kojto 123:b0220dba8be7 17 #ifndef NU_BIT_UTIL_H
Kojto 123:b0220dba8be7 18 #define NU_BIT_UTIL_H
Kojto 123:b0220dba8be7 19
AnnaBridge 152:235179ab3f27 20 #if defined(__ICCARM__) && defined(TARGET_M0)
AnnaBridge 152:235179ab3f27 21 #include <arm_math.h>
AnnaBridge 152:235179ab3f27 22 #endif
Kojto 123:b0220dba8be7 23 #include "cmsis.h"
Kojto 123:b0220dba8be7 24
Kojto 123:b0220dba8be7 25 #ifdef __cplusplus
Kojto 123:b0220dba8be7 26 extern "C" {
Kojto 123:b0220dba8be7 27 #endif
Kojto 123:b0220dba8be7 28
Kojto 123:b0220dba8be7 29 __STATIC_INLINE int nu_clz(uint32_t x)
Kojto 123:b0220dba8be7 30 {
Kojto 123:b0220dba8be7 31 return __CLZ(x);
Kojto 123:b0220dba8be7 32 }
Kojto 123:b0220dba8be7 33
Kojto 123:b0220dba8be7 34 __STATIC_INLINE int nu_clo(uint32_t x)
Kojto 123:b0220dba8be7 35 {
Kojto 123:b0220dba8be7 36 return nu_clz(~x);
Kojto 123:b0220dba8be7 37 }
Kojto 123:b0220dba8be7 38
Kojto 123:b0220dba8be7 39 __STATIC_INLINE int nu_ctz(uint32_t x)
Kojto 123:b0220dba8be7 40 {
Kojto 123:b0220dba8be7 41 int c = __CLZ(x & -x);
Kojto 123:b0220dba8be7 42 return x ? 31 - c : c;
Kojto 123:b0220dba8be7 43 }
Kojto 123:b0220dba8be7 44
Kojto 123:b0220dba8be7 45 __STATIC_INLINE int nu_cto(uint32_t x)
Kojto 123:b0220dba8be7 46 {
Kojto 123:b0220dba8be7 47 return nu_ctz(~x);
Kojto 123:b0220dba8be7 48 }
Kojto 123:b0220dba8be7 49
Kojto 123:b0220dba8be7 50
Kojto 123:b0220dba8be7 51 __STATIC_INLINE uint16_t nu_get16_le(const uint8_t *pos)
Kojto 123:b0220dba8be7 52 {
Kojto 123:b0220dba8be7 53 uint16_t val;
Kojto 123:b0220dba8be7 54
Kojto 123:b0220dba8be7 55 val = *pos ++;
Kojto 123:b0220dba8be7 56 val += (*pos << 8);
Kojto 123:b0220dba8be7 57
Kojto 123:b0220dba8be7 58 return val;
Kojto 123:b0220dba8be7 59 }
Kojto 123:b0220dba8be7 60
Kojto 123:b0220dba8be7 61 __STATIC_INLINE void nu_set16_le(uint8_t *pos, uint16_t val)
Kojto 123:b0220dba8be7 62 {
Kojto 123:b0220dba8be7 63 *pos ++ = val & 0xFF;
Kojto 123:b0220dba8be7 64 *pos = val >> 8;
Kojto 123:b0220dba8be7 65 }
Kojto 123:b0220dba8be7 66
Kojto 123:b0220dba8be7 67 __STATIC_INLINE uint32_t nu_get32_le(const uint8_t *pos)
Kojto 123:b0220dba8be7 68 {
Kojto 123:b0220dba8be7 69 uint32_t val;
Kojto 123:b0220dba8be7 70
Kojto 123:b0220dba8be7 71 val = *pos ++;
Kojto 123:b0220dba8be7 72 val += (*pos ++ << 8);
Kojto 123:b0220dba8be7 73 val += (*pos ++ << 16);
Kojto 123:b0220dba8be7 74 val += (*pos ++ << 24);
Kojto 123:b0220dba8be7 75
Kojto 123:b0220dba8be7 76 return val;
Kojto 123:b0220dba8be7 77 }
Kojto 123:b0220dba8be7 78
Kojto 123:b0220dba8be7 79 __STATIC_INLINE void nu_set32_le(uint8_t *pos, uint32_t val)
Kojto 123:b0220dba8be7 80 {
Kojto 123:b0220dba8be7 81 *pos ++ = val & 0xFF;
Kojto 123:b0220dba8be7 82 *pos ++ = (val >> 8) & 0xFF;
Kojto 123:b0220dba8be7 83 *pos ++ = (val >> 16) & 0xFF;
Kojto 123:b0220dba8be7 84 *pos = (val >> 24) & 0xFF;
Kojto 123:b0220dba8be7 85 }
Kojto 123:b0220dba8be7 86
Kojto 123:b0220dba8be7 87 __STATIC_INLINE uint16_t nu_get16_be(const uint8_t *pos)
Kojto 123:b0220dba8be7 88 {
Kojto 123:b0220dba8be7 89 uint16_t val;
Kojto 123:b0220dba8be7 90
Kojto 123:b0220dba8be7 91 val = *pos ++;
Kojto 123:b0220dba8be7 92 val <<= 8;
Kojto 123:b0220dba8be7 93 val += *pos;
Kojto 123:b0220dba8be7 94
Kojto 123:b0220dba8be7 95 return val;
Kojto 123:b0220dba8be7 96 }
Kojto 123:b0220dba8be7 97
Kojto 123:b0220dba8be7 98 __STATIC_INLINE void nu_set16_be(uint8_t *pos, uint16_t val)
Kojto 123:b0220dba8be7 99 {
Kojto 123:b0220dba8be7 100 *pos ++ = val >> 8;
Kojto 123:b0220dba8be7 101 *pos = (val & 0xFF);
Kojto 123:b0220dba8be7 102 }
Kojto 123:b0220dba8be7 103
Kojto 123:b0220dba8be7 104 __STATIC_INLINE uint32_t nu_get32_be(const uint8_t *pos)
Kojto 123:b0220dba8be7 105 {
Kojto 123:b0220dba8be7 106 uint32_t val;
Kojto 123:b0220dba8be7 107
Kojto 123:b0220dba8be7 108 val = *pos ++;
Kojto 123:b0220dba8be7 109 val <<= 8;
Kojto 123:b0220dba8be7 110 val += *pos ++;
Kojto 123:b0220dba8be7 111 val <<= 8;
Kojto 123:b0220dba8be7 112 val += *pos ++;
Kojto 123:b0220dba8be7 113 val <<= 8;
Kojto 123:b0220dba8be7 114 val += *pos;
Kojto 123:b0220dba8be7 115
Kojto 123:b0220dba8be7 116 return val;
Kojto 123:b0220dba8be7 117 }
Kojto 123:b0220dba8be7 118
Kojto 123:b0220dba8be7 119 __STATIC_INLINE void nu_set32_be(uint8_t *pos, uint32_t val)
Kojto 123:b0220dba8be7 120 {
Kojto 123:b0220dba8be7 121 *pos ++ = val >> 24;
Kojto 123:b0220dba8be7 122 *pos ++ = val >> 16;
Kojto 123:b0220dba8be7 123 *pos ++ = val >> 8;
Kojto 123:b0220dba8be7 124 *pos ++ = (val & 0xFF);
Kojto 123:b0220dba8be7 125 }
Kojto 123:b0220dba8be7 126
Kojto 123:b0220dba8be7 127 #ifdef __cplusplus
Kojto 123:b0220dba8be7 128 }
Kojto 123:b0220dba8be7 129 #endif
Kojto 123:b0220dba8be7 130
Kojto 123:b0220dba8be7 131 #endif