1 /******************************************************************************* 2 * Copyright (C) 2018, Huada Semiconductor Co.,Ltd All rights reserved. 3 * 4 * This software is owned and published by: 5 * Huada Semiconductor Co.,Ltd ("HDSC"). 6 * 7 * BY DOWNLOADING, INSTALLING OR USING THIS SOFTWARE, YOU AGREE TO BE BOUND 8 * BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT. 9 * 10 * This software contains source code for use with HDSC 11 * components. This software is licensed by HDSC to be adapted only 12 * for use in systems utilizing HDSC components. HDSC shall not be 13 * responsible for misuse or illegal use of this software for devices not 14 * supported herein. HDSC is providing this software "AS IS" and will 15 * not be responsible for issues arising from incorrect user implementation 16 * of the software. 17 * 18 * Disclaimer: 19 * HDSC MAKES NO WARRANTY, EXPRESS OR IMPLIED, ARISING BY LAW OR OTHERWISE, 20 * REGARDING THE SOFTWARE (INCLUDING ANY ACOOMPANYING WRITTEN MATERIALS), 21 * ITS PERFORMANCE OR SUITABILITY FOR YOUR INTENDED USE, INCLUDING, 22 * WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, THE IMPLIED 23 * WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE OR USE, AND THE IMPLIED 24 * WARRANTY OF NONINFRINGEMENT. 25 * HDSC SHALL HAVE NO LIABILITY (WHETHER IN CONTRACT, WARRANTY, TORT, 26 * NEGLIGENCE OR OTHERWISE) FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT 27 * LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, 28 * LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS) ARISING FROM USE OR 29 * INABILITY TO USE THE SOFTWARE, INCLUDING, WITHOUT LIMITATION, ANY DIRECT, 30 * INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOSS OF DATA, 31 * SAVINGS OR PROFITS, 32 * EVEN IF Disclaimer HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 33 * YOU ASSUME ALL RESPONSIBILITIES FOR SELECTION OF THE SOFTWARE TO ACHIEVE YOUR 34 * INTENDED RESULTS, AND FOR THE INSTALLATION OF, USE OF, AND RESULTS OBTAINED 35 * FROM, THE SOFTWARE. 36 * 37 * This software may be replicated in part or whole for the licensed use, 38 * with the restriction that this Disclaimer and Copyright notice must be 39 * included with each copy of this software, whether used in part or whole, 40 * at all times. 41 */ 42 /******************************************************************************/ 43 /** \file ddl.h 44 ** 45 ** DDL common define. 46 ** @link SampleGroup Some description @endlink 47 ** 48 ** - 2018-04-15 1.0 Lux First version. 49 ** 50 ******************************************************************************/ 51 52 #ifndef __DDL_H__ 53 #define __DDL_H__ 54 55 /******************************************************************************/ 56 /* Include files */ 57 /******************************************************************************/ 58 #include "base_types.h" 59 #include "hc32l136.h" 60 #include "system_hc32l136.h" 61 #include "sysctrl.h" 62 63 /* C binding of definitions if building with C++ compiler */ 64 #ifdef __cplusplus 65 extern "C" 66 { 67 #endif 68 69 /******************************************************************************/ 70 /* Global pre-processor symbols/macros ('#define') */ 71 /* Macro for initializing local structures to zero */ 72 /******************************************************************************/ 73 #define DDL_ZERO_STRUCT(x) ddl_memclr((uint8_t*)&(x), (uint32_t)(sizeof(x))) 74 75 #define DEC2BCD(x) ((((x)/10)<<4) + ((x)%10)) 76 #define BCD2DEC(x) ((((x)>>4)*10) + ((x)&0x0F)) 77 78 #define setBit(addr,offset,flag) { if( (flag) > 0u){\ 79 *((volatile uint32_t *)(addr)) |= ((1UL)<<(offset));\ 80 }else{\ 81 *((volatile uint32_t *)(addr)) &= (~(1UL<<(offset)));\ 82 }\ 83 } 84 85 #define getBit(addr,offset) ((((*((volatile uint32_t *)(addr))) >> (offset)) & 1u)>0?1u:0) 86 87 /** 88 ****************************************************************************** 89 ** Global Device Series List 90 ******************************************************************************/ 91 #define DDL_DEVICE_SERIES_HC32L136 (0u) 92 93 /** 94 ****************************************************************************** 95 ** Global Device Package List 96 ******************************************************************************/ 97 // package definitions of HC device. 98 #define DDL_DEVICE_PACKAGE_HC_C (0x00u) 99 #define DDL_DEVICE_PACKAGE_HC_F (0x10u) 100 #define DDL_DEVICE_PACKAGE_HC_J (0x20u) 101 #define DDL_DEVICE_PACKAGE_HC_K (0x30u) 102 103 /******************************************************************************/ 104 /* User Device Setting Include file */ 105 /******************************************************************************/ 106 #include "ddl_device.h" // MUST be included here! 107 108 /** 109 ****************************************************************************** 110 ** \brief IRQ name definition for all type MCUs 111 ******************************************************************************/ 112 113 #define PORTA_IRQHandler(void) IRQ000_Handler(void) 114 #define PORTB_IRQHandler(void) IRQ001_Handler(void) 115 #define PORTC_IRQHandler(void) IRQ002_Handler(void) 116 #define PORTD_IRQHandler(void) IRQ003_Handler(void) 117 #define DMAC_IRQHandler(void) IRQ004_Handler(void) 118 #define TIM3_IRQHandler(void) IRQ005_Handler(void) 119 #define UART0_IRQHandler(void) IRQ006_Handler(void) 120 #define UART1_IRQHandler(void) IRQ007_Handler(void) 121 #define LPUART0_IRQHandler(void) IRQ008_Handler(void) 122 #define LPUART1_IRQHandler(void) IRQ009_Handler(void) 123 #define SPI0_IRQHandler(void) IRQ010_Handler(void) 124 #define SPI1_IRQHandler(void) IRQ011_Handler(void) 125 #define I2C0_IRQHandler(void) IRQ012_Handler(void) 126 #define I2C1_IRQHandler(void) IRQ013_Handler(void) 127 #define TIM0_IRQHandler(void) IRQ014_Handler(void) 128 #define TIM1_IRQHandler(void) IRQ015_Handler(void) 129 #define TIM2_IRQHandler(void) IRQ016_Handler(void) 130 #define LPTIM_IRQHandler(void) IRQ017_Handler(void) 131 #define TIM4_IRQHandler(void) IRQ018_Handler(void) 132 #define TIM5_IRQHandler(void) IRQ019_Handler(void) 133 #define TIM6_IRQHandler(void) IRQ020_Handler(void) 134 #define PCA_IRQHandler(void) IRQ021_Handler(void) 135 #define WDT_IRQHandler(void) IRQ022_Handler(void) 136 #define RTC_IRQHandler(void) IRQ023_Handler(void) 137 #define ADC_IRQHandler(void) IRQ024_Handler(void) 138 #define PCNT_IRQHandler(void) IRQ025_Handler(void) 139 #define VC0_IRQHandler(void) IRQ026_Handler(void) 140 #define VC1_IRQHandler(void) IRQ027_Handler(void) 141 #define LVD_IRQHandler(void) IRQ028_Handler(void) 142 #define LCD_IRQHandler(void) IRQ029_Handler(void) 143 #define EF_RAM_IRQHandler(void) IRQ030_Handler(void) 144 #define CLKTRIM_IRQHandler(void) IRQ031_Handler(void) 145 146 /******************************************************************************/ 147 /* Global type definitions ('typedef') */ 148 /******************************************************************************/ 149 /** 150 ****************************************************************************** 151 ** \brief Level 152 ** 153 ** Specifies levels. 154 ** 155 ******************************************************************************/ 156 typedef enum en_level 157 { 158 DdlLow = 0u, ///< Low level '0' 159 DdlHigh = 1u ///< High level '1' 160 } en_level_t; 161 162 /** 163 ****************************************************************************** 164 ** \brief Generic Flag Code 165 ** 166 ** Specifies flags. 167 ** 168 ******************************************************************************/ 169 typedef enum en_flag 170 { 171 DdlClr = 0u, ///< Flag clr '0' 172 DdlSet = 1u ///< Flag set '1' 173 } en_stat_flag_t, en_irq_flag_t; 174 /******************************************************************************/ 175 /* Global variable declarations ('extern', definition in C source) */ 176 /******************************************************************************/ 177 178 /******************************************************************************/ 179 /* Global function prototypes ('extern', definition in C source) */ 180 /******************************************************************************/ 181 182 /******************************************************************************* 183 * Global function prototypes 184 ******************************************************************************/ 185 extern void ddl_memclr(void* pu8Address, uint32_t u32Count); 186 uint32_t Log2(uint32_t u32Val); 187 /** 188 ******************************************************************************* 189 ** This hook is part of wait loops. 190 ******************************************************************************/ 191 extern void DDL_WAIT_LOOP_HOOK(void); 192 193 void Debug_UartInit(void); 194 195 void delay1ms(uint32_t u32Cnt); 196 void delay100us(uint32_t u32Cnt); 197 void delay10us(uint32_t u32Cnt); 198 #ifdef __cplusplus 199 } 200 #endif 201 202 #endif /* __DDL_H__ */ 203 204 /******************************************************************************/ 205 /* EOF (not truncated) */ 206 /******************************************************************************/ 207 208