mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Thu Nov 08 11:46:34 2018 +0000
Revision:
188:bcfe06ba3d64
Child:
189:f392fc9709a3
mbed-dev library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 188:bcfe06ba3d64 1 /*
AnnaBridge 188:bcfe06ba3d64 2 * mbed Microcontroller Library
AnnaBridge 188:bcfe06ba3d64 3 * Copyright (c) 2017-2018 Future Electronics
AnnaBridge 188:bcfe06ba3d64 4 *
AnnaBridge 188:bcfe06ba3d64 5 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 188:bcfe06ba3d64 6 * you may not use this file except in compliance with the License.
AnnaBridge 188:bcfe06ba3d64 7 * You may obtain a copy of the License at
AnnaBridge 188:bcfe06ba3d64 8 *
AnnaBridge 188:bcfe06ba3d64 9 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 188:bcfe06ba3d64 10 *
AnnaBridge 188:bcfe06ba3d64 11 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 188:bcfe06ba3d64 12 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 188:bcfe06ba3d64 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 188:bcfe06ba3d64 14 * See the License for the specific language governing permissions and
AnnaBridge 188:bcfe06ba3d64 15 * limitations under the License.
AnnaBridge 188:bcfe06ba3d64 16 */
AnnaBridge 188:bcfe06ba3d64 17
AnnaBridge 188:bcfe06ba3d64 18 #ifndef MBED_OBJECTS_H
AnnaBridge 188:bcfe06ba3d64 19 #define MBED_OBJECTS_H
AnnaBridge 188:bcfe06ba3d64 20
AnnaBridge 188:bcfe06ba3d64 21 #include "cmsis.h"
AnnaBridge 188:bcfe06ba3d64 22 #include "PeripheralNames.h"
AnnaBridge 188:bcfe06ba3d64 23 #include "PinNames.h"
AnnaBridge 188:bcfe06ba3d64 24 #include "PortNames.h"
AnnaBridge 188:bcfe06ba3d64 25
AnnaBridge 188:bcfe06ba3d64 26 #include "gpio_irq_api.h"
AnnaBridge 188:bcfe06ba3d64 27 #include "gpio_object.h"
AnnaBridge 188:bcfe06ba3d64 28 #include "drivers/peripheral/sysclk/cy_sysclk.h"
AnnaBridge 188:bcfe06ba3d64 29 #include "drivers/peripheral/syspm/cy_syspm.h"
AnnaBridge 188:bcfe06ba3d64 30
AnnaBridge 188:bcfe06ba3d64 31 #ifdef __cplusplus
AnnaBridge 188:bcfe06ba3d64 32 extern "C" {
AnnaBridge 188:bcfe06ba3d64 33 #endif
AnnaBridge 188:bcfe06ba3d64 34
AnnaBridge 188:bcfe06ba3d64 35 #if DEVICE_INTERRUPTIN
AnnaBridge 188:bcfe06ba3d64 36 struct gpio_irq_s {
AnnaBridge 188:bcfe06ba3d64 37 GPIO_PRT_Type* port;
AnnaBridge 188:bcfe06ba3d64 38 uint32_t port_id;
AnnaBridge 188:bcfe06ba3d64 39 uint32_t pin;
AnnaBridge 188:bcfe06ba3d64 40 gpio_irq_event mode;
AnnaBridge 188:bcfe06ba3d64 41 gpio_irq_handler handler;
AnnaBridge 188:bcfe06ba3d64 42 uint32_t id_arg;
AnnaBridge 188:bcfe06ba3d64 43 #if defined (TARGET_MCU_PSOC6_M0)
AnnaBridge 188:bcfe06ba3d64 44 cy_en_intr_t cm0p_irq_src;
AnnaBridge 188:bcfe06ba3d64 45 #endif
AnnaBridge 188:bcfe06ba3d64 46 };
AnnaBridge 188:bcfe06ba3d64 47 #endif // DEVICE_INTERRUPTIN
AnnaBridge 188:bcfe06ba3d64 48
AnnaBridge 188:bcfe06ba3d64 49 struct port_s {
AnnaBridge 188:bcfe06ba3d64 50 GPIO_PRT_Type *port;
AnnaBridge 188:bcfe06ba3d64 51
AnnaBridge 188:bcfe06ba3d64 52 uint32_t port_id;
AnnaBridge 188:bcfe06ba3d64 53 uint32_t mask;
AnnaBridge 188:bcfe06ba3d64 54 PinDirection direction;
AnnaBridge 188:bcfe06ba3d64 55 PinMode mode;
AnnaBridge 188:bcfe06ba3d64 56 // __IO uint32_t *reg_in;
AnnaBridge 188:bcfe06ba3d64 57 // __IO uint32_t *reg_out;
AnnaBridge 188:bcfe06ba3d64 58 };
AnnaBridge 188:bcfe06ba3d64 59
AnnaBridge 188:bcfe06ba3d64 60 // struct analogin_s {
AnnaBridge 188:bcfe06ba3d64 61 // ADCName adc;
AnnaBridge 188:bcfe06ba3d64 62 // PinName pin;
AnnaBridge 188:bcfe06ba3d64 63 // uint32_t channel;
AnnaBridge 188:bcfe06ba3d64 64 // };
AnnaBridge 188:bcfe06ba3d64 65
AnnaBridge 188:bcfe06ba3d64 66 #if DEVICE_SERIAL
AnnaBridge 188:bcfe06ba3d64 67 #include "cy_scb_uart.h"
AnnaBridge 188:bcfe06ba3d64 68
AnnaBridge 188:bcfe06ba3d64 69 struct serial_s {
AnnaBridge 188:bcfe06ba3d64 70 CySCB_Type *base;
AnnaBridge 188:bcfe06ba3d64 71 uint32_t serial_id;
AnnaBridge 188:bcfe06ba3d64 72 PinName pin_rx;
AnnaBridge 188:bcfe06ba3d64 73 PinName pin_tx;
AnnaBridge 188:bcfe06ba3d64 74 PinName pin_cts;
AnnaBridge 188:bcfe06ba3d64 75 PinName pin_rts;
AnnaBridge 188:bcfe06ba3d64 76 en_clk_dst_t clock;
AnnaBridge 188:bcfe06ba3d64 77 cy_en_divider_types_t div_type;
AnnaBridge 188:bcfe06ba3d64 78 uint8_t div_num;
AnnaBridge 188:bcfe06ba3d64 79 uint8_t data_width;
AnnaBridge 188:bcfe06ba3d64 80 cy_en_scb_uart_stop_bits_t stop_bits;
AnnaBridge 188:bcfe06ba3d64 81 cy_en_scb_uart_parity_t parity;
AnnaBridge 188:bcfe06ba3d64 82 #if DEVICE_SERIAL_ASYNCH
AnnaBridge 188:bcfe06ba3d64 83 uint32_t rx_events;
AnnaBridge 188:bcfe06ba3d64 84 bool rx_pending;
AnnaBridge 188:bcfe06ba3d64 85 uint32_t tx_events;
AnnaBridge 188:bcfe06ba3d64 86 bool tx_pending;
AnnaBridge 188:bcfe06ba3d64 87 cy_israddress async_handler;
AnnaBridge 188:bcfe06ba3d64 88 #endif // DEVICE_SERIAL_ASYNCH
AnnaBridge 188:bcfe06ba3d64 89 #if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER
AnnaBridge 188:bcfe06ba3d64 90 cy_stc_syspm_callback_params_t pm_callback_params;
AnnaBridge 188:bcfe06ba3d64 91 cy_stc_syspm_callback_t pm_callback_handler;
AnnaBridge 188:bcfe06ba3d64 92 #endif
AnnaBridge 188:bcfe06ba3d64 93 };
AnnaBridge 188:bcfe06ba3d64 94 #endif // DEVICE_SERIAL
AnnaBridge 188:bcfe06ba3d64 95
AnnaBridge 188:bcfe06ba3d64 96 #if DEVICE_SPI
AnnaBridge 188:bcfe06ba3d64 97 #include "cy_scb_spi.h"
AnnaBridge 188:bcfe06ba3d64 98
AnnaBridge 188:bcfe06ba3d64 99 struct spi_s {
AnnaBridge 188:bcfe06ba3d64 100 CySCB_Type *base;
AnnaBridge 188:bcfe06ba3d64 101 uint32_t spi_id;
AnnaBridge 188:bcfe06ba3d64 102 PinName pin_miso;
AnnaBridge 188:bcfe06ba3d64 103 PinName pin_mosi;
AnnaBridge 188:bcfe06ba3d64 104 PinName pin_sclk;
AnnaBridge 188:bcfe06ba3d64 105 PinName pin_ssel;
AnnaBridge 188:bcfe06ba3d64 106 en_clk_dst_t clock;
AnnaBridge 188:bcfe06ba3d64 107 uint32_t div_num;
AnnaBridge 188:bcfe06ba3d64 108 cy_en_divider_types_t div_type;
AnnaBridge 188:bcfe06ba3d64 109 uint32_t clk_frequency;
AnnaBridge 188:bcfe06ba3d64 110 cy_en_scb_spi_mode_t ms_mode;
AnnaBridge 188:bcfe06ba3d64 111 cy_en_scb_spi_sclk_mode_t clk_mode;
AnnaBridge 188:bcfe06ba3d64 112 uint8_t data_bits;
AnnaBridge 188:bcfe06ba3d64 113 cy_stc_scb_spi_context_t context;
AnnaBridge 188:bcfe06ba3d64 114 #if DEVICE_SPI_ASYNCH
AnnaBridge 188:bcfe06ba3d64 115 IRQn_Type irqn;
AnnaBridge 188:bcfe06ba3d64 116 #if defined (TARGET_MCU_PSOC6_M0)
AnnaBridge 188:bcfe06ba3d64 117 cy_en_intr_t cm0p_irq_src;
AnnaBridge 188:bcfe06ba3d64 118 #endif
AnnaBridge 188:bcfe06ba3d64 119 uint16_t pending;
AnnaBridge 188:bcfe06ba3d64 120 uint16_t events;
AnnaBridge 188:bcfe06ba3d64 121 uint32_t handler;
AnnaBridge 188:bcfe06ba3d64 122 void *rx_buffer;
AnnaBridge 188:bcfe06ba3d64 123 uint32_t rx_buffer_size;
AnnaBridge 188:bcfe06ba3d64 124 void *tx_buffer;
AnnaBridge 188:bcfe06ba3d64 125 uint32_t tx_buffer_size;
AnnaBridge 188:bcfe06ba3d64 126 #endif // DEVICE_SPI_ASYNCH
AnnaBridge 188:bcfe06ba3d64 127 #if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER
AnnaBridge 188:bcfe06ba3d64 128 cy_stc_syspm_callback_params_t pm_callback_params;
AnnaBridge 188:bcfe06ba3d64 129 cy_stc_syspm_callback_t pm_callback_handler;
AnnaBridge 188:bcfe06ba3d64 130 #endif
AnnaBridge 188:bcfe06ba3d64 131 };
AnnaBridge 188:bcfe06ba3d64 132 #endif // DEVICE_SPI
AnnaBridge 188:bcfe06ba3d64 133
AnnaBridge 188:bcfe06ba3d64 134 #if DEVICE_I2C
AnnaBridge 188:bcfe06ba3d64 135 #include "cy_scb_i2c.h"
AnnaBridge 188:bcfe06ba3d64 136
AnnaBridge 188:bcfe06ba3d64 137 struct i2c_s {
AnnaBridge 188:bcfe06ba3d64 138 CySCB_Type *base;
AnnaBridge 188:bcfe06ba3d64 139 uint32_t i2c_id;
AnnaBridge 188:bcfe06ba3d64 140 PinName pin_sda;
AnnaBridge 188:bcfe06ba3d64 141 PinName pin_scl;
AnnaBridge 188:bcfe06ba3d64 142 en_clk_dst_t clock;
AnnaBridge 188:bcfe06ba3d64 143 uint32_t divider;
AnnaBridge 188:bcfe06ba3d64 144 uint32_t actual_speed;
AnnaBridge 188:bcfe06ba3d64 145 cy_en_scb_i2c_mode_t mode;
AnnaBridge 188:bcfe06ba3d64 146 uint32_t timeout;
AnnaBridge 188:bcfe06ba3d64 147 #if DEVICE_I2C_SLAVE
AnnaBridge 188:bcfe06ba3d64 148 uint16_t ADDRESS;
AnnaBridge 188:bcfe06ba3d64 149 uint16_t is_setAddress;
AnnaBridge 188:bcfe06ba3d64 150 #endif
AnnaBridge 188:bcfe06ba3d64 151 cy_stc_scb_i2c_context_t context;
AnnaBridge 188:bcfe06ba3d64 152 #if DEVICE_I2C_ASYNCH
AnnaBridge 188:bcfe06ba3d64 153 cy_stc_scb_i2c_master_xfer_config_t rx_config;
AnnaBridge 188:bcfe06ba3d64 154 cy_stc_scb_i2c_master_xfer_config_t tx_config;
AnnaBridge 188:bcfe06ba3d64 155 IRQn_Type irqn;
AnnaBridge 188:bcfe06ba3d64 156 #if defined (TARGET_MCU_PSOC6_M0)
AnnaBridge 188:bcfe06ba3d64 157 cy_en_intr_t cm0p_irq_src;
AnnaBridge 188:bcfe06ba3d64 158 #endif
AnnaBridge 188:bcfe06ba3d64 159 uint16_t pending;
AnnaBridge 188:bcfe06ba3d64 160 uint16_t events;
AnnaBridge 188:bcfe06ba3d64 161 uint32_t handler;
AnnaBridge 188:bcfe06ba3d64 162 #endif // DEVICE_I2C_ASYNCH
AnnaBridge 188:bcfe06ba3d64 163 #if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER
AnnaBridge 188:bcfe06ba3d64 164 cy_stc_syspm_callback_params_t pm_callback_params;
AnnaBridge 188:bcfe06ba3d64 165 cy_stc_syspm_callback_t pm_callback_handler;
AnnaBridge 188:bcfe06ba3d64 166 #endif
AnnaBridge 188:bcfe06ba3d64 167 };
AnnaBridge 188:bcfe06ba3d64 168 #endif // DEVICE_I2C
AnnaBridge 188:bcfe06ba3d64 169
AnnaBridge 188:bcfe06ba3d64 170 #if DEVICE_PWMOUT
AnnaBridge 188:bcfe06ba3d64 171 #include "cy_tcpwm.h"
AnnaBridge 188:bcfe06ba3d64 172
AnnaBridge 188:bcfe06ba3d64 173 struct pwmout_s {
AnnaBridge 188:bcfe06ba3d64 174 TCPWM_Type *base;
AnnaBridge 188:bcfe06ba3d64 175 PinName pin;
AnnaBridge 188:bcfe06ba3d64 176 uint32_t counter_id;
AnnaBridge 188:bcfe06ba3d64 177 uint32_t clock;
AnnaBridge 188:bcfe06ba3d64 178 uint32_t period;
AnnaBridge 188:bcfe06ba3d64 179 uint32_t pulse_width;
AnnaBridge 188:bcfe06ba3d64 180 uint32_t prescaler;
AnnaBridge 188:bcfe06ba3d64 181 #if DEVICE_SLEEP && DEVICE_LOWPOWERTIMER
AnnaBridge 188:bcfe06ba3d64 182 cy_stc_syspm_callback_params_t pm_callback_params;
AnnaBridge 188:bcfe06ba3d64 183 cy_stc_syspm_callback_t pm_callback_handler;
AnnaBridge 188:bcfe06ba3d64 184 #endif
AnnaBridge 188:bcfe06ba3d64 185 };
AnnaBridge 188:bcfe06ba3d64 186 #endif // DEVICE_PWMOUT
AnnaBridge 188:bcfe06ba3d64 187
AnnaBridge 188:bcfe06ba3d64 188 #ifdef DEVICE_ANALOGIN
AnnaBridge 188:bcfe06ba3d64 189 #include "cy_sar.h"
AnnaBridge 188:bcfe06ba3d64 190
AnnaBridge 188:bcfe06ba3d64 191 struct analogin_s {
AnnaBridge 188:bcfe06ba3d64 192 SAR_Type *base;
AnnaBridge 188:bcfe06ba3d64 193 PinName pin;
AnnaBridge 188:bcfe06ba3d64 194 uint32_t channel_mask;
AnnaBridge 188:bcfe06ba3d64 195 uint32_t clock;
AnnaBridge 188:bcfe06ba3d64 196 };
AnnaBridge 188:bcfe06ba3d64 197 #endif // DEVICE_ANALOGIN
AnnaBridge 188:bcfe06ba3d64 198
AnnaBridge 188:bcfe06ba3d64 199 #ifdef DEVICE_ANALOGOUT
AnnaBridge 188:bcfe06ba3d64 200 #include "cy_ctdac.h"
AnnaBridge 188:bcfe06ba3d64 201
AnnaBridge 188:bcfe06ba3d64 202 struct dac_s {
AnnaBridge 188:bcfe06ba3d64 203 CTDAC_Type *base;
AnnaBridge 188:bcfe06ba3d64 204 PinName pin;
AnnaBridge 188:bcfe06ba3d64 205 uint32_t clock;
AnnaBridge 188:bcfe06ba3d64 206 };
AnnaBridge 188:bcfe06ba3d64 207 #endif // DEVICE_ANALOGOUT
AnnaBridge 188:bcfe06ba3d64 208
AnnaBridge 188:bcfe06ba3d64 209 #ifdef DEVICE_FLASH
AnnaBridge 188:bcfe06ba3d64 210 struct flash_s {
AnnaBridge 188:bcfe06ba3d64 211 /* nothing to be stored for now */
AnnaBridge 188:bcfe06ba3d64 212 void *dummy;
AnnaBridge 188:bcfe06ba3d64 213 };
AnnaBridge 188:bcfe06ba3d64 214 #endif // DEVICE_FLASH
AnnaBridge 188:bcfe06ba3d64 215
AnnaBridge 188:bcfe06ba3d64 216 #if DEVICE_TRNG
AnnaBridge 188:bcfe06ba3d64 217 struct trng_s {
AnnaBridge 188:bcfe06ba3d64 218 /* nothing to be stored for now */
AnnaBridge 188:bcfe06ba3d64 219 void *dummy;
AnnaBridge 188:bcfe06ba3d64 220 };
AnnaBridge 188:bcfe06ba3d64 221 #endif // DEVICE_TRNG
AnnaBridge 188:bcfe06ba3d64 222
AnnaBridge 188:bcfe06ba3d64 223 #ifdef __cplusplus
AnnaBridge 188:bcfe06ba3d64 224 }
AnnaBridge 188:bcfe06ba3d64 225 #endif
AnnaBridge 188:bcfe06ba3d64 226
AnnaBridge 188:bcfe06ba3d64 227 #endif