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:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 165:d1b4690b3f8b 1 /*
AnnaBridge 165:d1b4690b3f8b 2 * Copyright (c) 2018 ARM Limited
AnnaBridge 165:d1b4690b3f8b 3 *
AnnaBridge 165:d1b4690b3f8b 4 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 165:d1b4690b3f8b 5 * you may not use this file except in compliance with the License.
AnnaBridge 165:d1b4690b3f8b 6 * You may obtain a copy of the License at
AnnaBridge 165:d1b4690b3f8b 7 *
AnnaBridge 165:d1b4690b3f8b 8 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 165:d1b4690b3f8b 9 *
AnnaBridge 165:d1b4690b3f8b 10 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 165:d1b4690b3f8b 11 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 165:d1b4690b3f8b 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 165:d1b4690b3f8b 13 * See the License for the specific language governing permissions and
AnnaBridge 165:d1b4690b3f8b 14 * limitations under the License.
AnnaBridge 165:d1b4690b3f8b 15 */
AnnaBridge 165:d1b4690b3f8b 16
AnnaBridge 165:d1b4690b3f8b 17 /**
AnnaBridge 165:d1b4690b3f8b 18 * \file arm_mps2_io_drv.h
AnnaBridge 165:d1b4690b3f8b 19 * \brief Generic driver for ARM MPS2 IO.
AnnaBridge 165:d1b4690b3f8b 20 */
AnnaBridge 165:d1b4690b3f8b 21
AnnaBridge 165:d1b4690b3f8b 22 #ifndef __ARM_MPS2_IO_DRV_H__
AnnaBridge 165:d1b4690b3f8b 23 #define __ARM_MPS2_IO_DRV_H__
AnnaBridge 165:d1b4690b3f8b 24
AnnaBridge 165:d1b4690b3f8b 25 #include <stdint.h>
AnnaBridge 165:d1b4690b3f8b 26
AnnaBridge 165:d1b4690b3f8b 27 #ifdef __cplusplus
AnnaBridge 165:d1b4690b3f8b 28 extern "C" {
AnnaBridge 165:d1b4690b3f8b 29 #endif
AnnaBridge 165:d1b4690b3f8b 30
AnnaBridge 165:d1b4690b3f8b 31 /* ARM MPS2 IO enumeration types */
AnnaBridge 165:d1b4690b3f8b 32 enum arm_mps2_io_access_t {
AnnaBridge 165:d1b4690b3f8b 33 ARM_MPS2_IO_ACCESS_PIN = 0, /*!< Pin access to MPS2 IO */
AnnaBridge 165:d1b4690b3f8b 34 ARM_MPS2_IO_ACCESS_PORT /*!< Port access to MPS2 IO */
AnnaBridge 165:d1b4690b3f8b 35 };
AnnaBridge 165:d1b4690b3f8b 36
AnnaBridge 165:d1b4690b3f8b 37 enum arm_mps2_io_type_t {
AnnaBridge 165:d1b4690b3f8b 38 ARM_MPS2_IO_TYPE_SCC = 0, /*!< Use the SCC IO device */
AnnaBridge 165:d1b4690b3f8b 39 ARM_MPS2_IO_TYPE_FPGAIO /*!< Use the FPGA IO device */
AnnaBridge 165:d1b4690b3f8b 40 };
AnnaBridge 165:d1b4690b3f8b 41
AnnaBridge 165:d1b4690b3f8b 42 /* ARM MPS2 IO device configuration structure */
AnnaBridge 165:d1b4690b3f8b 43 struct arm_mps2_io_dev_cfg_t {
AnnaBridge 165:d1b4690b3f8b 44 const uint32_t base; /*!< MPS2 IO base address */
AnnaBridge 165:d1b4690b3f8b 45 const enum arm_mps2_io_type_t type; /*!< SCC or FPGAIO */
AnnaBridge 165:d1b4690b3f8b 46 };
AnnaBridge 165:d1b4690b3f8b 47
AnnaBridge 165:d1b4690b3f8b 48 /* ARM MPS2 IO device structure */
AnnaBridge 165:d1b4690b3f8b 49 struct arm_mps2_io_dev_t {
AnnaBridge 165:d1b4690b3f8b 50 const struct arm_mps2_io_dev_cfg_t* const cfg; /*!< MPS2 IO configuration */
AnnaBridge 165:d1b4690b3f8b 51 };
AnnaBridge 165:d1b4690b3f8b 52
AnnaBridge 165:d1b4690b3f8b 53 /**
AnnaBridge 165:d1b4690b3f8b 54 * \brief Writes to output LEDs.
AnnaBridge 165:d1b4690b3f8b 55 *
AnnaBridge 165:d1b4690b3f8b 56 * \param[in] dev MPS2 IO device where to write \ref arm_mps2_io_dev_t
AnnaBridge 165:d1b4690b3f8b 57 * \param[in] access Access type \ref arm_mps2_io_access_t
AnnaBridge 165:d1b4690b3f8b 58 * \param[in] pin_num Pin number.
AnnaBridge 165:d1b4690b3f8b 59 * \param[in] value Value(s) to set.
AnnaBridge 165:d1b4690b3f8b 60 *
AnnaBridge 165:d1b4690b3f8b 61 * \note This function doesn't check if dev is NULL.
AnnaBridge 165:d1b4690b3f8b 62 */
AnnaBridge 165:d1b4690b3f8b 63 void arm_mps2_io_write_leds(struct arm_mps2_io_dev_t* dev,
AnnaBridge 165:d1b4690b3f8b 64 enum arm_mps2_io_access_t access,
AnnaBridge 165:d1b4690b3f8b 65 uint8_t pin_num,
AnnaBridge 165:d1b4690b3f8b 66 uint32_t value);
AnnaBridge 165:d1b4690b3f8b 67
AnnaBridge 165:d1b4690b3f8b 68 /**
Anna Bridge 169:a7c7b631e539 69 * \brief Writes corresponding pin in FPGA IO MISC register.
Anna Bridge 169:a7c7b631e539 70 *
Anna Bridge 169:a7c7b631e539 71 * \param[in] dev MPS2 IO device where to write \ref arm_mps2_io_dev_t
Anna Bridge 169:a7c7b631e539 72 * \param[in] pin_num Pin number.
Anna Bridge 169:a7c7b631e539 73 * \param[in] value Value to set.
Anna Bridge 169:a7c7b631e539 74 *
Anna Bridge 169:a7c7b631e539 75 * \note This function doesn't check if dev is NULL.
Anna Bridge 169:a7c7b631e539 76 * \note This function doesn't support port access.
Anna Bridge 169:a7c7b631e539 77 */
Anna Bridge 169:a7c7b631e539 78 void arm_mps2_io_write_misc(struct arm_mps2_io_dev_t* dev,
Anna Bridge 169:a7c7b631e539 79 enum arm_mps2_io_access_t access,
Anna Bridge 169:a7c7b631e539 80 uint8_t pin_num,
Anna Bridge 169:a7c7b631e539 81 uint32_t value);
Anna Bridge 169:a7c7b631e539 82
Anna Bridge 169:a7c7b631e539 83 /**
AnnaBridge 165:d1b4690b3f8b 84 * \brief Reads the buttons status.
AnnaBridge 165:d1b4690b3f8b 85 *
AnnaBridge 165:d1b4690b3f8b 86 * \param[in] dev MPS2 IO device where to read \ref arm_mps2_io_dev_t
AnnaBridge 165:d1b4690b3f8b 87 * \param[in] access Access type \ref arm_mps2_io_access_t
AnnaBridge 165:d1b4690b3f8b 88 * \param[in] pin_num Pin number.
AnnaBridge 165:d1b4690b3f8b 89 *
AnnaBridge 165:d1b4690b3f8b 90 * \return Returns bit value for Pin access or port value for port access.
AnnaBridge 165:d1b4690b3f8b 91 *
AnnaBridge 165:d1b4690b3f8b 92 * \note This function doesn't check if dev is NULL.
AnnaBridge 165:d1b4690b3f8b 93 */
AnnaBridge 165:d1b4690b3f8b 94 uint32_t arm_mps2_io_read_buttons(struct arm_mps2_io_dev_t* dev,
AnnaBridge 165:d1b4690b3f8b 95 enum arm_mps2_io_access_t access,
AnnaBridge 165:d1b4690b3f8b 96 uint8_t pin_num);
AnnaBridge 165:d1b4690b3f8b 97
AnnaBridge 165:d1b4690b3f8b 98 /**
AnnaBridge 165:d1b4690b3f8b 99 * \brief Reads the LED status.
AnnaBridge 165:d1b4690b3f8b 100 *
AnnaBridge 165:d1b4690b3f8b 101 * \param[in] dev MPS2 IO device where to read \ref arm_mps2_io_dev_t
AnnaBridge 165:d1b4690b3f8b 102 * \param[in] access Access type \ref arm_mps2_io_access_t
AnnaBridge 165:d1b4690b3f8b 103 * \param[in] pin_num Pin number.
AnnaBridge 165:d1b4690b3f8b 104 *
AnnaBridge 165:d1b4690b3f8b 105 * \return Returns bit value for Pin access or port value for port access.
AnnaBridge 165:d1b4690b3f8b 106 *
AnnaBridge 165:d1b4690b3f8b 107 * \note This function doesn't check if dev is NULL.
AnnaBridge 165:d1b4690b3f8b 108 */
AnnaBridge 165:d1b4690b3f8b 109 uint32_t arm_mps2_io_read_leds(struct arm_mps2_io_dev_t* dev,
AnnaBridge 165:d1b4690b3f8b 110 enum arm_mps2_io_access_t access,
AnnaBridge 165:d1b4690b3f8b 111 uint8_t pin_num);
AnnaBridge 165:d1b4690b3f8b 112
AnnaBridge 165:d1b4690b3f8b 113 #ifdef __cplusplus
AnnaBridge 165:d1b4690b3f8b 114 }
AnnaBridge 165:d1b4690b3f8b 115 #endif
AnnaBridge 165:d1b4690b3f8b 116
AnnaBridge 165:d1b4690b3f8b 117 #endif /* __ARM_MPS2_IO_DRV_H__ */