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.
TARGET_ARM_CM3DS_MPS2/TOOLCHAIN_ARM_STD/arm_mps2_io_drv.h@172:65be27845400, 2019-02-20 (annotated)
- 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?
User | Revision | Line number | New 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__ */ |