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.

Revision:
171:3a7713b1edbc
Parent:
167:84c0a372a020
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TARGET_MAX32620FTHR/TOOLCHAIN_IAR/mxc_sys.h	Thu Nov 08 11:45:42 2018 +0000
@@ -0,0 +1,444 @@
+/*******************************************************************************
+ * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
+ * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name of Maxim Integrated
+ * Products, Inc. shall not be used except as stated in the Maxim Integrated
+ * Products, Inc. Branding Policy.
+ *
+ * The mere transfer of this software does not imply any licenses
+ * of trade secrets, proprietary technology, copyrights, patents,
+ * trademarks, maskwork rights, or any other form of intellectual
+ * property whatsoever. Maxim Integrated Products, Inc. retains all
+ * ownership rights.
+ *
+ * $Date: 2016-06-03 14:21:38 -0500 (Fri, 03 Jun 2016) $
+ * $Revision: 23194 $
+ *
+ ******************************************************************************/
+
+/**
+ * @file    mxc_sys.h
+ * @brief   System level header file.
+ */
+
+#ifndef _MXC_SYS_H_
+#define _MXC_SYS_H_
+
+#include "mxc_config.h"
+#include "clkman.h"
+#include "ioman.h"
+#include "gpio.h"
+#include "i2cm_regs.h"
+#include "i2cs_regs.h"
+#include "tmr_regs.h"
+#include "pt_regs.h"
+#include "wdt_regs.h"
+#include "owm_regs.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/***** Definitions *****/
+
+/** @brief System Configuration Object */
+typedef struct {
+    clkman_scale_t clk_scale;   /** desired clock scale value for the peripheral */
+    ioman_cfg_t io_cfg;         /** IOMAN configuration object */
+} sys_cfg_t;
+
+/** @brief Watchdog System Configuration Object */
+typedef struct {
+    clkman_wdt_clk_select_t clk; /** select the clock source for the watchdog */
+    clkman_scale_t clk_scale;    /** desired clock scale value for the peripheral */
+    /** clk_scale is only applied if the system clock is used as the clk */
+} sys_cfg_wdt_t;
+
+/** @brief UART System Configuration Object */
+typedef sys_cfg_t sys_cfg_uart_t;
+
+/** @brief I2CM System Configuration Object */
+typedef sys_cfg_t sys_cfg_i2cm_t;
+
+/** @brief I2CS System Configuration Object */
+typedef sys_cfg_t sys_cfg_i2cs_t;
+
+/** @brief SPIM System Configuration Object */
+typedef sys_cfg_t sys_cfg_spim_t;
+
+/** @brief SPIX System Configuration Object */
+typedef sys_cfg_t sys_cfg_spix_t;
+
+/** @brief SPIS System Configuration Object */
+typedef sys_cfg_t sys_cfg_spis_t;
+
+/** @brief OWM System Configuration Object */
+typedef sys_cfg_t sys_cfg_owm_t;
+
+/** @brief Timer System Configuration Object */
+typedef gpio_cfg_t sys_cfg_tmr_t;
+
+/** @brief Pulse Train System Configuration Object */
+typedef gpio_cfg_t sys_cfg_pt_t;
+typedef clkman_scale_t sys_pt_clk_scale;
+
+/***** Include Files *****/
+/* These includes require the above types to be defined first */
+#include "uart.h"
+#include "spim.h"
+
+/***** Function Prototypes *****/
+
+/**
+ * @brief Get the frequency of a clock scaler
+ * @param clk_scale     value of clk_scale field from clk_ctrl register
+ * @returns             frequency in Hz
+ */
+uint32_t SYS_GetFreq(uint32_t clk_scale);
+
+/**
+ * @brief Get the frequency of the CPU
+ * @returns         frequency in Hz
+ */
+uint32_t SYS_CPU_GetFreq(void);
+
+/**
+ * @brief       System level initialization for ADC module.
+ * @returns     E_NO_ERROR if everything is successful
+ */
+int SYS_ADC_Init(void);
+
+/**
+ * @brief       System level initialization for AES module.
+ * @returns     E_NO_ERROR if everything is successful
+ */
+int SYS_AES_Init(void);
+
+/**
+ * @brief       System level initialization for GPIO module.
+ * @returns     E_NO_ERROR if everything is successful
+ */
+int SYS_GPIO_Init(void);
+
+/**
+ * @brief System level initialization for UART module.
+ * @param uart      Pointer to UART module registers
+ * @param uart_cfg  UART configuration object
+ * @param sys_cfg   System configuration object
+ * @returns         E_NO_ERROR if everything is successful
+ */
+int SYS_UART_Init(mxc_uart_regs_t *uart, const uart_cfg_t *uart_cfg, const sys_cfg_uart_t *sys_cfg);
+
+/**
+ * @brief System level shutdown for UART module
+ * @param uart      Pointer to UART module registers
+ * @returns         E_NO_ERROR if everything is successful
+ */
+int SYS_UART_Shutdown(mxc_uart_regs_t *uart);
+
+/**
+ * @brief Get the frequency of the UART module source clock
+ * @param uart      Pointer to UART module registers
+ * @returns         frequency in Hz
+ */
+uint32_t SYS_UART_GetFreq(mxc_uart_regs_t *uart);
+
+/**
+ * @brief System level initialization for I2CM module.
+ * @param i2cm      Pointer to I2CM module registers
+ * @param cfg       System configuration object
+ * @returns         E_NO_ERROR if everything is successful
+ */
+int SYS_I2CM_Init(mxc_i2cm_regs_t *i2cm, const sys_cfg_i2cm_t *cfg);
+
+/**
+ * @brief System level shutdown for I2CM module
+ * @param i2cm      Pointer to I2CM module registers
+ * @returns         E_NO_ERROR if everything is successful
+ */
+int SYS_I2CM_Shutdown(mxc_i2cm_regs_t *i2cm);
+
+/**
+ * @brief Get the frequency of the I2CM module source clock
+ * @param i2cm      Pointer to I2CM module registers
+ * @returns         frequency in Hz
+ */
+uint32_t SYS_I2CM_GetFreq(mxc_i2cm_regs_t *i2cm);
+
+/**
+ * @brief System level initialization for I2CS module.
+ * @param i2cs      Pointer to I2CS module registers
+ * @param cfg       System configuration object
+ * @returns         E_NO_ERROR if everything is successful
+ */
+int SYS_I2CS_Init(mxc_i2cs_regs_t *i2cs, const sys_cfg_i2cs_t *cfg);
+
+/**
+ * @brief System level shutdown for I2CS module
+ * @param i2cs      Pointer to I2CS module registers
+ * @returns         E_NO_ERROR if everything is successful
+ */
+int SYS_I2CS_Shutdown(mxc_i2cs_regs_t *i2cs);
+
+/**
+ * @brief Get the frequency of the I2CS module source clock
+ * @param i2cs      Pointer to I2CS module registers
+ * @returns         frequency in Hz
+ */
+uint32_t SYS_I2CS_GetFreq(mxc_i2cs_regs_t *i2cs);
+
+/**
+ * @brief System level initialization for SPIM module.
+ * @param spim      Pointer to SPIM module registers
+ * @param spim_cfg  SPIM configuration object
+ * @param sys_cfg   System configuration object
+ * @returns         E_NO_ERROR if everything is successful
+ */
+int SYS_SPIM_Init(mxc_spim_regs_t *spim, const spim_cfg_t *spim_cfg, const sys_cfg_spim_t *sys_cfg);
+
+/**
+ * @brief System level shutdown for SPIM module
+ * @param spim      Pointer to SPIM module registers
+ * @returns         E_NO_ERROR if everything is successful
+ */
+int SYS_SPIM_Shutdown(mxc_spim_regs_t *spim);
+
+/**
+ * @brief Get the frequency of the SPIM module source clock
+ * @param spim      Pointer to SPIM module registers
+ * @returns         frequency in Hz
+ */
+uint32_t SYS_SPIM_GetFreq(mxc_spim_regs_t *spim);
+
+/**
+ * @brief System level initialization for SPIX module.
+ * @param sys_cfg   System configuration object
+ * @param baud      Baud rate for clock divider configuration
+ * @returns         E_NO_ERROR if everything is successful
+ */
+int SYS_SPIX_Init(const sys_cfg_spix_t *sys_cfg, uint32_t baud);
+
+/**
+ * @brief System level shutdown for SPIX module
+ * @returns         E_NO_ERROR if everything is successful
+ */
+int SYS_SPIX_Shutdown(void);
+
+/**
+ * @brief Get the frequency of the SPIX module source clock
+ * @returns         frequency in Hz
+ */
+uint32_t SYS_SPIX_GetFreq(void);
+
+/**
+ * @brief System level initialization for SPIS module.
+ * @param sys_cfg   System configuration object.
+ * @returns         E_NO_ERROR if everything is successful.
+ */
+int SYS_SPIS_Init(const sys_cfg_spix_t *sys_cfg);
+
+/**
+ * @brief System level shutdown for SPIS module
+ * @returns         E_NO_ERROR if everything is successful
+ */
+int SYS_SPIS_Shutdown(void);
+
+/**
+ * @brief Get the frequency of the SPIS module source clock
+ * @returns         frequency in Hz
+ */
+uint32_t SYS_SPIS_GetFreq(void);
+
+/**
+ * @brief System level initialization for OWM module.
+ * @param owm      Pointer to OWM module registers
+ * @param owm_cfg  OWM configuration object
+ * @param sys_cfg  System configuration object
+ * @returns        E_NO_ERROR if everything is successful
+ */
+int SYS_OWM_Init(mxc_owm_regs_t *owm, const sys_cfg_owm_t *sys_cfg);
+
+/**
+ * @brief System level shutdown for OWM module
+ * @param owm      Pointer to OWM module registers
+ * @returns        E_NO_ERROR if everything is successful
+ */
+int SYS_OWM_Shutdown(mxc_owm_regs_t *owm);
+
+/**
+ * @brief Get the frequency of the OWM module source clock
+ * @param owm      Pointer to OWM module registers
+ * @returns         frequency in Hz
+ */
+uint32_t SYS_OWM_GetFreq(mxc_owm_regs_t *owm);
+
+/**
+ * @brief System level initialization for TMR module.
+ * @param tmr       Pointer to TMR module registers
+ * @param cfg       System configuration object
+ * @returns         E_NO_ERROR if everything is successful
+ */
+int SYS_TMR_Init(mxc_tmr_regs_t *tmr, const sys_cfg_tmr_t *cfg);
+
+/**
+ * @brief Get the frequency of the TMR module source clock
+ * @param spim      Pointer to TMR module registers
+ * @returns         frequency in Hz
+ */
+uint32_t SYS_TMR_GetFreq(mxc_tmr_regs_t *tmr);
+
+/**
+ * @brief Get the frequency of the Pulse Train module source clock
+ * @returns         frequency in Hz
+ */
+uint32_t SYS_PT_GetFreq(void);
+
+/**
+ * @brief Initialize the global pulse train clock scale
+ * @param clk_scale scale the system clock for the PT clock
+ */
+void SYS_PT_Init(sys_pt_clk_scale clk_scale);
+
+/**
+ * @brief System level initialization for Pulse Train module.
+ * @param pt        Pointer to PT module registers
+ * @param cfg       System configuration object
+ * @returns         E_NO_ERROR if everything is successful
+ */
+int SYS_PT_Config(mxc_pt_regs_t *pt, const sys_cfg_pt_t *cfg);
+
+/**
+ * @brief System level initialization for USB device.
+ * @param enable    1 to enable the peripheral, 0 to disable.
+ */
+void SYS_USB_Enable(uint8_t enable);
+
+/**
+ * @brief   System Tick Configuration Helper
+ *
+ * The function enables selection of the external clock source for the
+ * System Tick Timer. It initializes the System Timer and its interrupt,
+ * and starts the System Tick Timer. Counter is in free running mode to generate
+ * periodic interrupts.
+
+ * @param   ticks       Number of ticks between two interrupts.
+ * @param   clk_src     Selects between default SystemClock or External Clock.
+ *                      -  0 Use external clock source
+ *                      -  1 SystemClock
+ * @return  E_NO_ERROR  Function succeeded.
+ * @return  E_INVALID   Invalid reload value requested.
+ *
+ * @see CLKMAN_SetRTOSMode(uint8_t enable) if using the external clock source to drive the System Tick Timer
+ *
+ */
+int SYS_SysTick_Config(uint32_t ticks, int clk_src);
+
+/**
+ * @brief Disable System Tick timer
+ *
+ *
+ */
+__STATIC_INLINE void SYS_SysTick_Disable(void)
+{
+	SysTick->CTRL = 0;
+}
+
+/**
+ * @brief   Delay a requested number of SysTick Timer Ticks.
+ * @param   ticks           Number of System Ticks to delay.
+ * @note    This delay function is based on the clock used for the SysTick timer
+ *          if the SysTick timer is enabled. If the SysTick timer is
+ *          not enabled, the current SysTick registers are saved and the
+ *          timer will use the SystemClock as the source for the delay.
+ *          The delay is measured in clock ticks and is not based on the
+ *          SysTick interval.
+ * @returns E_NO_ERROR if everything is successful
+ */
+int SYS_SysTick_Delay(uint32_t ticks);
+
+/**
+ * @brief Get the frequency of the SysTick Timer
+ * @returns             frequency in Hz
+ */
+uint32_t SYS_SysTick_GetFreq(void);
+
+/**
+ * @brief   Delay a requested number of microseconds.
+ * @param   us              Number of microseconds to delay.
+ * @note    Calls SYS_SysTick_Delay.
+ */
+__STATIC_INLINE void SYS_SysTick_DelayUs(uint32_t us)
+{
+    SYS_SysTick_Delay((uint32_t)(((uint64_t)SYS_SysTick_GetFreq() * us) / 1000000));
+}
+
+/**
+ * @brief   System level initialization for RTC module.
+ * @returns E_NO_ERROR if everything is successful
+ */
+int SYS_RTC_Init(void);
+
+/**
+ * @brief   Select VDDIO for the specified GPIO pin.
+ */
+void SYS_IOMAN_UseVDDIO(const gpio_cfg_t *cfg);
+
+/**
+ * @brief   Select VDDIOH for the specified GPIO pin.
+ */
+void SYS_IOMAN_UseVDDIOH(const gpio_cfg_t *cfg);
+
+/**
+ * @brief System level initialization for Watchdog module.
+ * @param wdt      Pointer to Watchdog module registers
+ * @param cfg      Watchdog System configuration object
+ */
+void SYS_WDT_Init(mxc_wdt_regs_t *wdt, const sys_cfg_wdt_t *cfg);
+
+/**
+ * @brief System level initialization for PRNG module.
+ *        Enable crypto clock and set divisors to 1 if disabled
+ */
+void SYS_PRNG_Init(void);
+
+/**
+ * @brief System level initialization for MAA module.
+ *        Enable crypto clock and set divisors to 1 if disabled
+ */
+void SYS_MAA_Init(void);
+
+/*
+ * @brief Gets the size of the SRAM
+ * @returns size of SRAM in bytes
+ */
+uint32_t SYS_SRAM_GetSize(void);
+
+/*
+ * @brief Gets the size of the Flash
+ * @returns size of Flash in bytes
+ */
+uint32_t SYS_FLASH_GetSize(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MXC_SYS_H_*/