├── .gitattributes ├── .gitignore ├── DiscreteFile ├── SYSTEM │ ├── STM32F10xR.LIB │ ├── delay │ │ ├── delay.c │ │ └── delay.h │ ├── sys │ │ ├── cortexm3_macro.h │ │ ├── stm32f10x_adc.h │ │ ├── stm32f10x_bkp.h │ │ ├── stm32f10x_can.h │ │ ├── stm32f10x_conf.h │ │ ├── stm32f10x_dma.h │ │ ├── stm32f10x_exti.h │ │ ├── stm32f10x_flash.h │ │ ├── stm32f10x_gpio.h │ │ ├── stm32f10x_i2c.h │ │ ├── stm32f10x_it.h │ │ ├── stm32f10x_iwdg.h │ │ ├── stm32f10x_lib.h │ │ ├── stm32f10x_map.h │ │ ├── stm32f10x_nvic.h │ │ ├── stm32f10x_pwr.h │ │ ├── stm32f10x_rcc.h │ │ ├── stm32f10x_rtc.h │ │ ├── stm32f10x_spi.h │ │ ├── stm32f10x_systick.h │ │ ├── stm32f10x_tim.h │ │ ├── stm32f10x_tim1.h │ │ ├── stm32f10x_type.h │ │ ├── stm32f10x_usart.h │ │ ├── stm32f10x_wwdg.h │ │ ├── sys.c │ │ └── sys.h │ └── usart │ │ ├── usart.c │ │ └── usart.h ├── USB │ ├── USB_CH341.H │ ├── USB_CH341.c │ ├── hw_config.c │ ├── hw_config.h │ ├── platform_config.h │ ├── usb_conf.h │ ├── usb_core.c │ ├── usb_core.h │ ├── usb_def.h │ ├── usb_desc.c │ ├── usb_desc.h │ ├── usb_endp.c │ ├── usb_init.c │ ├── usb_init.h │ ├── usb_int.c │ ├── usb_int.h │ ├── usb_istr.c │ ├── usb_istr.h │ ├── usb_lib.h │ ├── usb_mem.c │ ├── usb_mem.h │ ├── usb_prop.c │ ├── usb_prop.h │ ├── usb_pwr.c │ ├── usb_pwr.h │ ├── usb_regs.c │ ├── usb_regs.h │ └── usb_type.h ├── USER │ ├── ExtDll.iex │ ├── STM32F10x.s │ ├── TEST.plg │ ├── TEST.uvopt │ ├── TEST.uvproj │ └── test.c └── keilkilll.bat ├── README.md ├── SingleFile ├── STM32F10xlib │ ├── STM32F10xR.LIB │ ├── cortexm3_macro.h │ ├── stm32f10x_conf.h │ ├── stm32f10x_gpio.h │ ├── stm32f10x_map.h │ ├── stm32f10x_nvic.h │ ├── stm32f10x_rcc.h │ └── stm32f10x_type.h ├── SYSTEM │ ├── delay │ │ ├── delay.c │ │ └── delay.h │ ├── sys │ │ ├── cortexm3_macro.h │ │ ├── stm32f10x_adc.h │ │ ├── stm32f10x_bkp.h │ │ ├── stm32f10x_can.h │ │ ├── stm32f10x_conf.h │ │ ├── stm32f10x_dma.h │ │ ├── stm32f10x_exti.h │ │ ├── stm32f10x_flash.h │ │ ├── stm32f10x_gpio.h │ │ ├── stm32f10x_i2c.h │ │ ├── stm32f10x_it.h │ │ ├── stm32f10x_iwdg.h │ │ ├── stm32f10x_lib.h │ │ ├── stm32f10x_map.h │ │ ├── stm32f10x_nvic.h │ │ ├── stm32f10x_pwr.h │ │ ├── stm32f10x_rcc.h │ │ ├── stm32f10x_rtc.h │ │ ├── stm32f10x_spi.h │ │ ├── stm32f10x_systick.h │ │ ├── stm32f10x_tim.h │ │ ├── stm32f10x_tim1.h │ │ ├── stm32f10x_type.h │ │ ├── stm32f10x_usart.h │ │ ├── stm32f10x_wwdg.h │ │ ├── sys.c │ │ └── sys.h │ └── usart │ │ ├── usart.c │ │ └── usart.h ├── USB │ ├── USB_CH341.H │ ├── USB_CH341.c │ └── usb_lib.h ├── USER │ ├── STM32F10x.s │ ├── TEST.uvopt │ ├── TEST.uvproj │ ├── stm32f10x_conf.h │ └── test.c └── keilkilll.bat └── diagram.jpg /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | *.[oa] 3 | *.~ 4 | *.config 5 | *.creator 6 | *.files 7 | *.includes 8 | *.d 9 | *.lnp 10 | *.map 11 | *.sct 12 | *.dep 13 | *.lst 14 | *.htm 15 | *.html 16 | *.rar 17 | *.css 18 | *.crf 19 | *.axf 20 | *.ini 21 | *.txt 22 | *.lenovo 23 | *.blackmiaool 24 | *.Administrator 25 | *.__i 26 | *.tra 27 | *.map 28 | *.hex 29 | *.plg 30 | 31 | 32 | 33 | 34 | 35 | 36 | ################# 37 | ## Eclipse 38 | ################# 39 | 40 | *.pydevproject 41 | .project 42 | .metadata 43 | bin/ 44 | tmp/ 45 | *.tmp 46 | *.bak 47 | *.swp 48 | *~.nib 49 | local.properties 50 | .classpath 51 | .settings/ 52 | .loadpath 53 | 54 | # External tool builders 55 | .externalToolBuilders/ 56 | 57 | # Locally stored "Eclipse launch configurations" 58 | *.launch 59 | 60 | # CDT-specific 61 | .cproject 62 | 63 | # PDT-specific 64 | .buildpath 65 | 66 | 67 | ################# 68 | ## Visual Studio 69 | ################# 70 | 71 | ## Ignore Visual Studio temporary files, build results, and 72 | ## files generated by popular Visual Studio add-ons. 73 | 74 | # User-specific files 75 | *.suo 76 | *.user 77 | *.sln.docstates 78 | 79 | # Build results 80 | 81 | [Dd]ebug/ 82 | [Rr]elease/ 83 | x64/ 84 | build/ 85 | [Bb]in/ 86 | [Oo]bj/ 87 | 88 | # MSTest test Results 89 | [Tt]est[Rr]esult*/ 90 | [Bb]uild[Ll]og.* 91 | 92 | *_i.c 93 | *_p.c 94 | *.ilk 95 | *.meta 96 | *.obj 97 | *.pch 98 | *.pdb 99 | *.pgc 100 | *.pgd 101 | *.rsp 102 | *.sbr 103 | *.tlb 104 | *.tli 105 | *.tlh 106 | *.tmp 107 | *.tmp_proj 108 | *.log 109 | *.vspscc 110 | *.vssscc 111 | .builds 112 | *.pidb 113 | *.log 114 | *.scc 115 | 116 | # Visual C++ cache files 117 | ipch/ 118 | *.aps 119 | *.ncb 120 | *.opensdf 121 | *.sdf 122 | *.cachefile 123 | 124 | # Visual Studio profiler 125 | *.psess 126 | *.vsp 127 | *.vspx 128 | 129 | # Guidance Automation Toolkit 130 | *.gpState 131 | 132 | # ReSharper is a .NET coding add-in 133 | _ReSharper*/ 134 | *.[Rr]e[Ss]harper 135 | 136 | # TeamCity is a build add-in 137 | _TeamCity* 138 | 139 | # DotCover is a Code Coverage Tool 140 | *.dotCover 141 | 142 | # NCrunch 143 | *.ncrunch* 144 | .*crunch*.local.xml 145 | 146 | # Installshield output folder 147 | [Ee]xpress/ 148 | 149 | # DocProject is a documentation generator add-in 150 | DocProject/buildhelp/ 151 | DocProject/Help/*.HxT 152 | DocProject/Help/*.HxC 153 | DocProject/Help/*.hhc 154 | DocProject/Help/*.hhk 155 | DocProject/Help/*.hhp 156 | DocProject/Help/Html2 157 | DocProject/Help/html 158 | 159 | # Click-Once directory 160 | publish/ 161 | 162 | # Publish Web Output 163 | *.Publish.xml 164 | *.pubxml 165 | 166 | # NuGet Packages Directory 167 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 168 | #packages/ 169 | 170 | # Windows Azure Build Output 171 | csx 172 | *.build.csdef 173 | 174 | # Windows Store app package directory 175 | AppPackages/ 176 | 177 | # Others 178 | sql/ 179 | *.Cache 180 | ClientBin/ 181 | [Ss]tyle[Cc]op.* 182 | ~$* 183 | *~ 184 | *.dbmdl 185 | *.[Pp]ublish.xml 186 | *.pfx 187 | *.publishsettings 188 | 189 | # RIA/Silverlight projects 190 | Generated_Code/ 191 | 192 | # Backup & report files from converting an old project file to a newer 193 | # Visual Studio version. Backup files are not needed, because we have git ;-) 194 | _UpgradeReport_Files/ 195 | Backup*/ 196 | UpgradeLog*.XML 197 | UpgradeLog*.htm 198 | 199 | # SQL Server files 200 | App_Data/*.mdf 201 | App_Data/*.ldf 202 | 203 | ############# 204 | ## Windows detritus 205 | ############# 206 | 207 | # Windows image file caches 208 | Thumbs.db 209 | ehthumbs.db 210 | 211 | # Folder config file 212 | Desktop.ini 213 | 214 | # Recycle Bin used on file shares 215 | $RECYCLE.BIN/ 216 | 217 | # Mac crap 218 | .DS_Store 219 | 220 | 221 | ############# 222 | ## Python 223 | ############# 224 | 225 | *.py[co] 226 | 227 | # Packages 228 | *.egg 229 | *.egg-info 230 | dist/ 231 | build/ 232 | eggs/ 233 | parts/ 234 | var/ 235 | sdist/ 236 | develop-eggs/ 237 | .installed.cfg 238 | 239 | # Installer logs 240 | pip-log.txt 241 | 242 | # Unit test / coverage reports 243 | .coverage 244 | .tox 245 | 246 | #Translations 247 | *.mo 248 | 249 | #Mr Developer 250 | .mr.developer.cfg 251 | *.txt 252 | MDK/JLinkLog.txt 253 | MDK/STM32F407VGT6.uvgui.blackmiaool 254 | MDK/STM32F407VGT6.uvopt 255 | MDK/STM32F407VGT6.uvgui.blackmiaool 256 | MDK/STM32F407VGT6.map 257 | slave/USER/TEST.uvgui.blackmiaool 258 | slave/USER/TEST.uvopt 259 | MDK/JLinkLog.txt 260 | MDK/STM32F407VGT6.map 261 | MDK/STM32F407VGT6.uvgui.blackmiaool 262 | MDK/STM32F407VGT6_STM32G407VGT6.dep 263 | MDK/JLinkLog.txt 264 | MDK/STM32F407VGT6.map 265 | MDK/STM32F407VGT6.uvopt 266 | MDK/STM32F407VGT6_STM32G407VGT6.dep 267 | *.dep 268 | ava.creator.user.10a68a2 269 | APP/d.cpp 270 | -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/STM32F10xR.LIB: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/DiscreteFile/SYSTEM/STM32F10xR.LIB -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/delay/delay.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/DiscreteFile/SYSTEM/delay/delay.c -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/delay/delay.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/DiscreteFile/SYSTEM/delay/delay.h -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/cortexm3_macro.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : cortexm3_macro.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : Header file for cortexm3_macro.s. 6 | ******************************************************************************** 7 | * History: 8 | * 04/02/2007: V0.2 9 | * 02/05/2007: V0.1 10 | * 09/29/2006: V0.01 11 | ******************************************************************************** 12 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 13 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 14 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 15 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 16 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 17 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 18 | *******************************************************************************/ 19 | 20 | /* Define to prevent recursive inclusion -------------------------------------*/ 21 | #ifndef __CORTEXM3_MACRO_H 22 | #define __CORTEXM3_MACRO_H 23 | 24 | /* Includes ------------------------------------------------------------------*/ 25 | #include "stm32f10x_type.h" 26 | 27 | /* Exported types ------------------------------------------------------------*/ 28 | /* Exported constants --------------------------------------------------------*/ 29 | /* Exported macro ------------------------------------------------------------*/ 30 | /* Exported functions ------------------------------------------------------- */ 31 | void __WFI(void); 32 | void __WFE(void); 33 | void __SEV(void); 34 | void __ISB(void); 35 | void __DSB(void); 36 | void __DMB(void); 37 | void __SVC(void); 38 | u32 __MRS_CONTROL(void); 39 | void __MSR_CONTROL(u32 Control); 40 | void __SETPRIMASK(void); 41 | void __RESETPRIMASK(void); 42 | void __SETFAULTMASK(void); 43 | void __RESETFAULTMASK(void); 44 | void __BASEPRICONFIG(u32 NewPriority); 45 | u32 __GetBASEPRI(void); 46 | u16 __REV_HalfWord(u16 Data); 47 | u32 __REV_Word(u32 Data); 48 | 49 | #endif /* __CORTEXM3_MACRO_H */ 50 | 51 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 52 | -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/stm32f10x_bkp.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_bkp.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * BKP firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_BKP_H 23 | #define __STM32F10x_BKP_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* Exported constants --------------------------------------------------------*/ 30 | /* Tamper Pin active level*/ 31 | #define BKP_TamperPinLevel_High ((u16)0x0000) 32 | #define BKP_TamperPinLevel_Low ((u16)0x0001) 33 | 34 | #define IS_BKP_TAMPER_PIN_LEVEL(LEVEL) ((LEVEL == BKP_TamperPinLevel_High) || \ 35 | (LEVEL == BKP_TamperPinLevel_Low)) 36 | 37 | /* Data Backup Register */ 38 | #define BKP_DR1 ((u16)0x0004) 39 | #define BKP_DR2 ((u16)0x0008) 40 | #define BKP_DR3 ((u16)0x000C) 41 | #define BKP_DR4 ((u16)0x0010) 42 | #define BKP_DR5 ((u16)0x0014) 43 | #define BKP_DR6 ((u16)0x0018) 44 | #define BKP_DR7 ((u16)0x001C) 45 | #define BKP_DR8 ((u16)0x0020) 46 | #define BKP_DR9 ((u16)0x0024) 47 | #define BKP_DR10 ((u16)0x0028) 48 | 49 | #define IS_BKP_DR(DR) ((DR == BKP_DR1) || (DR == BKP_DR2) || (DR == BKP_DR3) || \ 50 | (DR == BKP_DR4) || (DR == BKP_DR5) || (DR == BKP_DR6) || \ 51 | (DR == BKP_DR7) || (DR == BKP_DR8) || (DR == BKP_DR9) || \ 52 | (DR == BKP_DR10)) 53 | 54 | #define IS_BKP_CALIBRATION_VALUE(VALUE) (VALUE <= 0x7F) 55 | 56 | /* Exported macro ------------------------------------------------------------*/ 57 | /* Exported functions ------------------------------------------------------- */ 58 | void BKP_DeInit(void); 59 | void BKP_TamperPinLevelConfig(u16 BKP_TamperPinLevel); 60 | void BKP_TamperPinCmd(FunctionalState NewState); 61 | void BKP_ITConfig(FunctionalState NewState); 62 | void BKP_RTCCalibrationClockOutputCmd(FunctionalState NewState); 63 | void BKP_SetRTCCalibrationValue(u8 CalibrationValue); 64 | void BKP_WriteBackupRegister(u16 BKP_DR, u16 Data); 65 | u16 BKP_ReadBackupRegister(u16 BKP_DR); 66 | FlagStatus BKP_GetFlagStatus(void); 67 | void BKP_ClearFlag(void); 68 | ITStatus BKP_GetITStatus(void); 69 | void BKP_ClearITPendingBit(void); 70 | 71 | #endif /* __STM32F10x_BKP_H */ 72 | 73 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 74 | -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/stm32f10x_conf.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : stm32f10x_conf.h 3 | * Author : MCD Application Team 4 | * Version : V2.0.1 5 | * Date : 06/13/2008 6 | * Description : Library configuration file. 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __STM32F10x_CONF_H 18 | #define __STM32F10x_CONF_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | #include "stm32f10x_type.h" 22 | 23 | /* Exported types ------------------------------------------------------------*/ 24 | /* Exported constants --------------------------------------------------------*/ 25 | /* Uncomment the line below to compile the library in DEBUG mode, this will expanse 26 | the "assert_param" macro in the firmware library code (see "Exported macro" 27 | section below) */ 28 | /* #define DEBUG 1*/ 29 | 30 | /* Comment the line below to disable the specific peripheral inclusion */ 31 | /************************************* BKP ************************************/ 32 | #define _BKP 33 | 34 | /************************************* CAN ************************************/ 35 | #define _CAN 36 | 37 | /************************************* CRC ************************************/ 38 | #define _CRC 39 | 40 | /************************************* DAC ************************************/ 41 | #define _DAC 42 | 43 | /************************************* DBGMCU *********************************/ 44 | #define _DBGMCU 45 | 46 | /************************************* DMA ************************************/ 47 | #define _DMA 48 | #define _DMA1_Channel1 49 | #define _DMA1_Channel2 50 | #define _DMA1_Channel3 51 | #define _DMA1_Channel4 52 | #define _DMA1_Channel5 53 | #define _DMA1_Channel6 54 | #define _DMA1_Channel7 55 | #define _DMA2_Channel1 56 | #define _DMA2_Channel2 57 | #define _DMA2_Channel3 58 | #define _DMA2_Channel4 59 | #define _DMA2_Channel5 60 | 61 | /************************************* EXTI ***********************************/ 62 | #define _EXTI 63 | 64 | /************************************* FLASH and Option Bytes *****************/ 65 | #define _FLASH 66 | /* Uncomment the line below to enable FLASH program/erase/protections functions, 67 | otherwise only FLASH configuration (latency, prefetch, half cycle) functions 68 | are enabled */ 69 | #define _FLASH_PROG 70 | 71 | /************************************* FSMC ***********************************/ 72 | #define _FSMC 73 | 74 | /************************************* GPIO ***********************************/ 75 | #define _GPIO 76 | #define _GPIOA 77 | #define _GPIOB 78 | #define _GPIOC 79 | #define _GPIOD 80 | #define _GPIOE 81 | #define _GPIOF 82 | #define _GPIOG 83 | #define _AFIO 84 | 85 | /************************************* I2C ************************************/ 86 | #define _I2C 87 | #define _I2C1 88 | #define _I2C2 89 | 90 | /************************************* IWDG ***********************************/ 91 | #define _IWDG 92 | 93 | /************************************* NVIC ***********************************/ 94 | #define _NVIC 95 | 96 | /************************************* PWR ************************************/ 97 | #define _PWR 98 | 99 | /************************************* RCC ************************************/ 100 | #define _RCC 101 | 102 | /************************************* RTC ************************************/ 103 | #define _RTC 104 | 105 | /************************************* SDIO ***********************************/ 106 | #define _SDIO 107 | 108 | /************************************* SPI ************************************/ 109 | #define _SPI 110 | #define _SPI1 111 | #define _SPI2 112 | #define _SPI3 113 | 114 | /************************************* SysTick ********************************/ 115 | #define _SysTick 116 | 117 | /************************************* TIM ************************************/ 118 | #define _TIM 119 | #define _TIM1 120 | #define _TIM2 121 | #define _TIM3 122 | #define _TIM4 123 | #define _TIM5 124 | #define _TIM6 125 | #define _TIM7 126 | #define _TIM8 127 | 128 | /************************************* USART **********************************/ 129 | #define _USART 130 | #define _USART1 131 | #define _USART2 132 | #define _USART3 133 | #define _UART4 134 | #define _UART5 135 | 136 | /************************************* WWDG ***********************************/ 137 | #define _WWDG 138 | 139 | /* In the following line adjust the value of External High Speed oscillator (HSE) 140 | used in your application */ 141 | #define HSE_Value ((u32)8000000) /* Value of the External oscillator in Hz*/ 142 | 143 | /* Exported macro ------------------------------------------------------------*/ 144 | #ifdef DEBUG 145 | /******************************************************************************* 146 | * Macro Name : assert_param 147 | * Description : The assert_param macro is used for function's parameters check. 148 | * It is used only if the library is compiled in DEBUG mode. 149 | * Input : - expr: If expr is false, it calls assert_failed function 150 | * which reports the name of the source file and the source 151 | * line number of the call that failed. 152 | * If expr is true, it returns no value. 153 | * Return : None 154 | *******************************************************************************/ 155 | #define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__)) 156 | /* Exported functions ------------------------------------------------------- */ 157 | void assert_failed(u8* file, u32 line); 158 | #else 159 | #define assert_param(expr) ((void)0) 160 | #endif /* DEBUG */ 161 | 162 | #endif /* __STM32F10x_CONF_H */ 163 | 164 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 165 | -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/stm32f10x_exti.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_exti.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * EXTI firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_EXTI_H 23 | #define __STM32F10x_EXTI_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* EXTI mode enumeration -----------------------------------------------------*/ 30 | typedef enum 31 | { 32 | EXTI_Mode_Interrupt = 0x00, 33 | EXTI_Mode_Event = 0x04 34 | }EXTIMode_TypeDef; 35 | 36 | #define IS_EXTI_MODE(MODE) ((MODE == EXTI_Mode_Interrupt) || (MODE == EXTI_Mode_Event)) 37 | 38 | /* EXTI Trigger enumeration --------------------------------------------------*/ 39 | typedef enum 40 | { 41 | EXTI_Trigger_Rising = 0x08, 42 | EXTI_Trigger_Falling = 0x0C, 43 | EXTI_Trigger_Rising_Falling = 0x10 44 | }EXTITrigger_TypeDef; 45 | 46 | #define IS_EXTI_TRIGGER(TRIGGER) ((TRIGGER == EXTI_Trigger_Rising) || \ 47 | (TRIGGER == EXTI_Trigger_Falling) || \ 48 | (TRIGGER == EXTI_Trigger_Rising_Falling)) 49 | 50 | /* EXTI Init Structure definition --------------------------------------------*/ 51 | typedef struct 52 | { 53 | u32 EXTI_Line; 54 | EXTIMode_TypeDef EXTI_Mode; 55 | EXTITrigger_TypeDef EXTI_Trigger; 56 | FunctionalState EXTI_LineCmd; 57 | }EXTI_InitTypeDef; 58 | 59 | /* Exported constants --------------------------------------------------------*/ 60 | /* EXTI Lines ----------------------------------------------------------------*/ 61 | #define EXTI_Line0 ((u32)0x00001) /* External interrupt line 0 */ 62 | #define EXTI_Line1 ((u32)0x00002) /* External interrupt line 1 */ 63 | #define EXTI_Line2 ((u32)0x00004) /* External interrupt line 2 */ 64 | #define EXTI_Line3 ((u32)0x00008) /* External interrupt line 3 */ 65 | #define EXTI_Line4 ((u32)0x00010) /* External interrupt line 4 */ 66 | #define EXTI_Line5 ((u32)0x00020) /* External interrupt line 5 */ 67 | #define EXTI_Line6 ((u32)0x00040) /* External interrupt line 6 */ 68 | #define EXTI_Line7 ((u32)0x00080) /* External interrupt line 7 */ 69 | #define EXTI_Line8 ((u32)0x00100) /* External interrupt line 8 */ 70 | #define EXTI_Line9 ((u32)0x00200) /* External interrupt line 9 */ 71 | #define EXTI_Line10 ((u32)0x00400) /* External interrupt line 10 */ 72 | #define EXTI_Line11 ((u32)0x00800) /* External interrupt line 11 */ 73 | #define EXTI_Line12 ((u32)0x01000) /* External interrupt line 12 */ 74 | #define EXTI_Line13 ((u32)0x02000) /* External interrupt line 13 */ 75 | #define EXTI_Line14 ((u32)0x04000) /* External interrupt line 14 */ 76 | #define EXTI_Line15 ((u32)0x08000) /* External interrupt line 15 */ 77 | #define EXTI_Line16 ((u32)0x10000) /* External interrupt line 16 78 | Connected to the PVD Output */ 79 | #define EXTI_Line17 ((u32)0x20000) /* External interrupt line 17 80 | Connected to the RTC Alarm event */ 81 | #define EXTI_Line18 ((u32)0x40000) /* External interrupt line 18 82 | Connected to the USB Wakeup from 83 | suspend event */ 84 | 85 | #define IS_EXTI_LINE(LINE) (((LINE & (u32)0xFFF80000) == 0x00) && (LINE != (u16)0x00)) 86 | 87 | #define IS_GET_EXTI_LINE(LINE) ((LINE == EXTI_Line0) || (LINE == EXTI_Line1) || \ 88 | (LINE == EXTI_Line2) || (LINE == EXTI_Line3) || \ 89 | (LINE == EXTI_Line4) || (LINE == EXTI_Line5) || \ 90 | (LINE == EXTI_Line6) || (LINE == EXTI_Line7) || \ 91 | (LINE == EXTI_Line8) || (LINE == EXTI_Line9) || \ 92 | (LINE == EXTI_Line10) || (LINE == EXTI_Line11) || \ 93 | (LINE == EXTI_Line12) || (LINE == EXTI_Line13) || \ 94 | (LINE == EXTI_Line14) || (LINE == EXTI_Line15) || \ 95 | (LINE == EXTI_Line16) || (LINE == EXTI_Line17) || \ 96 | (LINE == EXTI_Line18)) 97 | 98 | /* Exported macro ------------------------------------------------------------*/ 99 | /* Exported functions ------------------------------------------------------- */ 100 | void EXTI_DeInit(void); 101 | void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct); 102 | void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct); 103 | void EXTI_GenerateSWInterrupt(u32 EXTI_Line); 104 | FlagStatus EXTI_GetFlagStatus(u32 EXTI_Line); 105 | void EXTI_ClearFlag(u32 EXTI_Line); 106 | ITStatus EXTI_GetITStatus(u32 EXTI_Line); 107 | void EXTI_ClearITPendingBit(u32 EXTI_Line); 108 | 109 | #endif /* __STM32F10x_EXTI_H */ 110 | 111 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 112 | -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/stm32f10x_it.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_it.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains the headers of the interrupt handlers. 6 | ******************************************************************************** 7 | * History: 8 | * mm/dd/yyyy: V0.1 9 | * 09/29/2006: V0.01 10 | ******************************************************************************** 11 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 12 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 13 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 14 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 15 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 16 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 17 | *******************************************************************************/ 18 | 19 | /* Define to prevent recursive inclusion -------------------------------------*/ 20 | #ifndef __STM32F10x_IT_H 21 | #define __STM32F10x_IT_H 22 | 23 | /* Includes ------------------------------------------------------------------*/ 24 | #include "stm32f10x_lib.h" 25 | 26 | /* Exported types ------------------------------------------------------------*/ 27 | /* Exported constants --------------------------------------------------------*/ 28 | /* Exported macro ------------------------------------------------------------*/ 29 | /* Exported functions ------------------------------------------------------- */ 30 | 31 | void NMIException(void); 32 | void HardFaultException(void); 33 | void MemManageException(void); 34 | void BusFaultException(void); 35 | void UsageFaultException(void); 36 | void DebugMonitor(void); 37 | void SVCHandler(void); 38 | void PendSVC(void); 39 | void SysTickHandler(void); 40 | void WWDG_IRQHandler(void); 41 | void PVD_IRQHandler(void); 42 | void TAMPER_IRQHandler(void); 43 | void RTC_IRQHandler(void); 44 | void FLASH_IRQHandler(void); 45 | void RCC_IRQHandler(void); 46 | void EXTI0_IRQHandler(void); 47 | void EXTI1_IRQHandler(void); 48 | void EXTI2_IRQHandler(void); 49 | void EXTI3_IRQHandler(void); 50 | void EXTI4_IRQHandler(void); 51 | void DMAChannel1_IRQHandler(void); 52 | void DMAChannel2_IRQHandler(void); 53 | void DMAChannel3_IRQHandler(void); 54 | void DMAChannel4_IRQHandler(void); 55 | void DMAChannel5_IRQHandler(void); 56 | void DMAChannel6_IRQHandler(void); 57 | void DMAChannel7_IRQHandler(void); 58 | void ADC_IRQHandler(void); 59 | void USB_HP_CAN_TX_IRQHandler(void); 60 | void USB_LP_CAN_RX0_IRQHandler(void); 61 | void CAN_RX1_IRQHandler(void); 62 | void CAN_SCE_IRQHandler(void); 63 | void EXTI9_5_IRQHandler(void); 64 | void TIM1_BRK_IRQHandler(void); 65 | void TIM1_UP_IRQHandler(void); 66 | void TIM1_TRG_COM_IRQHandler(void); 67 | void TIM1_CC_IRQHandler(void); 68 | void TIM2_IRQHandler(void); 69 | void TIM3_IRQHandler(void); 70 | void TIM4_IRQHandler(void); 71 | void I2C1_EV_IRQHandler(void); 72 | void I2C1_ER_IRQHandler(void); 73 | void I2C2_EV_IRQHandler(void); 74 | void I2C2_ER_IRQHandler(void); 75 | void SPI1_IRQHandler(void); 76 | void SPI2_IRQHandler(void); 77 | void USART1_IRQHandler(void); 78 | void USART2_IRQHandler(void); 79 | void USART3_IRQHandler(void); 80 | void EXTI15_10_IRQHandler(void); 81 | void RTCAlarm_IRQHandler(void); 82 | void USBWakeUp_IRQHandler(void); 83 | 84 | #endif /* __STM32F10x_IT_H */ 85 | 86 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 87 | -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/stm32f10x_iwdg.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_iwdg.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * IWDG firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_IWDG_H 23 | #define __STM32F10x_IWDG_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* Exported constants --------------------------------------------------------*/ 30 | /* Write access to IWDG_PR and IWDG_RLR registers */ 31 | #define IWDG_WriteAccess_Enable ((u16)0x5555) 32 | #define IWDG_WriteAccess_Disable ((u16)0x0000) 33 | 34 | #define IS_IWDG_WRITE_ACCESS(ACCESS) ((ACCESS == IWDG_WriteAccess_Enable) || \ 35 | (ACCESS == IWDG_WriteAccess_Disable)) 36 | 37 | /* IWDG prescaler */ 38 | #define IWDG_Prescaler_4 ((u8)0x00) 39 | #define IWDG_Prescaler_8 ((u8)0x01) 40 | #define IWDG_Prescaler_16 ((u8)0x02) 41 | #define IWDG_Prescaler_32 ((u8)0x03) 42 | #define IWDG_Prescaler_64 ((u8)0x04) 43 | #define IWDG_Prescaler_128 ((u8)0x05) 44 | #define IWDG_Prescaler_256 ((u8)0x06) 45 | 46 | #define IS_IWDG_PRESCALER(PRESCALER) ((PRESCALER == IWDG_Prescaler_4) || \ 47 | (PRESCALER == IWDG_Prescaler_8) || \ 48 | (PRESCALER == IWDG_Prescaler_16) || \ 49 | (PRESCALER == IWDG_Prescaler_32) || \ 50 | (PRESCALER == IWDG_Prescaler_64) || \ 51 | (PRESCALER == IWDG_Prescaler_128)|| \ 52 | (PRESCALER == IWDG_Prescaler_256)) 53 | 54 | /* IWDG Flag */ 55 | #define IWDG_FLAG_PVU ((u16)0x0001) 56 | #define IWDG_FLAG_RVU ((u16)0x0002) 57 | 58 | #define IS_IWDG_FLAG(FLAG) ((FLAG == IWDG_FLAG_PVU) || (FLAG == IWDG_FLAG_RVU)) 59 | 60 | #define IS_IWDG_RELOAD(RELOAD) (RELOAD <= 0xFFF) 61 | 62 | /* Exported macro ------------------------------------------------------------*/ 63 | /* Exported functions ------------------------------------------------------- */ 64 | void IWDG_WriteAccessCmd(u16 IWDG_WriteAccess); 65 | void IWDG_SetPrescaler(u8 IWDG_Prescaler); 66 | void IWDG_SetReload(u16 Reload); 67 | void IWDG_ReloadCounter(void); 68 | void IWDG_Enable(void); 69 | FlagStatus IWDG_GetFlagStatus(u16 IWDG_FLAG); 70 | 71 | #endif /* __STM32F10x_IWDG_H */ 72 | 73 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 74 | -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/stm32f10x_lib.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_lib.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file includes the peripherals header files in the 6 | * user application. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_LIB_H 23 | #define __STM32F10x_LIB_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | #ifdef _ADC 29 | #include "stm32f10x_adc.h" 30 | #endif /*_ADC */ 31 | 32 | #ifdef _BKP 33 | #include "stm32f10x_bkp.h" 34 | #endif /*_BKP */ 35 | 36 | #ifdef _CAN 37 | #include "stm32f10x_can.h" 38 | #endif /*_CAN */ 39 | 40 | #ifdef _DMA 41 | #include "stm32f10x_dma.h" 42 | #endif /*_DMA */ 43 | 44 | #ifdef _EXTI 45 | #include "stm32f10x_exti.h" 46 | #endif /*_EXTI */ 47 | 48 | #ifdef _FLASH 49 | #include "stm32f10x_flash.h" 50 | #endif /*_FLASH */ 51 | 52 | #ifdef _GPIO 53 | #include "stm32f10x_gpio.h" 54 | #endif /*_GPIO */ 55 | 56 | #ifdef _I2C 57 | #include "stm32f10x_i2c.h" 58 | #endif /*_I2C */ 59 | 60 | #ifdef _IWDG 61 | #include "stm32f10x_iwdg.h" 62 | #endif /*_IWDG */ 63 | 64 | #ifdef _NVIC 65 | #include "stm32f10x_nvic.h" 66 | #endif /*_NVIC */ 67 | 68 | #ifdef _PWR 69 | #include "stm32f10x_pwr.h" 70 | #endif /*_PWR */ 71 | 72 | #ifdef _RCC 73 | #include "stm32f10x_rcc.h" 74 | #endif /*_RCC */ 75 | 76 | #ifdef _RTC 77 | #include "stm32f10x_rtc.h" 78 | #endif /*_RTC */ 79 | 80 | #ifdef _SPI 81 | #include "stm32f10x_spi.h" 82 | #endif /*_SPI */ 83 | 84 | #ifdef _SysTick 85 | #include "stm32f10x_systick.h" 86 | #endif /*_SysTick */ 87 | 88 | #ifdef _TIM1 89 | #include "stm32f10x_tim1.h" 90 | #endif /*_TIM1 */ 91 | 92 | #ifdef _TIM 93 | #include "stm32f10x_tim.h" 94 | #endif /*_TIM */ 95 | 96 | #ifdef _USART 97 | #include "stm32f10x_usart.h" 98 | #endif /*_USART */ 99 | 100 | #ifdef _WWDG 101 | #include "stm32f10x_wwdg.h" 102 | #endif /*_WWDG */ 103 | 104 | /* Exported types ------------------------------------------------------------*/ 105 | /* Exported constants --------------------------------------------------------*/ 106 | /* Exported macro ------------------------------------------------------------*/ 107 | /* Exported functions ------------------------------------------------------- */ 108 | void debug(void); 109 | 110 | #endif /* __STM32F10x_LIB_H */ 111 | 112 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 113 | -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/stm32f10x_pwr.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_pwr.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * PWR firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_PWR_H 23 | #define __STM32F10x_PWR_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* Exported constants --------------------------------------------------------*/ 30 | /* PVD detection level */ 31 | #define PWR_PVDLevel_2V2 ((u32)0x00000000) 32 | #define PWR_PVDLevel_2V3 ((u32)0x00000020) 33 | #define PWR_PVDLevel_2V4 ((u32)0x00000040) 34 | #define PWR_PVDLevel_2V5 ((u32)0x00000060) 35 | #define PWR_PVDLevel_2V6 ((u32)0x00000080) 36 | #define PWR_PVDLevel_2V7 ((u32)0x000000A0) 37 | #define PWR_PVDLevel_2V8 ((u32)0x000000C0) 38 | #define PWR_PVDLevel_2V9 ((u32)0x000000E0) 39 | 40 | #define IS_PWR_PVD_LEVEL(LEVEL) ((LEVEL == PWR_PVDLevel_2V2) || (LEVEL == PWR_PVDLevel_2V3)|| \ 41 | (LEVEL == PWR_PVDLevel_2V4) || (LEVEL == PWR_PVDLevel_2V5)|| \ 42 | (LEVEL == PWR_PVDLevel_2V6) || (LEVEL == PWR_PVDLevel_2V7)|| \ 43 | (LEVEL == PWR_PVDLevel_2V8) || (LEVEL == PWR_PVDLevel_2V9)) 44 | 45 | /* Regulator state is STOP mode */ 46 | #define PWR_Regulator_ON ((u32)0x00000000) 47 | #define PWR_Regulator_LowPower ((u32)0x00000001) 48 | 49 | #define IS_PWR_REGULATOR(REGULATOR) ((REGULATOR == PWR_Regulator_ON) || \ 50 | (REGULATOR == PWR_Regulator_LowPower)) 51 | 52 | /* STOP mode entry */ 53 | #define PWR_STOPEntry_WFI ((u8)0x01) 54 | #define PWR_STOPEntry_WFE ((u8)0x02) 55 | 56 | #define IS_PWR_STOP_ENTRY(ENTRY) ((ENTRY == PWR_STOPEntry_WFI) || (ENTRY == PWR_STOPEntry_WFE)) 57 | 58 | /* PWR Flag */ 59 | #define PWR_FLAG_WU ((u32)0x00000001) 60 | #define PWR_FLAG_SB ((u32)0x00000002) 61 | #define PWR_FLAG_PVDO ((u32)0x00000004) 62 | 63 | #define IS_PWR_GET_FLAG(FLAG) ((FLAG == PWR_FLAG_WU) || (FLAG == PWR_FLAG_SB) || \ 64 | (FLAG == PWR_FLAG_PVDO)) 65 | #define IS_PWR_CLEAR_FLAG(FLAG) ((FLAG == PWR_FLAG_WU) || (FLAG == PWR_FLAG_SB)) 66 | 67 | /* Exported macro ------------------------------------------------------------*/ 68 | /* Exported functions ------------------------------------------------------- */ 69 | void PWR_DeInit(void); 70 | void PWR_BackupAccessCmd(FunctionalState NewState); 71 | void PWR_PVDCmd(FunctionalState NewState); 72 | void PWR_PVDLevelConfig(u32 PWR_PVDLevel); 73 | void PWR_WakeUpPinCmd(FunctionalState NewState); 74 | void PWR_EnterSTOPMode(u32 PWR_Regulator, u8 PWR_STOPEntry); 75 | void PWR_EnterSTANDBYMode(void); 76 | FlagStatus PWR_GetFlagStatus(u32 PWR_FLAG); 77 | void PWR_ClearFlag(u32 PWR_FLAG); 78 | 79 | #endif /* __STM32F10x_PWR_H */ 80 | 81 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 82 | -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/stm32f10x_rtc.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_rtc.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * RTC firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_RTC_H 23 | #define __STM32F10x_RTC_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* Exported constants --------------------------------------------------------*/ 30 | /* RTC interrupts define -----------------------------------------------------*/ 31 | #define RTC_IT_OW ((u16)0x0004) /* Overflow interrupt */ 32 | #define RTC_IT_ALR ((u16)0x0002) /* Alarm interrupt */ 33 | #define RTC_IT_SEC ((u16)0x0001) /* Second interrupt */ 34 | 35 | #define IS_RTC_IT(IT) (((IT & (u16)0xFFF8) == 0x00) && (IT != 0x00)) 36 | 37 | #define IS_RTC_GET_IT(IT) ((IT == RTC_IT_OW) || (IT == RTC_IT_ALR) || \ 38 | (IT == RTC_IT_SEC)) 39 | 40 | /* RTC interrupts flags ------------------------------------------------------*/ 41 | #define RTC_FLAG_RTOFF ((u16)0x0020) /* RTC Operation OFF flag */ 42 | #define RTC_FLAG_RSF ((u16)0x0008) /* Registers Synchronized flag */ 43 | #define RTC_FLAG_OW ((u16)0x0004) /* Overflow flag */ 44 | #define RTC_FLAG_ALR ((u16)0x0002) /* Alarm flag */ 45 | #define RTC_FLAG_SEC ((u16)0x0001) /* Second flag */ 46 | 47 | #define IS_RTC_CLEAR_FLAG(FLAG) (((FLAG & (u16)0xFFF0) == 0x00) && (FLAG != 0x00)) 48 | 49 | #define IS_RTC_GET_FLAG(FLAG) ((FLAG == RTC_FLAG_RTOFF) || (FLAG == RTC_FLAG_RSF) || \ 50 | (FLAG == RTC_FLAG_OW) || (FLAG == RTC_FLAG_ALR) || \ 51 | (FLAG == RTC_FLAG_SEC)) 52 | 53 | #define IS_RTC_PRESCALER(PRESCALER) (PRESCALER <= 0xFFFFF) 54 | 55 | /* Exported macro ------------------------------------------------------------*/ 56 | /* Exported functions ------------------------------------------------------- */ 57 | void RTC_ITConfig(u16 RTC_IT, FunctionalState NewState); 58 | void RTC_EnterConfigMode(void); 59 | void RTC_ExitConfigMode(void); 60 | u32 RTC_GetCounter(void); 61 | void RTC_SetCounter(u32 CounterValue); 62 | u32 RTC_GetPrescaler(void); 63 | void RTC_SetPrescaler(u32 PrescalerValue); 64 | void RTC_SetAlarm(u32 AlarmValue); 65 | u32 RTC_GetDivider(void); 66 | void RTC_WaitForLastTask(void); 67 | void RTC_WaitForSynchro(void); 68 | FlagStatus RTC_GetFlagStatus(u16 RTC_FLAG); 69 | void RTC_ClearFlag(u16 RTC_FLAG); 70 | ITStatus RTC_GetITStatus(u16 RTC_IT); 71 | void RTC_ClearITPendingBit(u16 RTC_IT); 72 | 73 | #endif /* __STM32F10x_RTC_H */ 74 | 75 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 76 | -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/stm32f10x_spi.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_spi.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * SPI firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_SPI_H 23 | #define __STM32F10x_SPI_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* SPI Init structure definition */ 30 | typedef struct 31 | { 32 | u16 SPI_Direction; 33 | u16 SPI_Mode; 34 | u16 SPI_DataSize; 35 | u16 SPI_CPOL; 36 | u16 SPI_CPHA; 37 | u16 SPI_NSS; 38 | u16 SPI_BaudRatePrescaler; 39 | u16 SPI_FirstBit; 40 | u16 SPI_CRCPolynomial; 41 | }SPI_InitTypeDef; 42 | 43 | /* Exported constants --------------------------------------------------------*/ 44 | /* SPI data direction mode */ 45 | #define SPI_Direction_2Lines_FullDuplex ((u16)0x0000) 46 | #define SPI_Direction_2Lines_RxOnly ((u16)0x0400) 47 | #define SPI_Direction_1Line_Rx ((u16)0x8000) 48 | #define SPI_Direction_1Line_Tx ((u16)0xC000) 49 | 50 | #define IS_SPI_DIRECTION_MODE(MODE) ((MODE == SPI_Direction_2Lines_FullDuplex) || \ 51 | (MODE == SPI_Direction_2Lines_RxOnly) || \ 52 | (MODE == SPI_Direction_1Line_Rx) || \ 53 | (MODE == SPI_Direction_1Line_Tx)) 54 | 55 | /* SPI master/slave mode */ 56 | #define SPI_Mode_Master ((u16)0x0104) 57 | #define SPI_Mode_Slave ((u16)0x0000) 58 | 59 | #define IS_SPI_MODE(MODE) ((MODE == SPI_Mode_Master) || \ 60 | (MODE == SPI_Mode_Slave)) 61 | 62 | /* SPI data size */ 63 | #define SPI_DataSize_16b ((u16)0x0800) 64 | #define SPI_DataSize_8b ((u16)0x0000) 65 | 66 | #define IS_SPI_DATASIZE(DATASIZE) ((DATASIZE == SPI_DataSize_16b) || \ 67 | (DATASIZE == SPI_DataSize_8b)) 68 | 69 | /* SPI Clock Polarity */ 70 | #define SPI_CPOL_Low ((u16)0x0000) 71 | #define SPI_CPOL_High ((u16)0x0002) 72 | 73 | #define IS_SPI_CPOL(CPOL) ((CPOL == SPI_CPOL_Low) || \ 74 | (CPOL == SPI_CPOL_High)) 75 | 76 | /* SPI Clock Phase */ 77 | #define SPI_CPHA_1Edge ((u16)0x0000) 78 | #define SPI_CPHA_2Edge ((u16)0x0001) 79 | 80 | #define IS_SPI_CPHA(CPHA) ((CPHA == SPI_CPHA_1Edge) || \ 81 | (CPHA == SPI_CPHA_2Edge)) 82 | 83 | /* SPI Slave Select management */ 84 | #define SPI_NSS_Soft ((u16)0x0200) 85 | #define SPI_NSS_Hard ((u16)0x0000) 86 | 87 | #define IS_SPI_NSS(NSS) ((NSS == SPI_NSS_Soft) || \ 88 | (NSS == SPI_NSS_Hard)) 89 | 90 | /* SPI BaudRate Prescaler */ 91 | #define SPI_BaudRatePrescaler_2 ((u16)0x0000) 92 | #define SPI_BaudRatePrescaler_4 ((u16)0x0008) 93 | #define SPI_BaudRatePrescaler_8 ((u16)0x0010) 94 | #define SPI_BaudRatePrescaler_16 ((u16)0x0018) 95 | #define SPI_BaudRatePrescaler_32 ((u16)0x0020) 96 | #define SPI_BaudRatePrescaler_64 ((u16)0x0028) 97 | #define SPI_BaudRatePrescaler_128 ((u16)0x0030) 98 | #define SPI_BaudRatePrescaler_256 ((u16)0x0038) 99 | 100 | #define IS_SPI_BAUDRATE_PRESCALER(PRESCALER) ((PRESCALER == SPI_BaudRatePrescaler_2) || \ 101 | (PRESCALER == SPI_BaudRatePrescaler_4) || \ 102 | (PRESCALER == SPI_BaudRatePrescaler_8) || \ 103 | (PRESCALER == SPI_BaudRatePrescaler_16) || \ 104 | (PRESCALER == SPI_BaudRatePrescaler_32) || \ 105 | (PRESCALER == SPI_BaudRatePrescaler_64) || \ 106 | (PRESCALER == SPI_BaudRatePrescaler_128) || \ 107 | (PRESCALER == SPI_BaudRatePrescaler_256)) 108 | 109 | /* SPI MSB/LSB transmission */ 110 | #define SPI_FirstBit_MSB ((u16)0x0000) 111 | #define SPI_FirstBit_LSB ((u16)0x0080) 112 | 113 | #define IS_SPI_FIRST_BIT(BIT) ((BIT == SPI_FirstBit_MSB) || \ 114 | (BIT == SPI_FirstBit_LSB)) 115 | 116 | /* SPI DMA transfer requests */ 117 | #define SPI_DMAReq_Tx ((u16)0x0002) 118 | #define SPI_DMAReq_Rx ((u16)0x0001) 119 | 120 | #define IS_SPI_DMA_REQ(REQ) (((REQ & (u16)0xFFFC) == 0x00) && (REQ != 0x00)) 121 | 122 | /* SPI NSS internal software mangement */ 123 | #define SPI_NSSInternalSoft_Set ((u16)0x0100) 124 | #define SPI_NSSInternalSoft_Reset ((u16)0xFEFF) 125 | 126 | #define IS_SPI_NSS_INTERNAL(INTERNAL) ((INTERNAL == SPI_NSSInternalSoft_Set) || \ 127 | (INTERNAL == SPI_NSSInternalSoft_Reset)) 128 | 129 | /* SPI CRC Transmit/Receive */ 130 | #define SPI_CRC_Tx ((u8)0x00) 131 | #define SPI_CRC_Rx ((u8)0x01) 132 | 133 | #define IS_SPI_CRC(CRC) ((CRC == SPI_CRC_Tx) || (CRC == SPI_CRC_Rx)) 134 | 135 | /* SPI direction transmit/receive */ 136 | #define SPI_Direction_Rx ((u16)0xBFFF) 137 | #define SPI_Direction_Tx ((u16)0x4000) 138 | 139 | #define IS_SPI_DIRECTION(DIRECTION) ((DIRECTION == SPI_Direction_Rx) || \ 140 | (DIRECTION == SPI_Direction_Tx)) 141 | 142 | /* SPI interrupts definition */ 143 | #define SPI_IT_TXE ((u8)0x71) 144 | #define SPI_IT_RXNE ((u8)0x60) 145 | #define SPI_IT_ERR ((u8)0x50) 146 | 147 | #define IS_SPI_CONFIG_IT(IT) ((IT == SPI_IT_TXE) || (IT == SPI_IT_RXNE) || \ 148 | (IT == SPI_IT_ERR)) 149 | 150 | #define SPI_IT_OVR ((u8)0x56) 151 | #define SPI_IT_MODF ((u8)0x55) 152 | #define SPI_IT_CRCERR ((u8)0x54) 153 | 154 | #define IS_SPI_CLEAR_IT(IT) ((IT == SPI_IT_OVR) || (IT == SPI_IT_MODF) || \ 155 | (IT == SPI_IT_CRCERR)) 156 | 157 | #define IS_SPI_GET_IT(IT) ((IT == SPI_IT_TXE) || (IT == SPI_IT_RXNE) || \ 158 | (IT == SPI_IT_OVR) || (IT == SPI_IT_MODF) || \ 159 | (IT == SPI_IT_CRCERR)) 160 | 161 | /* SPI flags definition */ 162 | #define SPI_FLAG_RXNE ((u16)0x0001) 163 | #define SPI_FLAG_TXE ((u16)0x0002) 164 | #define SPI_FLAG_CRCERR ((u16)0x0010) 165 | #define SPI_FLAG_MODF ((u16)0x0020) 166 | #define SPI_FLAG_OVR ((u16)0x0040) 167 | #define SPI_FLAG_BSY ((u16)0x0080) 168 | 169 | #define IS_SPI_CLEAR_FLAG(FLAG) (((FLAG & (u16)0xFF8F) == 0x00) && (FLAG != 0x00)) 170 | #define IS_SPI_GET_FLAG(FLAG) ((FLAG == SPI_FLAG_BSY) || (FLAG == SPI_FLAG_OVR) || \ 171 | (FLAG == SPI_FLAG_MODF) || (FLAG == SPI_FLAG_CRCERR) || \ 172 | (FLAG == SPI_FLAG_TXE) || (FLAG == SPI_FLAG_RXNE)) 173 | 174 | /* SPI CRC polynomial --------------------------------------------------------*/ 175 | #define IS_SPI_CRC_POLYNOMIAL(POLYNOMIAL) (POLYNOMIAL >= 0x1) 176 | 177 | /* Exported macro ------------------------------------------------------------*/ 178 | /* Exported functions ------------------------------------------------------- */ 179 | void SPI_DeInit(SPI_TypeDef* SPIx); 180 | void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct); 181 | void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct); 182 | void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState); 183 | void SPI_ITConfig(SPI_TypeDef* SPIx, u8 SPI_IT, FunctionalState NewState); 184 | void SPI_DMACmd(SPI_TypeDef* SPIx, u16 SPI_DMAReq, FunctionalState NewState); 185 | void SPI_SendData(SPI_TypeDef* SPIx, u16 Data); 186 | u16 SPI_ReceiveData(SPI_TypeDef* SPIx); 187 | void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, u16 SPI_NSSInternalSoft); 188 | void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState); 189 | void SPI_DataSizeConfig(SPI_TypeDef* SPIx, u16 SPI_DataSize); 190 | void SPI_TransmitCRC(SPI_TypeDef* SPIx); 191 | void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState); 192 | u16 SPI_GetCRC(SPI_TypeDef* SPIx, u8 SPI_CRC); 193 | u16 SPI_GetCRCPolynomial(SPI_TypeDef* SPIx); 194 | void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, u16 SPI_Direction); 195 | FlagStatus SPI_GetFlagStatus(SPI_TypeDef* SPIx, u16 SPI_FLAG); 196 | void SPI_ClearFlag(SPI_TypeDef* SPIx, u16 SPI_FLAG); 197 | ITStatus SPI_GetITStatus(SPI_TypeDef* SPIx, u8 SPI_IT); 198 | void SPI_ClearITPendingBit(SPI_TypeDef* SPIx, u8 SPI_IT); 199 | 200 | #endif /*__STM32F10x_SPI_H */ 201 | 202 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 203 | -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/stm32f10x_systick.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_systick.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * SysTick firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_SYSTICK_H 23 | #define __STM32F10x_SYSTICK_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* Exported constants --------------------------------------------------------*/ 30 | /* SysTick clock source */ 31 | #define SysTick_CLKSource_HCLK_Div8 ((u32)0xFFFFFFFB) 32 | #define SysTick_CLKSource_HCLK ((u32)0x00000004) 33 | 34 | #define IS_SYSTICK_CLK_SOURCE(SOURCE) ((SOURCE == SysTick_CLKSource_HCLK) || \ 35 | (SOURCE == SysTick_CLKSource_HCLK_Div8)) 36 | 37 | /* SysTick counter state */ 38 | #define SysTick_Counter_Disable ((u32)0xFFFFFFFE) 39 | #define SysTick_Counter_Enable ((u32)0x00000001) 40 | #define SysTick_Counter_Clear ((u32)0x00000000) 41 | 42 | #define IS_SYSTICK_COUNTER(COUNTER) ((COUNTER == SysTick_Counter_Disable) || \ 43 | (COUNTER == SysTick_Counter_Enable) || \ 44 | (COUNTER == SysTick_Counter_Clear)) 45 | 46 | /* SysTick Flag */ 47 | #define SysTick_FLAG_COUNT ((u8)0x30) 48 | #define SysTick_FLAG_SKEW ((u8)0x5E) 49 | #define SysTick_FLAG_NOREF ((u8)0x5F) 50 | 51 | #define IS_SYSTICK_FLAG(FLAG) ((FLAG == SysTick_FLAG_COUNT) || \ 52 | (FLAG == SysTick_FLAG_SKEW) || \ 53 | (FLAG == SysTick_FLAG_NOREF)) 54 | 55 | #define IS_SYSTICK_RELOAD(RELOAD) ((RELOAD > 0) || (RELOAD <= 0xFFFFFF)) 56 | 57 | /* Exported macro ------------------------------------------------------------*/ 58 | /* Exported functions ------------------------------------------------------- */ 59 | void SysTick_CLKSourceConfig(u32 SysTick_CLKSource); 60 | void SysTick_SetReload(u32 Reload); 61 | void SysTick_CounterCmd(u32 SysTick_Counter); 62 | void SysTick_ITConfig(FunctionalState NewState); 63 | u32 SysTick_GetCounter(void); 64 | FlagStatus SysTick_GetFlagStatus(u8 SysTick_FLAG); 65 | 66 | #endif /* __STM32F10x_SYSTICK_H */ 67 | 68 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 69 | -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/stm32f10x_type.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : stm32f10x_type.h 3 | * Author : MCD Application Team 4 | * Version : V2.0.1 5 | * Date : 06/13/2008 6 | * Description : This file contains all the common data types used for the 7 | * STM32F10x firmware library. 8 | ******************************************************************************** 9 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 10 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 11 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 12 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 13 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 14 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 15 | *******************************************************************************/ 16 | 17 | /* Define to prevent recursive inclusion -------------------------------------*/ 18 | #ifndef __STM32F10x_TYPE_H 19 | #define __STM32F10x_TYPE_H 20 | 21 | /* Includes ------------------------------------------------------------------*/ 22 | /* Exported types ------------------------------------------------------------*/ 23 | typedef signed long s32; 24 | typedef signed short s16; 25 | typedef signed char s8; 26 | 27 | typedef signed long const sc32; /* Read Only */ 28 | typedef signed short const sc16; /* Read Only */ 29 | typedef signed char const sc8; /* Read Only */ 30 | 31 | typedef volatile signed long vs32; 32 | typedef volatile signed short vs16; 33 | typedef volatile signed char vs8; 34 | 35 | typedef volatile signed long const vsc32; /* Read Only */ 36 | typedef volatile signed short const vsc16; /* Read Only */ 37 | typedef volatile signed char const vsc8; /* Read Only */ 38 | 39 | typedef unsigned long u32; 40 | typedef unsigned short u16; 41 | typedef unsigned char u8; 42 | 43 | typedef unsigned long const uc32; /* Read Only */ 44 | typedef unsigned short const uc16; /* Read Only */ 45 | typedef unsigned char const uc8; /* Read Only */ 46 | 47 | typedef volatile unsigned long vu32; 48 | typedef volatile unsigned short vu16; 49 | typedef volatile unsigned char vu8; 50 | 51 | typedef volatile unsigned long const vuc32; /* Read Only */ 52 | typedef volatile unsigned short const vuc16; /* Read Only */ 53 | typedef volatile unsigned char const vuc8; /* Read Only */ 54 | 55 | typedef enum {FALSE = 0, TRUE = !FALSE} bool; 56 | 57 | typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; 58 | 59 | typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; 60 | #define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) 61 | 62 | typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; 63 | 64 | #define U8_MAX ((u8)255) 65 | #define S8_MAX ((s8)127) 66 | #define S8_MIN ((s8)-128) 67 | #define U16_MAX ((u16)65535u) 68 | #define S16_MAX ((s16)32767) 69 | #define S16_MIN ((s16)-32768) 70 | #define U32_MAX ((u32)4294967295uL) 71 | #define S32_MAX ((s32)2147483647) 72 | #define S32_MIN ((s32)-2147483648) 73 | 74 | /* Exported constants --------------------------------------------------------*/ 75 | /* Exported macro ------------------------------------------------------------*/ 76 | /* Exported functions ------------------------------------------------------- */ 77 | 78 | #endif /* __STM32F10x_TYPE_H */ 79 | 80 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 81 | -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/stm32f10x_wwdg.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_wwdg.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * WWDG firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_WWDG_H 23 | #define __STM32F10x_WWDG_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* Exported constants --------------------------------------------------------*/ 30 | /* WWDG Prescaler */ 31 | #define WWDG_Prescaler_1 ((u32)0x00000000) 32 | #define WWDG_Prescaler_2 ((u32)0x00000080) 33 | #define WWDG_Prescaler_4 ((u32)0x00000100) 34 | #define WWDG_Prescaler_8 ((u32)0x00000180) 35 | 36 | #define IS_WWDG_PRESCALER(PRESCALER) ((PRESCALER == WWDG_Prescaler_1) || \ 37 | (PRESCALER == WWDG_Prescaler_2) || \ 38 | (PRESCALER == WWDG_Prescaler_4) || \ 39 | (PRESCALER == WWDG_Prescaler_8)) 40 | 41 | #define IS_WWDG_WINDOW_VALUE(VALUE) (VALUE <= 0x7F) 42 | 43 | #define IS_WWDG_COUNTER(COUNTER) ((COUNTER >= 0x40) && (COUNTER <= 0x7F)) 44 | 45 | /* Exported macro ------------------------------------------------------------*/ 46 | /* Exported functions ------------------------------------------------------- */ 47 | void WWDG_DeInit(void); 48 | void WWDG_SetPrescaler(u32 WWDG_Prescaler); 49 | void WWDG_SetWindowValue(u8 WindowValue); 50 | void WWDG_EnableIT(void); 51 | void WWDG_SetCounter(u8 Counter); 52 | void WWDG_Enable(u8 Counter); 53 | FlagStatus WWDG_GetFlagStatus(void); 54 | void WWDG_ClearFlag(void); 55 | 56 | #endif /* __STM32F10x_WWDG_H */ 57 | 58 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 59 | -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/sys.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/DiscreteFile/SYSTEM/sys/sys.c -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/sys/sys.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/DiscreteFile/SYSTEM/sys/sys.h -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/usart/usart.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/DiscreteFile/SYSTEM/usart/usart.c -------------------------------------------------------------------------------- /DiscreteFile/SYSTEM/usart/usart.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/DiscreteFile/SYSTEM/usart/usart.h -------------------------------------------------------------------------------- /DiscreteFile/USB/USB_CH341.H: -------------------------------------------------------------------------------- 1 | //write by blackmiaool email:blackmiaool@gmail.com 2014.6.20 2 | #ifndef _USB_CH341_H_ 3 | #define _USB_CH341_H_ 4 | #include "stm32f10x_lib.h" 5 | 6 | 7 | //migration part 8 | #define USB_DISCONNECT GPIOD 9 | #define USB_DISCONNECT_PIN GPIO_Pin_0 10 | #define RCC_APB2Periph_GPIO_DISCONNECT RCC_APB2Periph_GPIOD 11 | 12 | //migration end 13 | 14 | 15 | extern u16 ch341_baud; 16 | void USB_CH341_Init(void); 17 | void USB_Cable_Config (FunctionalState NewState); 18 | void USB_To_USART_Send_Data(u8* data_buffer, u8 Nb_bytes); 19 | void USART_To_USB_Send_Data(void); 20 | void USB_send(u8 *buf,u8 lenth); 21 | void USB_receive(const u8 *buf,u8 lenth); 22 | 23 | #define change_byte(a) do{u8 lb=a;a=(lb<<8)+(a>>8);}while(0) 24 | 25 | 26 | #endif//_USB_CH341_H_ 27 | 28 | -------------------------------------------------------------------------------- /DiscreteFile/USB/USB_CH341.c: -------------------------------------------------------------------------------- 1 | #include "stm32f10x_it.h" 2 | #include "usb_lib.h" 3 | #include "usb_prop.h" 4 | #include "usb_desc.h" 5 | #include "hw_config.h" 6 | #include "platform_config.h" 7 | #include "usb_pwr.h" 8 | #include "usb_ch341.h" 9 | #include "usb_init.h" 10 | #include "delay.h" 11 | USART_InitTypeDef USART_InitStructure; 12 | u16 ch341_baud; 13 | 14 | u8 buffer_in[VIRTUAL_COM_PORT_DATA_SIZE]; 15 | extern u32 count_in; 16 | void USB_CH341_Init() 17 | { 18 | Set_USBClock(); 19 | USB_Interrupts_Config(); 20 | USB_Init(); 21 | delay_ms(1000); 22 | delay_ms(1000); 23 | } 24 | 25 | void USB_Cable_Config(FunctionalState NewState) 26 | { 27 | if (NewState != DISABLE) 28 | { 29 | GPIO_SetBits(USB_DISCONNECT, USB_DISCONNECT_PIN); 30 | } 31 | else 32 | { 33 | GPIO_ResetBits(USB_DISCONNECT, USB_DISCONNECT_PIN); 34 | } 35 | } 36 | 37 | void USB_send(u8 *buf,u8 lenth) 38 | { 39 | UserToPMABufferCopy(buf, ENDP2_TXADDR, lenth); 40 | SetEPTxCount(ENDP2, lenth); 41 | SetEPTxValid(ENDP2); 42 | while(GetEPTxStatus(2)!=32); 43 | } 44 | void USB_receive(const u8 *buf,u8 lenth) 45 | { 46 | //add your own code and remove this 47 | USB_send((u8 *)buf,lenth); 48 | } 49 | 50 | 51 | -------------------------------------------------------------------------------- /DiscreteFile/USB/hw_config.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : hw_config.h 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Hardware Configuration & Setup 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __HW_CONFIG_H 18 | #define __HW_CONFIG_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | #include "usb_type.h" 22 | 23 | /* Exported types ------------------------------------------------------------*/ 24 | /* Exported constants --------------------------------------------------------*/ 25 | /* Exported macro ------------------------------------------------------------*/ 26 | /* Exported define -----------------------------------------------------------*/ 27 | #define MASS_MEMORY_START 0x04002000 28 | #define BULK_MAX_PACKET_SIZE 0x00000040 29 | #define LED_ON 0xF0 30 | #define LED_OFF 0xFF 31 | 32 | /* Exported functions ------------------------------------------------------- */ 33 | 34 | 35 | /* External variables --------------------------------------------------------*/ 36 | 37 | #endif /*__HW_CONFIG_H*/ 38 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 39 | -------------------------------------------------------------------------------- /DiscreteFile/USB/platform_config.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : platform_config.h 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Evaluation board specific configuration file. 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __PLATFORM_CONFIG_H 18 | #define __PLATFORM_CONFIG_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | #include "stm32f10x_type.h" 22 | 23 | /* Exported types ------------------------------------------------------------*/ 24 | /* Exported constants --------------------------------------------------------*/ 25 | /* Uncomment the line corresponding to the STMicroelectronics evaluation board 26 | used to run the example */ 27 | #if !defined (USE_STM3210B_EVAL) && !defined (USE_STM3210E_EVAL) 28 | //#define USE_STM3210B_EVAL 29 | #define USE_STM3210E_EVAL 30 | #endif 31 | 32 | /* Define the STM32F10x hardware depending on the used evaluation board */ 33 | 34 | 35 | /* Exported macro ------------------------------------------------------------*/ 36 | /* Exported functions ------------------------------------------------------- */ 37 | 38 | #endif /* __PLATFORM_CONFIG_H */ 39 | 40 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 41 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_conf.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_conf.h 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Virtual COM Port Demo configuration header 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __USB_CONF_H 18 | #define __USB_CONF_H 19 | #include "stm32f10x_type.h" 20 | /*-------------------------------------------------------------*/ 21 | /* EP_NUM */ 22 | /* defines how many endpoints are used by the device */ 23 | /*-------------------------------------------------------------*/ 24 | 25 | #define EP_NUM (4) 26 | 27 | /*-------------------------------------------------------------*/ 28 | /* -------------- Buffer Description Table -----------------*/ 29 | /*-------------------------------------------------------------*/ 30 | /* buffer table base address */ 31 | /* buffer table base address */ 32 | #define BTABLE_ADDRESS (0x00) 33 | 34 | /* EP0 */ 35 | /* rx/tx buffer base address */ 36 | #define ENDP0_RXADDR (0x40) 37 | #define ENDP0_TXADDR (0x80) 38 | 39 | /* EP1 */ 40 | /* tx buffer base address */ 41 | #define ENDP1_RXADDR (0xc0) 42 | #define ENDP2_TXADDR (ENDP1_RXADDR+0x40) 43 | #define ENDP2_RXADDR (ENDP2_TXADDR+0X40) 44 | 45 | 46 | /*-------------------------------------------------------------*/ 47 | /* ------------------- ISTR events -------------------------*/ 48 | /*-------------------------------------------------------------*/ 49 | /* IMR_MSK */ 50 | /* mask defining which events has to be handled */ 51 | /* by the device application software */ 52 | #define IMR_MSK (CNTR_CTRM | CNTR_SOFM | CNTR_RESETM ) 53 | 54 | /*#define CTR_CALLBACK*/ 55 | /*#define DOVR_CALLBACK*/ 56 | /*#define ERR_CALLBACK*/ 57 | /*#define WKUP_CALLBACK*/ 58 | /*#define SUSP_CALLBACK*/ 59 | /*#define RESET_CALLBACK*/ 60 | /*#define SOF_CALLBACK*/ 61 | /*#define ESOF_CALLBACK*/ 62 | 63 | /* CTR service routines */ 64 | /* associated to defined endpoints */ 65 | /*#define EP1_IN_Callback NOP_Process*/ 66 | //#define EP2_IN_Callback NOP_Process 67 | #define EP3_IN_Callback NOP_Process 68 | #define EP4_IN_Callback NOP_Process 69 | #define EP5_IN_Callback NOP_Process 70 | #define EP6_IN_Callback NOP_Process 71 | #define EP7_IN_Callback NOP_Process 72 | 73 | #define EP1_OUT_Callback NOP_Process 74 | //#define EP2_OUT_Callback NOP_Process 75 | #define EP3_OUT_Callback NOP_Process 76 | #define EP4_OUT_Callback NOP_Process 77 | #define EP5_OUT_Callback NOP_Process 78 | #define EP6_OUT_Callback NOP_Process 79 | #define EP7_OUT_Callback NOP_Process 80 | 81 | #endif /* __USB_CONF_H */ 82 | 83 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 84 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_core.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_core.h 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Standard protocol processing functions prototypes 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __USB_CORE_H 18 | #define __USB_CORE_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | /* Exported types ------------------------------------------------------------*/ 22 | typedef enum _CONTROL_STATE 23 | { 24 | WAIT_SETUP, /* 0 */ 25 | SETTING_UP, /* 1 */ 26 | IN_DATA, /* 2 */ 27 | OUT_DATA, /* 3 */ 28 | LAST_IN_DATA, /* 4 */ 29 | LAST_OUT_DATA, /* 5 */ 30 | WAIT_STATUS_IN, /* 7 */ 31 | WAIT_STATUS_OUT, /* 8 */ 32 | STALLED, /* 9 */ 33 | PAUSE /* 10 */ 34 | } CONTROL_STATE; /* The state machine states of a control pipe */ 35 | 36 | typedef struct OneDescriptor 37 | { 38 | u8 *Descriptor; 39 | u16 Descriptor_Size; 40 | } 41 | ONE_DESCRIPTOR, *PONE_DESCRIPTOR; 42 | /* All the request process routines return a value of this type 43 | If the return value is not SUCCESS or NOT_READY, 44 | the software will STALL the correspond endpoint */ 45 | typedef enum _RESULT 46 | { 47 | USB_SUCCESS = 0, /* Process sucessfully */ 48 | USB_ERROR, 49 | USB_UNSUPPORT, 50 | USB_NOT_READY /* The process has not been finished, endpoint will be 51 | NAK to further rquest */ 52 | } RESULT; 53 | 54 | 55 | /*-*-*-*-*-*-*-*-*-*-* Definitions for endpoint level -*-*-*-*-*-*-*-*-*-*-*-*/ 56 | typedef struct _ENDPOINT_INFO 57 | { 58 | /* When send data out of the device, 59 | CopyData() is used to get data buffer 'Length' bytes data 60 | if Length is 0, 61 | CopyData() returns the total length of the data 62 | if the request is not supported, returns 0 63 | (NEW Feature ) 64 | if CopyData() returns -1, the calling routine should not proceed 65 | further and will resume the SETUP process by the class device 66 | if Length is not 0, 67 | CopyData() returns a pointer to indicate the data location 68 | Usb_wLength is the data remain to be sent, 69 | Usb_wOffset is the Offset of original data 70 | When receive data from the host, 71 | CopyData() is used to get user data buffer which is capable 72 | of Length bytes data to copy data from the endpoint buffer. 73 | if Length is 0, 74 | CopyData() returns the available data length, 75 | if Length is not 0, 76 | CopyData() returns user buffer address 77 | Usb_rLength is the data remain to be received, 78 | Usb_rPointer is the Offset of data buffer 79 | */ 80 | u16 Usb_wLength; 81 | u16 Usb_wOffset; 82 | u16 PacketSize; 83 | u8 *(*CopyData)(u16 Length); 84 | }ENDPOINT_INFO; 85 | 86 | /*-*-*-*-*-*-*-*-*-*-*-* Definitions for device level -*-*-*-*-*-*-*-*-*-*-*-*/ 87 | 88 | typedef struct _DEVICE 89 | { 90 | u8 Total_Endpoint; /* Number of endpoints that are used */ 91 | u8 Total_Configuration;/* Number of configuration available */ 92 | } 93 | DEVICE; 94 | 95 | typedef union 96 | { 97 | u16 w; 98 | struct BW 99 | { 100 | u8 bb1; 101 | u8 bb0; 102 | } 103 | bw; 104 | } u16_u8; 105 | 106 | typedef struct _DEVICE_INFO 107 | { 108 | u8 USBbmRequestType; /* bmRequestType */ 109 | u8 USBbRequest; /* bRequest */ 110 | u16_u8 USBwValues; /* wValue */ 111 | u16_u8 USBwIndexs; /* wIndex */ 112 | u16_u8 USBwLengths; /* wLength */ 113 | 114 | u8 ControlState; /* of type CONTROL_STATE */ 115 | u8 Current_Feature; 116 | u8 Current_Configuration; /* Selected configuration */ 117 | u8 Current_Interface; /* Selected interface of current configuration */ 118 | u8 Current_AlternateSetting;/* Selected Alternate Setting of current 119 | interface*/ 120 | 121 | ENDPOINT_INFO Ctrl_Info; 122 | }DEVICE_INFO; 123 | 124 | typedef struct _DEVICE_PROP 125 | { 126 | void (*Init)(void); /* Initialize the device */ 127 | void (*Reset)(void); /* Reset routine of this device */ 128 | 129 | /* Device dependent process after the status stage */ 130 | void (*Process_Status_IN)(void); 131 | void (*Process_Status_OUT)(void); 132 | 133 | /* Procedure of process on setup stage of a class specified request with data stage */ 134 | /* All class specified requests with data stage are processed in Class_Data_Setup 135 | Class_Data_Setup() 136 | responses to check all special requests and fills ENDPOINT_INFO 137 | according to the request 138 | If IN tokens are expected, then wLength & wOffset will be filled 139 | with the total transferring bytes and the starting position 140 | If OUT tokens are expected, then rLength & rOffset will be filled 141 | with the total expected bytes and the starting position in the buffer 142 | 143 | If the request is valid, Class_Data_Setup returns SUCCESS, else UNSUPPORT 144 | 145 | CAUTION: 146 | Since GET_CONFIGURATION & GET_INTERFACE are highly related to 147 | the individual classes, they will be checked and processed here. 148 | */ 149 | RESULT (*Class_Data_Setup)(u8 RequestNo); 150 | 151 | /* Procedure of process on setup stage of a class specified request without data stage */ 152 | /* All class specified requests without data stage are processed in Class_NoData_Setup 153 | Class_NoData_Setup 154 | responses to check all special requests and perform the request 155 | 156 | CAUTION: 157 | Since SET_CONFIGURATION & SET_INTERFACE are highly related to 158 | the individual classes, they will be checked and processed here. 159 | */ 160 | RESULT (*Class_NoData_Setup)(u8 RequestNo); 161 | 162 | /*Class_Get_Interface_Setting 163 | This function is used by the file usb_core.c to test if the selected Interface 164 | and Alternate Setting (u8 Interface, u8 AlternateSetting) are supported by 165 | the application. 166 | This function is writing by user. It should return "SUCCESS" if the Interface 167 | and Alternate Setting are supported by the application or "UNSUPPORT" if they 168 | are not supported. */ 169 | 170 | RESULT (*Class_Get_Interface_Setting)(u8 Interface, u8 AlternateSetting); 171 | 172 | u8* (*GetDeviceDescriptor)(u16 Length); 173 | u8* (*GetConfigDescriptor)(u16 Length); 174 | u8* (*GetStringDescriptor)(u16 Length); 175 | 176 | u8* RxEP_buffer; 177 | u8 MaxPacketSize; 178 | 179 | }DEVICE_PROP; 180 | 181 | typedef struct _USER_STANDARD_REQUESTS 182 | { 183 | void (*User_GetConfiguration)(void); /* Get Configuration */ 184 | void (*User_SetConfiguration)(void); /* Set Configuration */ 185 | void (*User_GetInterface)(void); /* Get Interface */ 186 | void (*User_SetInterface)(void); /* Set Interface */ 187 | void (*User_GetStatus)(void); /* Get Status */ 188 | void (*User_ClearFeature)(void); /* Clear Feature */ 189 | void (*User_SetEndPointFeature)(void); /* Set Endpoint Feature */ 190 | void (*User_SetDeviceFeature)(void); /* Set Device Feature */ 191 | void (*User_SetDeviceAddress)(void); /* Set Device Address */ 192 | } 193 | USER_STANDARD_REQUESTS; 194 | 195 | /* Exported constants --------------------------------------------------------*/ 196 | #define Type_Recipient (pInformation->USBbmRequestType & (REQUEST_TYPE | RECIPIENT)) 197 | 198 | #define Usb_rLength Usb_wLength 199 | #define Usb_rOffset Usb_wOffset 200 | 201 | #define USBwValue USBwValues.w 202 | #define USBwValue0 USBwValues.bw.bb0 203 | #define USBwValue1 USBwValues.bw.bb1 204 | #define USBwIndex USBwIndexs.w 205 | #define USBwIndex0 USBwIndexs.bw.bb0 206 | #define USBwIndex1 USBwIndexs.bw.bb1 207 | #define USBwLength USBwLengths.w 208 | #define USBwLength0 USBwLengths.bw.bb0 209 | #define USBwLength1 USBwLengths.bw.bb1 210 | 211 | /* Exported macro ------------------------------------------------------------*/ 212 | /* Exported functions ------------------------------------------------------- */ 213 | u8 Setup0_Process(void); 214 | u8 Post0_Process(void); 215 | u8 Out0_Process(void); 216 | u8 In0_Process(void); 217 | 218 | RESULT Standard_SetEndPointFeature(void); 219 | RESULT Standard_SetDeviceFeature(void); 220 | 221 | u8 *Standard_GetConfiguration(u16 Length); 222 | RESULT Standard_SetConfiguration(void); 223 | u8 *Standard_GetInterface(u16 Length); 224 | RESULT Standard_SetInterface(void); 225 | u8 *Standard_GetDescriptorData(u16 Length, PONE_DESCRIPTOR pDesc); 226 | 227 | u8 *Standard_GetStatus(u16 Length); 228 | RESULT Standard_ClearFeature(void); 229 | void SetDeviceAddress(u8); 230 | void NOP_Process(void); 231 | 232 | extern DEVICE_PROP Device_Property; 233 | extern USER_STANDARD_REQUESTS User_Standard_Requests; 234 | extern DEVICE Device_Table; 235 | extern DEVICE_INFO Device_Info; 236 | 237 | /* cells saving status during interrupt servicing */ 238 | extern u16 SaveRState; 239 | extern u16 SaveTState; 240 | 241 | #endif /* __USB_CORE_H */ 242 | 243 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 244 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_def.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_def.h 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Definitions related to USB Core 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __USB_DEF_H 18 | #define __USB_DEF_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | /* Exported types ------------------------------------------------------------*/ 22 | typedef enum _RECIPIENT_TYPE 23 | { 24 | DEVICE_RECIPIENT, /* Recipient device */ 25 | INTERFACE_RECIPIENT, /* Recipient interface */ 26 | ENDPOINT_RECIPIENT, /* Recipient endpoint */ 27 | OTHER_RECIPIENT 28 | } RECIPIENT_TYPE; 29 | 30 | 31 | typedef enum _STANDARD_REQUESTS 32 | { 33 | GET_STATUS = 0, 34 | CLEAR_FEATURE, 35 | RESERVED1, 36 | SET_FEATURE, 37 | RESERVED2, 38 | SET_ADDRESS, 39 | GET_DESCRIPTOR, 40 | SET_DESCRIPTOR, 41 | GET_CONFIGURATION, 42 | SET_CONFIGURATION, 43 | GET_INTERFACE, 44 | SET_INTERFACE, 45 | TOTAL_sREQUEST, /* Total number of Standard request */ 46 | SYNCH_FRAME = 12 47 | } STANDARD_REQUESTS; 48 | 49 | /* Definition of "USBwValue" */ 50 | typedef enum _DESCRIPTOR_TYPE 51 | { 52 | DEVICE_DESCRIPTOR = 1, 53 | CONFIG_DESCRIPTOR, 54 | STRING_DESCRIPTOR, 55 | INTERFACE_DESCRIPTOR, 56 | ENDPOINT_DESCRIPTOR 57 | } DESCRIPTOR_TYPE; 58 | 59 | /* Feature selector of a SET_FEATURE or CLEAR_FEATURE */ 60 | typedef enum _FEATURE_SELECTOR 61 | { 62 | ENDPOINT_STALL, 63 | DEVICE_REMOTE_WAKEUP 64 | } FEATURE_SELECTOR; 65 | 66 | /* Exported constants --------------------------------------------------------*/ 67 | /* Definition of "USBbmRequestType" */ 68 | #define REQUEST_TYPE 0x60 /* Mask to get request type */ 69 | #define STANDARD_REQUEST 0x00 /* Standard request */ 70 | #define CLASS_REQUEST 0x20 /* Class request */ 71 | #define VENDOR_REQUEST 0x40 /* Vendor request */ 72 | 73 | #define RECIPIENT 0x1F /* Mask to get recipient */ 74 | 75 | /* Exported macro ------------------------------------------------------------*/ 76 | /* Exported functions ------------------------------------------------------- */ 77 | 78 | #endif /* __USB_DEF_H */ 79 | 80 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 81 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_desc.c: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_desc.c 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Descriptors for Virtual Com Port Demo 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Includes ------------------------------------------------------------------*/ 17 | #include "usb_lib.h" 18 | #include "usb_desc.h" 19 | /* USB Standard Device Descriptor */ 20 | const u8 Virtual_Com_Port_DeviceDescriptor[] = 21 | { 22 | 0x12, /* bLength */ 23 | USB_DEVICE_DESCRIPTOR_TYPE, /* bDescriptorType */ 24 | 0x10, 25 | 0x01, /* bcdUSB = 1.10 */ 26 | 0xff, /* bDeviceClass: CDC */ 27 | 0x00, /* bDeviceSubClass */ 28 | 0x00, /* bDeviceProtocol */ 29 | 0x40, /* bMaxPacketSize0 */ 30 | 0x86, 31 | 0x1a, /* idVendor = 0x0483 */ 32 | 0x23, 33 | 0x75, /* idProduct = 0x7540 */ 34 | 0x54, 35 | 0x02, /* bcdDevice = 2.00 */ 36 | 1, /* Index of string descriptor describing manufacturer */ 37 | 2, /* Index of string descriptor describing product */ 38 | 1, /* Index of string descriptor describing the device's serial number */ 39 | 0x01 /* bNumConfigurations */ 40 | }; 41 | 42 | const u8 Virtual_Com_Port_ConfigDescriptor[] = 43 | { 44 | /*Configuation Descriptor*/ 45 | 0x09, /* bLength: Configuation Descriptor size */ 46 | USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */ 47 | VIRTUAL_COM_PORT_SIZ_CONFIG_DESC, /* wTotalLength:no of returned bytes */ 48 | 0x00, 49 | 0x01, /* bNumInterfaces: 1 interface */ 50 | 0x01, /* bConfigurationValue: Configuration value */ 51 | 0x00, /* iConfiguration: Index of string descriptor describing the configuration */ 52 | 0x80, /* bmAttributes: self powered */ 53 | 0x30, /* MaxPower 0 mA */ 54 | /*Interface Descriptor*/ 55 | 0x09, /* bLength: Interface Descriptor size */ 56 | USB_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType: Interface */ 57 | /* Interface descriptor type */ 58 | 0x00, /* bInterfaceNumber: Number of Interface */ 59 | 0x00, /* bAlternateSetting: Alternate setting */ 60 | 0x03, /* bNumEndpoints: One endpoints used */ 61 | 0xff, /* bInterfaceClass: Communication Interface Class */ 62 | 0x01, /* bInterfaceSubClass: Abstract Control Model */ 63 | 0x02, /* bInterfaceProtocol: Common AT commands */ 64 | 0x00, /* iInterface: */ 65 | 66 | /*Endpoint 2in Descriptor*/ 67 | 0x07, /* bLength: Endpoint Descriptor size */ 68 | USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ 69 | 0x82, /* bEndpointAddress: (IN2) */ 70 | 0x02, /* bmAttributes: bulk */ 71 | 0x20, 72 | 0x00, /* wMaxPacketSize: */ 73 | 0x00, /* bInterval: */ 74 | 75 | /*Endpoint 2out Descriptor*/ 76 | 0x07, /* bLength: Endpoint Descriptor size */ 77 | USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ 78 | 0x02, /* bEndpointAddress: (out2) */ 79 | 0x02, /* bmAttributes: bulk */ 80 | 0x20, 81 | 0x00, /* wMaxPacketSize: */ 82 | 0x00, /* bInterval: */ 83 | 84 | /*Endpoint 1in Descriptor*/ 85 | 0x07, /* bLength: Endpoint Descriptor size */ 86 | USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: Endpoint */ 87 | 0x81, /* bEndpointAddress: (IN1) */ 88 | 0x03, /* bmAttributes: Interrupt */ 89 | 0x08, /* wMaxPacketSize: */ 90 | 0x00, 91 | 0x01, /* bInterval: */ 92 | 93 | }; 94 | 95 | /* USB String Descriptors */ 96 | const u8 Virtual_Com_Port_StringLangID[VIRTUAL_COM_PORT_SIZ_STRING_LANGID] = 97 | { 98 | VIRTUAL_COM_PORT_SIZ_STRING_LANGID, 99 | USB_STRING_DESCRIPTOR_TYPE, 100 | 0x09, 101 | 0x04 /* LangID = 0x0409: U.S. English */ 102 | }; 103 | 104 | const u8 Virtual_Com_Port_StringVendor[VIRTUAL_COM_PORT_SIZ_STRING_VENDOR] = 105 | { 106 | VIRTUAL_COM_PORT_SIZ_STRING_VENDOR, /* Size of Vendor string */ 107 | USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType*/ 108 | /* Manufacturer: "STMicroelectronics" */ 109 | 'S', 0, 'T', 0, 'M', 0, 'i', 0, 'c', 0, 'r', 0, 'o', 0, 'e', 0, 110 | 'l', 0, 'e', 0, 'c', 0, 't', 0, 'r', 0, 'o', 0, 'n', 0, 'i', 0, 111 | 'c', 0, 's', 0 112 | }; 113 | 114 | const u8 Virtual_Com_Port_StringProduct[VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT] = 115 | { 116 | VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT, /* bLength */ 117 | USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */ 118 | /* Product name: "STM32 Virtual COM Port" */ 119 | 'S', 0, 'T', 0, 'M', 0, '3', 0, '2', 0, 'S', 0, 'i', 0, 'm', 0, 120 | 'u', 0, 'l', 0, 'a', 0, 't', 0, 'e', 0, ' ', 0, 'C', 0, 'H', 0, 121 | '3', 0, '4', 0, '1', 0, '~', 0, 'r', 0, 't', 0, ' ', 0, ' ', 0 122 | }; 123 | 124 | u8 Virtual_Com_Port_StringSerial[VIRTUAL_COM_PORT_SIZ_STRING_SERIAL] = 125 | { 126 | VIRTUAL_COM_PORT_SIZ_STRING_SERIAL, /* bLength */ 127 | USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */ 128 | 'S', 0, 'T', 0, 'M', 0, '3', 0, '2', 0, '1', 0, '0', 0 129 | } 130 | ;/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 131 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_desc.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_desc.h 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Descriptor Header for Virtual COM Port Device 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __USB_DESC_H 18 | #define __USB_DESC_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | /* Exported types ------------------------------------------------------------*/ 22 | /* Exported constants --------------------------------------------------------*/ 23 | /* Exported macro ------------------------------------------------------------*/ 24 | /* Exported define -----------------------------------------------------------*/ 25 | #define USB_DEVICE_DESCRIPTOR_TYPE 0x01 26 | #define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02 27 | #define USB_STRING_DESCRIPTOR_TYPE 0x03 28 | #define USB_INTERFACE_DESCRIPTOR_TYPE 0x04 29 | #define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05 30 | 31 | #define VIRTUAL_COM_PORT_DATA_SIZE 64 32 | #define VIRTUAL_COM_PORT_INT_SIZE 8 33 | 34 | #define VIRTUAL_COM_PORT_SIZ_DEVICE_DESC 18 35 | #define VIRTUAL_COM_PORT_SIZ_CONFIG_DESC 0x27 36 | #define VIRTUAL_COM_PORT_SIZ_STRING_LANGID 4 37 | #define VIRTUAL_COM_PORT_SIZ_STRING_VENDOR 38 38 | #define VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT 50 39 | #define VIRTUAL_COM_PORT_SIZ_STRING_SERIAL 26 40 | 41 | #define STANDARD_ENDPOINT_DESC_SIZE 0x09 42 | 43 | /* Exported functions ------------------------------------------------------- */ 44 | extern const u8 Virtual_Com_Port_DeviceDescriptor[VIRTUAL_COM_PORT_SIZ_DEVICE_DESC]; 45 | extern const u8 Virtual_Com_Port_ConfigDescriptor[VIRTUAL_COM_PORT_SIZ_CONFIG_DESC]; 46 | 47 | extern const u8 Virtual_Com_Port_StringLangID[VIRTUAL_COM_PORT_SIZ_STRING_LANGID]; 48 | extern const u8 Virtual_Com_Port_StringVendor[VIRTUAL_COM_PORT_SIZ_STRING_VENDOR]; 49 | extern const u8 Virtual_Com_Port_StringProduct[VIRTUAL_COM_PORT_SIZ_STRING_PRODUCT]; 50 | extern u8 Virtual_Com_Port_StringSerial[VIRTUAL_COM_PORT_SIZ_STRING_SERIAL]; 51 | 52 | #endif /* __USB_DESC_H */ 53 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 54 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_endp.c: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_endp.c 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Endpoint routines 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Includes ------------------------------------------------------------------*/ 17 | #include "usb_lib.h" 18 | #include "usb_desc.h" 19 | #include "usb_mem.h" 20 | #include "hw_config.h" 21 | #include "usb_istr.h" 22 | #include "usb_ch341.h" 23 | /* Private typedef -----------------------------------------------------------*/ 24 | /* Private define ------------------------------------------------------------*/ 25 | /* Private macro -------------------------------------------------------------*/ 26 | /* Private variables ---------------------------------------------------------*/ 27 | u8 buffer_out[VIRTUAL_COM_PORT_DATA_SIZE]; 28 | 29 | /* Private function prototypes -----------------------------------------------*/ 30 | /* Private functions ---------------------------------------------------------*/ 31 | /******************************************************************************* 32 | * Function Name : EP3_IN_Callback 33 | * Description : 34 | * Input : None. 35 | * Output : None. 36 | * Return : None. 37 | *******************************************************************************/ 38 | void EP2_IN_Callback(void) 39 | { 40 | 41 | } 42 | void EP2_OUT_Callback(void) 43 | { 44 | u8 count_out; 45 | count_out = GetEPRxCount(ENDP2); 46 | PMAToUserBufferCopy(buffer_out, ENDP2_RXADDR, count_out); 47 | USB_receive(buffer_out,count_out); 48 | SetEPRxValid(ENDP2); 49 | 50 | } 51 | /******************************************************************************* 52 | * Function Name : EP1_IN_Callback 53 | * Description : 54 | * Input : None. 55 | * Output : None. 56 | * Return : None. 57 | *******************************************************************************/ 58 | void EP1_IN_Callback(void) 59 | { 60 | 61 | } 62 | 63 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 64 | 65 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_init.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/DiscreteFile/USB/usb_init.c -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_init.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_init.h 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Initialization routines & global variables 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __USB_INIT_H 18 | #define __USB_INIT_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | /* Exported types ------------------------------------------------------------*/ 22 | /* Exported constants --------------------------------------------------------*/ 23 | /* Exported macro ------------------------------------------------------------*/ 24 | /* Exported functions ------------------------------------------------------- */ 25 | void USB_Init(void); 26 | void Set_USBClock(void); 27 | void USB_Interrupts_Config(void); 28 | /* External variables --------------------------------------------------------*/ 29 | /* The number of current endpoint, it will be used to specify an endpoint */ 30 | extern u8 EPindex; 31 | /* The number of current device, it is an index to the Device_Table */ 32 | /*extern u8 Device_no; */ 33 | /* Points to the DEVICE_INFO structure of current device */ 34 | /* The purpose of this register is to speed up the execution */ 35 | extern DEVICE_INFO* pInformation; 36 | /* Points to the DEVICE_PROP structure of current device */ 37 | /* The purpose of this register is to speed up the execution */ 38 | extern DEVICE_PROP* pProperty; 39 | /* Temporary save the state of Rx & Tx status. */ 40 | /* Whenever the Rx or Tx state is changed, its value is saved */ 41 | /* in this variable first and will be set to the EPRB or EPRA */ 42 | /* at the end of interrupt process */ 43 | extern USER_STANDARD_REQUESTS *pUser_Standard_Requests; 44 | 45 | extern u16 SaveState ; 46 | extern u16 wInterrupt_Mask; 47 | 48 | #endif /* __USB_INIT_H */ 49 | 50 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 51 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_int.c: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_int.c 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Endpoint CTR (Low and High) interrupt's service routines 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Includes ------------------------------------------------------------------*/ 17 | #include "usb_lib.h" 18 | 19 | /* Private typedef -----------------------------------------------------------*/ 20 | /* Private define ------------------------------------------------------------*/ 21 | /* Private macro -------------------------------------------------------------*/ 22 | /* Private variables ---------------------------------------------------------*/ 23 | u16 SaveRState; 24 | u16 SaveTState; 25 | 26 | /* Extern variables ----------------------------------------------------------*/ 27 | extern void (*pEpInt_IN[7])(void); /* Handles IN interrupts */ 28 | extern void (*pEpInt_OUT[7])(void); /* Handles OUT interrupts */ 29 | 30 | /* Private function prototypes -----------------------------------------------*/ 31 | /* Private functions ---------------------------------------------------------*/ 32 | 33 | /******************************************************************************* 34 | * Function Name : CTR_LP. 35 | * Description : Low priority Endpoint Correct Transfer interrupt's service 36 | * routine. 37 | * Input : None. 38 | * Output : None. 39 | * Return : None. 40 | *******************************************************************************/ 41 | void CTR_LP(void) 42 | { 43 | u32 wEPVal = 0; 44 | /* stay in loop while pending ints */ 45 | while (((wIstr = _GetISTR()) & ISTR_CTR) != 0) 46 | { 47 | _SetISTR((u16)CLR_CTR); /* clear CTR flag */ 48 | /* extract highest priority endpoint number */ 49 | EPindex = (u8)(wIstr & ISTR_EP_ID); 50 | if (EPindex == 0) 51 | { 52 | /* Decode and service control endpoint interrupt */ 53 | /* calling related service routine */ 54 | /* (Setup0_Process, In0_Process, Out0_Process) */ 55 | 56 | /* save RX & TX status */ 57 | /* and set both to NAK */ 58 | SaveRState = _GetEPRxStatus(ENDP0); 59 | SaveTState = _GetEPTxStatus(ENDP0); 60 | _SetEPRxStatus(ENDP0, EP_RX_NAK); 61 | _SetEPTxStatus(ENDP0, EP_TX_NAK); 62 | 63 | 64 | /* DIR bit = origin of the interrupt */ 65 | 66 | if ((wIstr & ISTR_DIR) == 0)//IN 67 | { 68 | /* DIR = 0 => IN int */ 69 | /* DIR = 0 implies that (EP_CTR_TX = 1) always */ 70 | _ClearEP_CTR_TX(ENDP0); 71 | 72 | In0_Process(); 73 | 74 | /* before terminate set Tx & Rx status */ 75 | _SetEPRxStatus(ENDP0, SaveRState); 76 | _SetEPTxStatus(ENDP0, SaveTState); 77 | return; 78 | } 79 | else// 80 | { 81 | 82 | /* DIR = 1 */ 83 | 84 | /* DIR = 1 & CTR_RX => SETUP or OUT int */ 85 | /* DIR = 1 & (CTR_TX | CTR_RX) => 2 int pending */ 86 | 87 | wEPVal = _GetENDPOINT(ENDP0); 88 | if ((wEPVal & EP_CTR_TX) != 0) 89 | { 90 | _ClearEP_CTR_TX(ENDP0); 91 | In0_Process(); 92 | /* before terminate set Tx & Rx status */ 93 | _SetEPRxStatus(ENDP0, SaveRState); 94 | _SetEPTxStatus(ENDP0, SaveTState); 95 | return; 96 | } 97 | else if ((wEPVal &EP_SETUP) != 0) 98 | { 99 | _ClearEP_CTR_RX(ENDP0); /* SETUP bit kept frozen while CTR_RX = 1 */ 100 | Setup0_Process(); 101 | /* before terminate set Tx & Rx status */ 102 | _SetEPRxStatus(ENDP0, SaveRState); 103 | _SetEPTxStatus(ENDP0, SaveTState); 104 | return; 105 | } 106 | 107 | else if ((wEPVal & EP_CTR_RX) != 0) 108 | { 109 | _ClearEP_CTR_RX(ENDP0); 110 | Out0_Process(); 111 | /* before terminate set Tx & Rx status */ 112 | _SetEPRxStatus(ENDP0, SaveRState); 113 | _SetEPTxStatus(ENDP0, SaveTState); 114 | return; 115 | } 116 | } 117 | }/* if(EPindex == 0) */ 118 | else 119 | { 120 | /* Decode and service non control endpoints interrupt */ 121 | 122 | /* process related endpoint register */ 123 | wEPVal = _GetENDPOINT(EPindex); 124 | if ((wEPVal & EP_CTR_RX) != 0) 125 | { 126 | /* clear int flag */ 127 | _ClearEP_CTR_RX(EPindex); 128 | 129 | /* call OUT service function */ 130 | (*pEpInt_OUT[EPindex-1])(); 131 | 132 | } /* if((wEPVal & EP_CTR_RX) */ 133 | 134 | if ((wEPVal & EP_CTR_TX) != 0) 135 | { 136 | /* clear int flag */ 137 | _ClearEP_CTR_TX(EPindex); 138 | 139 | /* call IN service function */ 140 | (*pEpInt_IN[EPindex-1])(); 141 | } /* if((wEPVal & EP_CTR_TX) != 0) */ 142 | 143 | }/* if(EPindex == 0) else */ 144 | 145 | }/* while(...) */ 146 | } 147 | 148 | /******************************************************************************* 149 | * Function Name : CTR_HP. 150 | * Description : High Priority Endpoint Correct Transfer interrupt's service 151 | * routine. 152 | * Input : None. 153 | * Output : None. 154 | * Return : None. 155 | *******************************************************************************/ 156 | void CTR_HP(void) 157 | { 158 | u32 wEPVal = 0; 159 | 160 | while (((wIstr = _GetISTR()) & ISTR_CTR) != 0) 161 | { 162 | _SetISTR((u16)CLR_CTR); /* clear CTR flag */ 163 | /* extract highest priority endpoint number */ 164 | EPindex = (u8)(wIstr & ISTR_EP_ID); 165 | /* process related endpoint register */ 166 | wEPVal = _GetENDPOINT(EPindex); 167 | if ((wEPVal & EP_CTR_RX) != 0) 168 | { 169 | /* clear int flag */ 170 | _ClearEP_CTR_RX(EPindex); 171 | 172 | /* call OUT service function */ 173 | (*pEpInt_OUT[EPindex-1])(); 174 | 175 | } /* if((wEPVal & EP_CTR_RX) */ 176 | else if ((wEPVal & EP_CTR_TX) != 0) 177 | { 178 | /* clear int flag */ 179 | _ClearEP_CTR_TX(EPindex); 180 | 181 | /* call IN service function */ 182 | (*pEpInt_IN[EPindex-1])(); 183 | 184 | 185 | } /* if((wEPVal & EP_CTR_TX) != 0) */ 186 | 187 | }/* while(...) */ 188 | } 189 | 190 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 191 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_int.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_int.h 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Endpoint CTR (Low and High) interrupt's service routines 7 | * prototypes 8 | ******************************************************************************** 9 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 10 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 11 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 12 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 13 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 14 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 15 | *******************************************************************************/ 16 | 17 | /* Define to prevent recursive inclusion -------------------------------------*/ 18 | #ifndef __USB_INT_H 19 | #define __USB_INT_H 20 | 21 | /* Includes ------------------------------------------------------------------*/ 22 | /* Exported types ------------------------------------------------------------*/ 23 | /* Exported constants --------------------------------------------------------*/ 24 | /* Exported macro ------------------------------------------------------------*/ 25 | /* Exported functions ------------------------------------------------------- */ 26 | void CTR_LP(void); 27 | void CTR_HP(void); 28 | 29 | /* External variables --------------------------------------------------------*/ 30 | 31 | #endif /* __USB_INT_H */ 32 | 33 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 34 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_istr.c: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_istr.c 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : ISTR events interrupt service routines 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Includes ------------------------------------------------------------------*/ 17 | #include "usb_lib.h" 18 | #include "usb_prop.h" 19 | #include "usb_pwr.h" 20 | #include "usb_istr.h" 21 | 22 | /* Private typedef -----------------------------------------------------------*/ 23 | /* Private define ------------------------------------------------------------*/ 24 | /* Private macro -------------------------------------------------------------*/ 25 | /* Private variables ---------------------------------------------------------*/ 26 | volatile u16 wIstr; /* ISTR register last read value */ 27 | volatile u8 bIntPackSOF = 0; /* SOFs received between 2 consecutive packets */ 28 | 29 | /* Extern variables ----------------------------------------------------------*/ 30 | /* Private function prototypes -----------------------------------------------*/ 31 | /* Private functions ---------------------------------------------------------*/ 32 | /* function pointers to non-control endpoints service routines */ 33 | void (*pEpInt_IN[7])(void) = 34 | { 35 | EP1_IN_Callback, 36 | EP2_IN_Callback, 37 | EP3_IN_Callback, 38 | EP4_IN_Callback, 39 | EP5_IN_Callback, 40 | EP6_IN_Callback, 41 | EP7_IN_Callback, 42 | }; 43 | 44 | void (*pEpInt_OUT[7])(void) = 45 | { 46 | EP1_OUT_Callback, 47 | EP2_OUT_Callback, 48 | EP3_OUT_Callback, 49 | EP4_OUT_Callback, 50 | EP5_OUT_Callback, 51 | EP6_OUT_Callback, 52 | EP7_OUT_Callback, 53 | }; 54 | 55 | 56 | /******************************************************************************* 57 | * Function Name : USB_LP_CAN_RX0_IRQHandler. 58 | * Description : ISTR events interrupt service routine. 59 | * Input : None. 60 | * Output : None. 61 | * Return : None. 62 | *******************************************************************************/ 63 | void USB_LP_CAN_RX0_IRQHandler(void) 64 | { 65 | 66 | wIstr = _GetISTR(); 67 | 68 | #if (IMR_MSK & ISTR_RESET) 69 | if (wIstr & ISTR_RESET & wInterrupt_Mask) 70 | { 71 | _SetISTR((u16)CLR_RESET); 72 | Device_Property.Reset(); 73 | #ifdef RESET_CALLBACK 74 | RESET_Callback(); 75 | #endif 76 | } 77 | #endif 78 | /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ 79 | #if (IMR_MSK & ISTR_DOVR) 80 | if (wIstr & ISTR_DOVR & wInterrupt_Mask) 81 | { 82 | _SetISTR((u16)CLR_DOVR); 83 | #ifdef DOVR_CALLBACK 84 | DOVR_Callback(); 85 | #endif 86 | } 87 | #endif 88 | /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ 89 | #if (IMR_MSK & ISTR_ERR) 90 | if (wIstr & ISTR_ERR & wInterrupt_Mask) 91 | { 92 | _SetISTR((u16)CLR_ERR); 93 | #ifdef ERR_CALLBACK 94 | ERR_Callback(); 95 | #endif 96 | } 97 | #endif 98 | /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ 99 | #if (IMR_MSK & ISTR_WKUP) 100 | if (wIstr & ISTR_WKUP & wInterrupt_Mask) 101 | { 102 | _SetISTR((u16)CLR_WKUP); 103 | Resume(RESUME_EXTERNAL); 104 | #ifdef WKUP_CALLBACK 105 | WKUP_Callback(); 106 | #endif 107 | } 108 | #endif 109 | /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ 110 | #if (IMR_MSK & ISTR_SUSP) 111 | if (wIstr & ISTR_SUSP & wInterrupt_Mask) 112 | { 113 | 114 | /* check if SUSPEND is possible */ 115 | if (fSuspendEnabled) 116 | { 117 | Suspend(); 118 | } 119 | else 120 | { 121 | /* if not possible then resume after xx ms */ 122 | Resume(RESUME_LATER); 123 | } 124 | /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */ 125 | _SetISTR((u16)CLR_SUSP); 126 | #ifdef SUSP_CALLBACK 127 | SUSP_Callback(); 128 | #endif 129 | } 130 | #endif 131 | /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ 132 | #if (IMR_MSK & ISTR_SOF) 133 | if (wIstr & ISTR_SOF & wInterrupt_Mask) 134 | { 135 | _SetISTR((u16)CLR_SOF); 136 | bIntPackSOF++; 137 | 138 | #ifdef SOF_CALLBACK 139 | SOF_Callback(); 140 | #endif 141 | } 142 | #endif 143 | /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ 144 | #if (IMR_MSK & ISTR_ESOF) 145 | if (wIstr & ISTR_ESOF & wInterrupt_Mask) 146 | { 147 | _SetISTR((u16)CLR_ESOF); 148 | /* resume handling timing is made with ESOFs */ 149 | Resume(RESUME_ESOF); /* request without change of the machine state */ 150 | 151 | #ifdef ESOF_CALLBACK 152 | ESOF_Callback(); 153 | #endif 154 | } 155 | #endif 156 | /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/ 157 | #if (IMR_MSK & ISTR_CTR) 158 | if (wIstr & ISTR_CTR & wInterrupt_Mask) 159 | { 160 | /* servicing of the endpoint correct transfer interrupt */ 161 | /* clear of the CTR flag into the sub */ 162 | CTR_LP(); 163 | #ifdef CTR_CALLBACK 164 | CTR_Callback(); 165 | #endif 166 | } 167 | #endif 168 | } /* USB_Istr */ 169 | 170 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 171 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_istr.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_istr.h 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : This file includes the peripherals header files in the 7 | * user application. 8 | ******************************************************************************** 9 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 10 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 11 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 12 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 13 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 14 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 15 | *******************************************************************************/ 16 | 17 | /* Define to prevent recursive inclusion -------------------------------------*/ 18 | #ifndef __USB_ISTR_H 19 | #define __USB_ISTR_H 20 | 21 | /* Includes ------------------------------------------------------------------*/ 22 | #include "usb_conf.h" 23 | 24 | /* Exported types ------------------------------------------------------------*/ 25 | /* Exported constants --------------------------------------------------------*/ 26 | /* Exported macro ------------------------------------------------------------*/ 27 | /* Exported functions ------------------------------------------------------- */ 28 | void USB_Istr(void); 29 | 30 | /* function prototypes Automatically built defining related macros */ 31 | 32 | #ifdef CTR_CALLBACK 33 | void CTR_Callback(void); 34 | #endif 35 | 36 | #ifdef DOVR_CALLBACK 37 | void DOVR_Callback(void); 38 | #endif 39 | 40 | #ifdef ERR_CALLBACK 41 | void ERR_Callback(void); 42 | #endif 43 | 44 | #ifdef WKUP_CALLBACK 45 | void WKUP_Callback(void); 46 | #endif 47 | 48 | #ifdef SUSP_CALLBACK 49 | void SUSP_Callback(void); 50 | #endif 51 | 52 | #ifdef RESET_CALLBACK 53 | void RESET_Callback(void); 54 | #endif 55 | 56 | #ifdef SOF_CALLBACK 57 | void SOF_Callback(void); 58 | #endif 59 | 60 | #ifdef ESOF_CALLBACK 61 | void ESOF_Callback(void); 62 | #endif 63 | 64 | void EP1_IN_Callback(void); 65 | void EP2_IN_Callback(void); 66 | void EP3_IN_Callback(void); 67 | void EP4_IN_Callback(void); 68 | void EP5_IN_Callback(void); 69 | void EP6_IN_Callback(void); 70 | void EP7_IN_Callback(void); 71 | 72 | void EP1_OUT_Callback(void); 73 | void EP2_OUT_Callback(void); 74 | void EP3_OUT_Callback(void); 75 | void EP4_OUT_Callback(void); 76 | void EP5_OUT_Callback(void); 77 | void EP6_OUT_Callback(void); 78 | void EP7_OUT_Callback(void); 79 | 80 | #endif /*__USB_ISTR_H*/ 81 | 82 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 83 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_lib.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_lib.h 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : USB library include files 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __USB_LIB_H 18 | #define __USB_LIB_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | #include "usb_type.h" 22 | #include "usb_regs.h" 23 | #include "usb_def.h" 24 | #include "usb_core.h" 25 | #include "usb_init.h" 26 | #include "usb_mem.h" 27 | #include "usb_int.h" 28 | 29 | /* Exported types ------------------------------------------------------------*/ 30 | /* Exported constants --------------------------------------------------------*/ 31 | /* Exported macro ------------------------------------------------------------*/ 32 | /* Exported functions ------------------------------------------------------- */ 33 | /* External variables --------------------------------------------------------*/ 34 | 35 | #endif /* __USB_LIB_H */ 36 | 37 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 38 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_mem.c: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_mem.c 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Utility functions for memory transfers to/from PMA 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Includes ------------------------------------------------------------------*/ 17 | #include "usb_lib.h" 18 | 19 | /* Private typedef -----------------------------------------------------------*/ 20 | /* Private define ------------------------------------------------------------*/ 21 | /* Private macro -------------------------------------------------------------*/ 22 | /* Private variables ---------------------------------------------------------*/ 23 | /* Extern variables ----------------------------------------------------------*/ 24 | /* Private function prototypes -----------------------------------------------*/ 25 | /* Private functions ---------------------------------------------------------*/ 26 | /******************************************************************************* 27 | * Function Name : UserToPMABufferCopy 28 | * Description : Copy a buffer from user memory area to packet memory area (PMA) 29 | * Input : - pbUsrBuf: pointer to user memory area. 30 | * - wPMABufAddr: address into PMA. 31 | * - wNBytes: no. of bytes to be copied. 32 | * Output : None. 33 | * Return : None . 34 | *******************************************************************************/ 35 | void UserToPMABufferCopy(u8 *pbUsrBuf, u16 wPMABufAddr, u16 wNBytes) 36 | { 37 | u32 n = (wNBytes + 1) >> 1; /* n = (wNBytes + 1) / 2 */ 38 | u32 i, temp1, temp2; 39 | u16 *pdwVal; 40 | pdwVal = (u16 *)(wPMABufAddr * 2 + PMAAddr); 41 | for (i = n; i != 0; i--) 42 | { 43 | temp1 = (u16) * pbUsrBuf; 44 | pbUsrBuf++; 45 | temp2 = temp1 | (u16) * pbUsrBuf << 8; 46 | *pdwVal++ = temp2; 47 | pdwVal++; 48 | pbUsrBuf++; 49 | } 50 | } 51 | /******************************************************************************* 52 | * Function Name : PMAToUserBufferCopy 53 | * Description : Copy a buffer from user memory area to packet memory area (PMA) 54 | * Input : - pbUsrBuf = pointer to user memory area. 55 | * - wPMABufAddr = address into PMA. 56 | * - wNBytes = no. of bytes to be copied. 57 | * Output : None. 58 | * Return : None. 59 | *******************************************************************************/ 60 | void PMAToUserBufferCopy(u8 *pbUsrBuf, u16 wPMABufAddr, u16 wNBytes) 61 | { 62 | u32 n = (wNBytes + 1) >> 1;/* /2*/ 63 | u32 i; 64 | u32 *pdwVal; 65 | 66 | 67 | pdwVal = (u32 *)(wPMABufAddr * 2 + PMAAddr); 68 | for (i = n; i != 0; i--) 69 | { 70 | *(u16*)pbUsrBuf++ = *pdwVal++; 71 | pbUsrBuf++; 72 | } 73 | } 74 | 75 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 76 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_mem.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_mem.h 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Utility prototypes functions for memory/PMA transfers 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __USB_MEM_H 18 | #define __USB_MEM_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | /* Exported types ------------------------------------------------------------*/ 22 | /* Exported constants --------------------------------------------------------*/ 23 | /* Exported macro ------------------------------------------------------------*/ 24 | /* Exported functions ------------------------------------------------------- */ 25 | void UserToPMABufferCopy(u8 *pbUsrBuf, u16 wPMABufAddr, u16 wNBytes); 26 | void PMAToUserBufferCopy(u8 *pbUsrBuf, u16 wPMABufAddr, u16 wNBytes); 27 | 28 | /* External variables --------------------------------------------------------*/ 29 | 30 | #endif /*__USB_MEM_H*/ 31 | 32 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 33 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_prop.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_prop.h 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : All processing related to Virtual COM Port Demo (Endpoint 0) 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __usb_prop_H 18 | #define __usb_prop_H 19 | #include "usb_ch341.h" 20 | /* Includes ------------------------------------------------------------------*/ 21 | /* Exported types ------------------------------------------------------------*/ 22 | typedef struct 23 | { 24 | u32 bitrate; 25 | u8 format; 26 | u8 paritytype; 27 | u8 datatype; 28 | }LINE_CODING; 29 | 30 | /* Exported constants --------------------------------------------------------*/ 31 | /* Exported macro ------------------------------------------------------------*/ 32 | /* Exported define -----------------------------------------------------------*/ 33 | 34 | #define Virtual_Com_Port_GetConfiguration NOP_Process 35 | //#define Virtual_Com_Port_SetConfiguration NOP_Process 36 | #define Virtual_Com_Port_GetInterface NOP_Process 37 | #define Virtual_Com_Port_SetInterface NOP_Process 38 | #define Virtual_Com_Port_GetStatus NOP_Process 39 | #define Virtual_Com_Port_ClearFeature NOP_Process 40 | #define Virtual_Com_Port_SetEndPointFeature NOP_Process 41 | #define Virtual_Com_Port_SetDeviceFeature NOP_Process 42 | //#define Virtual_Com_Port_SetDeviceAddress NOP_Process 43 | 44 | #define SEND_ENCAPSULATED_COMMAND 0x00 45 | #define GET_ENCAPSULATED_RESPONSE 0x01 46 | #define SET_COMM_FEATURE 0x02 47 | #define GET_COMM_FEATURE 0x03 48 | #define CLEAR_COMM_FEATURE 0x04 49 | #define SET_LINE_CODING 0x20 50 | #define GET_LINE_CODING 0x21 51 | #define SET_CONTROL_LINE_STATE 0x22 52 | #define SEND_BREAK 0x23 53 | 54 | ////CH341 reg 55 | #define CH341_REQ_WRITE_REG 0x9A 56 | #define CH341_REQ_READ_REG 0x95 57 | #define CH341_REG_BREAK1 0x05 58 | #define CH341_REG_BREAK2 0x18 59 | #define CH341_NBREAK_BITS_REG1 0x01 60 | #define CH341_NBREAK_BITS_REG2 0x40 61 | /* Exported functions ------------------------------------------------------- */ 62 | void Enter_LowPowerMode(void); 63 | void Leave_LowPowerMode(void); 64 | void Virtual_Com_Port_init(void); 65 | void Virtual_Com_Port_Reset(void); 66 | void Virtual_Com_Port_SetConfiguration(void); 67 | void Virtual_Com_Port_SetDeviceAddress (void); 68 | void Virtual_Com_Port_Status_In (void); 69 | void Virtual_Com_Port_Status_Out (void); 70 | void Get_SerialNum(void); 71 | void USART_Config_Default(void); 72 | bool USART_Config(void); 73 | RESULT Virtual_Com_Port_Data_Setup(u8); 74 | RESULT Virtual_Com_Port_NoData_Setup(u8); 75 | RESULT Virtual_Com_Port_Get_Interface_Setting(u8 Interface, u8 AlternateSetting); 76 | u8 *Virtual_Com_Port_GetDeviceDescriptor(u16 ); 77 | u8 *Virtual_Com_Port_GetConfigDescriptor(u16); 78 | u8 *Virtual_Com_Port_GetStringDescriptor(u16); 79 | 80 | u8 *Virtual_Com_Port_GetLineCoding(u16 Length); 81 | u8 *Virtual_Com_Port_SetLineCoding(u16 Length); 82 | extern u32 ch341_state; 83 | #endif /* __usb_prop_H */ 84 | 85 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 86 | 87 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_pwr.c: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_pwr.c 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Connection/disconnection & power management 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Includes ------------------------------------------------------------------*/ 17 | #include "stm32f10x_lib.h" 18 | #include "usb_lib.h" 19 | #include "usb_conf.h" 20 | #include "usb_pwr.h" 21 | #include "hw_config.h" 22 | #include "usb_ch341.h" 23 | #include "usb_init.h" 24 | #include "usb_prop.h" 25 | /* Private typedef -----------------------------------------------------------*/ 26 | /* Private define ------------------------------------------------------------*/ 27 | /* Private macro -------------------------------------------------------------*/ 28 | /* Private variables ---------------------------------------------------------*/ 29 | vu32 bDeviceState = UNCONNECTED; /* USB device status */ 30 | volatile bool fSuspendEnabled = TRUE; /* True when suspend is possible */ 31 | 32 | struct 33 | { 34 | volatile RESUME_STATE eState; 35 | volatile u8 bESOFcnt; 36 | } 37 | ResumeS; 38 | 39 | /* Extern variables ----------------------------------------------------------*/ 40 | /* Private function prototypes -----------------------------------------------*/ 41 | /* Extern function prototypes ------------------------------------------------*/ 42 | /* Private functions ---------------------------------------------------------*/ 43 | 44 | /******************************************************************************* 45 | * Function Name : PowerOn 46 | * Description : USB IP power ON Routine. 47 | * Input : None. 48 | * Output : None. 49 | * Return : USB_SUCCESS. 50 | *******************************************************************************/ 51 | RESULT PowerOn(void) 52 | { 53 | u16 wRegVal; 54 | 55 | /*** cable plugged-in ? ***/ 56 | USB_Cable_Config(ENABLE); 57 | 58 | /*** CNTR_PWDN = 0 ***/ 59 | wRegVal = CNTR_FRES; 60 | _SetCNTR(wRegVal); 61 | 62 | /*** CNTR_FRES = 0 ***/ 63 | wInterrupt_Mask = 0; 64 | _SetCNTR(wInterrupt_Mask); 65 | /*** Clear pending interrupts ***/ 66 | _SetISTR(0); 67 | /*** Set interrupt mask ***/ 68 | wInterrupt_Mask = CNTR_RESETM | CNTR_SUSPM | CNTR_WKUPM; 69 | _SetCNTR(wInterrupt_Mask); 70 | 71 | return USB_SUCCESS; 72 | } 73 | 74 | /******************************************************************************* 75 | * Function Name : PowerOff 76 | * Description : Handles switch-off conditions 77 | * Input : None. 78 | * Output : None. 79 | * Return : USB_SUCCESS. 80 | *******************************************************************************/ 81 | RESULT PowerOff() 82 | { 83 | /* disable all ints and force USB reset */ 84 | _SetCNTR(CNTR_FRES); 85 | /* clear interrupt status register */ 86 | _SetISTR(0); 87 | /* Disable the Pull-Up*/ 88 | USB_Cable_Config(DISABLE); 89 | /* switch-off device */ 90 | _SetCNTR(CNTR_FRES + CNTR_PDWN); 91 | /* sw variables reset */ 92 | /* ... */ 93 | 94 | return USB_SUCCESS; 95 | } 96 | 97 | /******************************************************************************* 98 | * Function Name : Suspend 99 | * Description : sets suspend mode operating conditions 100 | * Input : None. 101 | * Output : None. 102 | * Return : USB_SUCCESS. 103 | *******************************************************************************/ 104 | void Suspend(void) 105 | { 106 | u16 wCNTR; 107 | /* suspend preparation */ 108 | /* ... */ 109 | 110 | /* macrocell enters suspend mode */ 111 | wCNTR = _GetCNTR(); 112 | wCNTR |= CNTR_FSUSP; 113 | _SetCNTR(wCNTR); 114 | 115 | /* ------------------ ONLY WITH BUS-POWERED DEVICES ---------------------- */ 116 | /* power reduction */ 117 | /* ... on connected devices */ 118 | 119 | 120 | /* force low-power mode in the macrocell */ 121 | wCNTR = _GetCNTR(); 122 | wCNTR |= CNTR_LPMODE; 123 | _SetCNTR(wCNTR); 124 | 125 | /* switch-off the clocks */ 126 | /* ... */ 127 | Enter_LowPowerMode(); 128 | 129 | } 130 | 131 | /******************************************************************************* 132 | * Function Name : Resume_Init 133 | * Description : Handles wake-up restoring normal operations 134 | * Input : None. 135 | * Output : None. 136 | * Return : USB_SUCCESS. 137 | *******************************************************************************/ 138 | void Resume_Init(void) 139 | { 140 | u16 wCNTR; 141 | /* ------------------ ONLY WITH BUS-POWERED DEVICES ---------------------- */ 142 | /* restart the clocks */ 143 | /* ... */ 144 | 145 | /* CNTR_LPMODE = 0 */ 146 | wCNTR = _GetCNTR(); 147 | wCNTR &= (~CNTR_LPMODE); 148 | _SetCNTR(wCNTR); 149 | 150 | /* restore full power */ 151 | /* ... on connected devices */ 152 | Leave_LowPowerMode(); 153 | 154 | /* reset FSUSP bit */ 155 | _SetCNTR(IMR_MSK); 156 | 157 | /* reverse suspend preparation */ 158 | /* ... */ 159 | 160 | } 161 | 162 | /******************************************************************************* 163 | * Function Name : Resume 164 | * Description : This is the state machine handling resume operations and 165 | * timing sequence. The control is based on the Resume structure 166 | * variables and on the ESOF interrupt calling this subroutine 167 | * without changing machine state. 168 | * Input : a state machine value (RESUME_STATE) 169 | * RESUME_ESOF doesn't change ResumeS.eState allowing 170 | * decrementing of the ESOF counter in different states. 171 | * Output : None. 172 | * Return : None. 173 | *******************************************************************************/ 174 | void Resume(RESUME_STATE eResumeSetVal) 175 | { 176 | u16 wCNTR; 177 | 178 | if (eResumeSetVal != RESUME_ESOF) 179 | ResumeS.eState = eResumeSetVal; 180 | 181 | switch (ResumeS.eState) 182 | { 183 | case RESUME_EXTERNAL: 184 | Resume_Init(); 185 | ResumeS.eState = RESUME_OFF; 186 | break; 187 | case RESUME_INTERNAL: 188 | Resume_Init(); 189 | ResumeS.eState = RESUME_START; 190 | break; 191 | case RESUME_LATER: 192 | ResumeS.bESOFcnt = 2; 193 | ResumeS.eState = RESUME_WAIT; 194 | break; 195 | case RESUME_WAIT: 196 | ResumeS.bESOFcnt--; 197 | if (ResumeS.bESOFcnt == 0) 198 | ResumeS.eState = RESUME_START; 199 | break; 200 | case RESUME_START: 201 | wCNTR = _GetCNTR(); 202 | wCNTR |= CNTR_RESUME; 203 | _SetCNTR(wCNTR); 204 | ResumeS.eState = RESUME_ON; 205 | ResumeS.bESOFcnt = 10; 206 | break; 207 | case RESUME_ON: 208 | ResumeS.bESOFcnt--; 209 | if (ResumeS.bESOFcnt == 0) 210 | { 211 | wCNTR = _GetCNTR(); 212 | wCNTR &= (~CNTR_RESUME); 213 | _SetCNTR(wCNTR); 214 | ResumeS.eState = RESUME_OFF; 215 | } 216 | break; 217 | case RESUME_OFF: 218 | case RESUME_ESOF: 219 | default: 220 | ResumeS.eState = RESUME_OFF; 221 | break; 222 | } 223 | } 224 | 225 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 226 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_pwr.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_pwr.h 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Connection/disconnection & power management header 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __USB_PWR_H 18 | #define __USB_PWR_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | /* Exported types ------------------------------------------------------------*/ 22 | typedef enum _RESUME_STATE 23 | { 24 | RESUME_EXTERNAL, 25 | RESUME_INTERNAL, 26 | RESUME_LATER, 27 | RESUME_WAIT, 28 | RESUME_START, 29 | RESUME_ON, 30 | RESUME_OFF, 31 | RESUME_ESOF 32 | } RESUME_STATE; 33 | 34 | typedef enum _DEVICE_STATE 35 | { 36 | UNCONNECTED, 37 | ATTACHED, 38 | POWERED, 39 | SUSPENDED, 40 | ADDRESSED, 41 | CONFIGURED 42 | } DEVICE_STATE; 43 | 44 | /* Exported constants --------------------------------------------------------*/ 45 | /* Exported macro ------------------------------------------------------------*/ 46 | /* Exported functions ------------------------------------------------------- */ 47 | void Suspend(void); 48 | void Resume_Init(void); 49 | void Resume(RESUME_STATE eResumeSetVal); 50 | RESULT PowerOn(void); 51 | RESULT PowerOff(void); 52 | 53 | /* External variables --------------------------------------------------------*/ 54 | extern vu32 bDeviceState; /* USB device status */ 55 | extern volatile bool fSuspendEnabled; /* true when suspend is possible */ 56 | 57 | #endif /*__USB_PWR_H*/ 58 | 59 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 60 | -------------------------------------------------------------------------------- /DiscreteFile/USB/usb_type.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : usb_type.h 3 | * Author : MCD Application Team 4 | * Version : V2.2.0 5 | * Date : 06/13/2008 6 | * Description : Type definitions used by the USB Library 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __USB_TYPE_H 18 | #define __USB_TYPE_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | #include "usb_conf.h" 22 | 23 | /* Exported types ------------------------------------------------------------*/ 24 | /* Exported constants --------------------------------------------------------*/ 25 | #ifndef NULL 26 | #define NULL ((void *)0) 27 | #endif 28 | 29 | #ifndef __STM32F10x_TYPE_H 30 | 31 | typedef signed long s32; 32 | typedef signed short s16; 33 | typedef signed char s8; 34 | 35 | typedef volatile signed long vs32; 36 | typedef volatile signed short vs16; 37 | typedef volatile signed char vs8; 38 | 39 | typedef unsigned long u32; 40 | typedef unsigned short u16; 41 | typedef unsigned char u8; 42 | 43 | typedef unsigned long const uc32; /* Read Only */ 44 | typedef unsigned short const uc16; /* Read Only */ 45 | typedef unsigned char const uc8; /* Read Only */ 46 | 47 | typedef volatile unsigned long vu32; 48 | typedef volatile unsigned short vu16; 49 | typedef volatile unsigned char vu8; 50 | 51 | typedef volatile unsigned long const vuc32; /* Read Only */ 52 | typedef volatile unsigned short const vuc16; /* Read Only */ 53 | typedef volatile unsigned char const vuc8; /* Read Only */ 54 | 55 | 56 | typedef enum 57 | { 58 | FALSE = 0, TRUE = !FALSE 59 | } 60 | bool; 61 | 62 | typedef enum { RESET = 0, SET = !RESET } FlagStatus, ITStatus; 63 | 64 | typedef enum { DISABLE = 0, ENABLE = !DISABLE} FunctionalState; 65 | 66 | typedef enum { ERROR = 0, SUCCESS = !ERROR} ErrorStatus; 67 | #endif 68 | 69 | /* Exported macro ------------------------------------------------------------*/ 70 | /* Exported functions ------------------------------------------------------- */ 71 | /* External variables --------------------------------------------------------*/ 72 | 73 | #endif /* __USB_TYPE_H */ 74 | 75 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 76 | -------------------------------------------------------------------------------- /DiscreteFile/USER/ExtDll.iex: -------------------------------------------------------------------------------- 1 | [EXTDLL] 2 | Count=0 3 | -------------------------------------------------------------------------------- /DiscreteFile/USER/TEST.plg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/DiscreteFile/USER/TEST.plg -------------------------------------------------------------------------------- /DiscreteFile/USER/test.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/DiscreteFile/USER/test.c -------------------------------------------------------------------------------- /DiscreteFile/keilkilll.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/DiscreteFile/keilkilll.bat -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | STM32_USB_CH341 2 | =============== 3 | STM32 USB simulates CH341.(STM32F103.PD0 connect 1.5k then connect D+) 4 | 5 | Why CH341? 6 | =============== 7 | * ST's USB virtual com port demo's driver have no signature(difficult to install). 8 | * The driver of CH341 is easy to install. 9 | * I feel bored. 10 | 11 | Diagram 12 | =============== 13 | ![hello world](https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/master/diagram.jpg) 14 | 15 | It's not very difficult to develop. I just referred to the linux usb driver of ch341. You can simulate other chips in the same way. 16 | -------------------------------------------------------------------------------- /SingleFile/STM32F10xlib/STM32F10xR.LIB: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/SingleFile/STM32F10xlib/STM32F10xR.LIB -------------------------------------------------------------------------------- /SingleFile/STM32F10xlib/cortexm3_macro.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : cortexm3_macro.h 3 | * Author : MCD Application Team 4 | * Version : V2.0.1 5 | * Date : 06/13/2008 6 | * Description : Header file for cortexm3_macro.s. 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __CORTEXM3_MACRO_H 18 | #define __CORTEXM3_MACRO_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | #include "stm32f10x_type.h" 22 | 23 | /* Exported types ------------------------------------------------------------*/ 24 | /* Exported constants --------------------------------------------------------*/ 25 | /* Exported macro ------------------------------------------------------------*/ 26 | /* Exported functions ------------------------------------------------------- */ 27 | void __WFI(void); 28 | void __WFE(void); 29 | void __SEV(void); 30 | void __ISB(void); 31 | void __DSB(void); 32 | void __DMB(void); 33 | void __SVC(void); 34 | u32 __MRS_CONTROL(void); 35 | void __MSR_CONTROL(u32 Control); 36 | u32 __MRS_PSP(void); 37 | void __MSR_PSP(u32 TopOfProcessStack); 38 | u32 __MRS_MSP(void); 39 | void __MSR_MSP(u32 TopOfMainStack); 40 | void __RESETPRIMASK(void); 41 | void __SETPRIMASK(void); 42 | u32 __READ_PRIMASK(void); 43 | void __RESETFAULTMASK(void); 44 | void __SETFAULTMASK(void); 45 | u32 __READ_FAULTMASK(void); 46 | void __BASEPRICONFIG(u32 NewPriority); 47 | u32 __GetBASEPRI(void); 48 | u16 __REV_HalfWord(u16 Data); 49 | u32 __REV_Word(u32 Data); 50 | 51 | #endif /* __CORTEXM3_MACRO_H */ 52 | 53 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 54 | -------------------------------------------------------------------------------- /SingleFile/STM32F10xlib/stm32f10x_conf.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : stm32f10x_conf.h 3 | * Author : MCD Application Team 4 | * Version : V2.0.1 5 | * Date : 06/13/2008 6 | * Description : Library configuration file. 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __STM32F10x_CONF_H 18 | #define __STM32F10x_CONF_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | #include "stm32f10x_type.h" 22 | 23 | /* Exported types ------------------------------------------------------------*/ 24 | /* Exported constants --------------------------------------------------------*/ 25 | /* Uncomment the line below to compile the library in DEBUG mode, this will expanse 26 | the "assert_param" macro in the firmware library code (see "Exported macro" 27 | section below) */ 28 | /* #define DEBUG 1*/ 29 | 30 | /* Comment the line below to disable the specific peripheral inclusion */ 31 | /************************************* BKP ************************************/ 32 | #define _BKP 33 | 34 | /************************************* CAN ************************************/ 35 | #define _CAN 36 | 37 | /************************************* CRC ************************************/ 38 | #define _CRC 39 | 40 | /************************************* DAC ************************************/ 41 | #define _DAC 42 | 43 | /************************************* DBGMCU *********************************/ 44 | #define _DBGMCU 45 | 46 | /************************************* DMA ************************************/ 47 | #define _DMA 48 | #define _DMA1_Channel1 49 | #define _DMA1_Channel2 50 | #define _DMA1_Channel3 51 | #define _DMA1_Channel4 52 | #define _DMA1_Channel5 53 | #define _DMA1_Channel6 54 | #define _DMA1_Channel7 55 | #define _DMA2_Channel1 56 | #define _DMA2_Channel2 57 | #define _DMA2_Channel3 58 | #define _DMA2_Channel4 59 | #define _DMA2_Channel5 60 | 61 | /************************************* EXTI ***********************************/ 62 | #define _EXTI 63 | 64 | /************************************* FLASH and Option Bytes *****************/ 65 | #define _FLASH 66 | /* Uncomment the line below to enable FLASH program/erase/protections functions, 67 | otherwise only FLASH configuration (latency, prefetch, half cycle) functions 68 | are enabled */ 69 | #define _FLASH_PROG 70 | 71 | /************************************* FSMC ***********************************/ 72 | #define _FSMC 73 | 74 | /************************************* GPIO ***********************************/ 75 | #define _GPIO 76 | #define _GPIOA 77 | #define _GPIOB 78 | #define _GPIOC 79 | #define _GPIOD 80 | #define _GPIOE 81 | #define _GPIOF 82 | #define _GPIOG 83 | #define _AFIO 84 | 85 | /************************************* I2C ************************************/ 86 | #define _I2C 87 | #define _I2C1 88 | #define _I2C2 89 | 90 | /************************************* IWDG ***********************************/ 91 | #define _IWDG 92 | 93 | /************************************* NVIC ***********************************/ 94 | #define _NVIC 95 | 96 | /************************************* PWR ************************************/ 97 | #define _PWR 98 | 99 | /************************************* RCC ************************************/ 100 | #define _RCC 101 | 102 | /************************************* RTC ************************************/ 103 | #define _RTC 104 | 105 | /************************************* SDIO ***********************************/ 106 | #define _SDIO 107 | 108 | /************************************* SPI ************************************/ 109 | #define _SPI 110 | #define _SPI1 111 | #define _SPI2 112 | #define _SPI3 113 | 114 | /************************************* SysTick ********************************/ 115 | #define _SysTick 116 | 117 | /************************************* TIM ************************************/ 118 | #define _TIM 119 | #define _TIM1 120 | #define _TIM2 121 | #define _TIM3 122 | #define _TIM4 123 | #define _TIM5 124 | #define _TIM6 125 | #define _TIM7 126 | #define _TIM8 127 | 128 | /************************************* USART **********************************/ 129 | #define _USART 130 | #define _USART1 131 | #define _USART2 132 | #define _USART3 133 | #define _UART4 134 | #define _UART5 135 | 136 | /************************************* WWDG ***********************************/ 137 | #define _WWDG 138 | 139 | /* In the following line adjust the value of External High Speed oscillator (HSE) 140 | used in your application */ 141 | #define HSE_Value ((u32)8000000) /* Value of the External oscillator in Hz*/ 142 | 143 | /* Exported macro ------------------------------------------------------------*/ 144 | #ifdef DEBUG 145 | /******************************************************************************* 146 | * Macro Name : assert_param 147 | * Description : The assert_param macro is used for function's parameters check. 148 | * It is used only if the library is compiled in DEBUG mode. 149 | * Input : - expr: If expr is false, it calls assert_failed function 150 | * which reports the name of the source file and the source 151 | * line number of the call that failed. 152 | * If expr is true, it returns no value. 153 | * Return : None 154 | *******************************************************************************/ 155 | #define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__)) 156 | /* Exported functions ------------------------------------------------------- */ 157 | void assert_failed(u8* file, u32 line); 158 | #else 159 | #define assert_param(expr) ((void)0) 160 | #endif /* DEBUG */ 161 | 162 | #endif /* __STM32F10x_CONF_H */ 163 | 164 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 165 | -------------------------------------------------------------------------------- /SingleFile/STM32F10xlib/stm32f10x_type.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : stm32f10x_type.h 3 | * Author : MCD Application Team 4 | * Version : V2.0.1 5 | * Date : 06/13/2008 6 | * Description : This file contains all the common data types used for the 7 | * STM32F10x firmware library. 8 | ******************************************************************************** 9 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 10 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 11 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 12 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 13 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 14 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 15 | *******************************************************************************/ 16 | 17 | /* Define to prevent recursive inclusion -------------------------------------*/ 18 | #ifndef __STM32F10x_TYPE_H 19 | #define __STM32F10x_TYPE_H 20 | 21 | /* Includes ------------------------------------------------------------------*/ 22 | /* Exported types ------------------------------------------------------------*/ 23 | typedef signed long s32; 24 | typedef signed short s16; 25 | typedef signed char s8; 26 | 27 | typedef signed long const sc32; /* Read Only */ 28 | typedef signed short const sc16; /* Read Only */ 29 | typedef signed char const sc8; /* Read Only */ 30 | 31 | typedef volatile signed long vs32; 32 | typedef volatile signed short vs16; 33 | typedef volatile signed char vs8; 34 | 35 | typedef volatile signed long const vsc32; /* Read Only */ 36 | typedef volatile signed short const vsc16; /* Read Only */ 37 | typedef volatile signed char const vsc8; /* Read Only */ 38 | 39 | typedef unsigned long u32; 40 | typedef unsigned short u16; 41 | typedef unsigned char u8; 42 | 43 | typedef unsigned long const uc32; /* Read Only */ 44 | typedef unsigned short const uc16; /* Read Only */ 45 | typedef unsigned char const uc8; /* Read Only */ 46 | 47 | typedef volatile unsigned long vu32; 48 | typedef volatile unsigned short vu16; 49 | typedef volatile unsigned char vu8; 50 | 51 | typedef volatile unsigned long const vuc32; /* Read Only */ 52 | typedef volatile unsigned short const vuc16; /* Read Only */ 53 | typedef volatile unsigned char const vuc8; /* Read Only */ 54 | 55 | typedef enum {FALSE = 0, TRUE = !FALSE} bool; 56 | 57 | typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; 58 | 59 | typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; 60 | #define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) 61 | 62 | typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; 63 | 64 | #define U8_MAX ((u8)255) 65 | #define S8_MAX ((s8)127) 66 | #define S8_MIN ((s8)-128) 67 | #define U16_MAX ((u16)65535u) 68 | #define S16_MAX ((s16)32767) 69 | #define S16_MIN ((s16)-32768) 70 | #define U32_MAX ((u32)4294967295uL) 71 | #define S32_MAX ((s32)2147483647) 72 | #define S32_MIN ((s32)-2147483648) 73 | 74 | /* Exported constants --------------------------------------------------------*/ 75 | /* Exported macro ------------------------------------------------------------*/ 76 | /* Exported functions ------------------------------------------------------- */ 77 | 78 | #endif /* __STM32F10x_TYPE_H */ 79 | 80 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 81 | -------------------------------------------------------------------------------- /SingleFile/SYSTEM/delay/delay.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/SingleFile/SYSTEM/delay/delay.c -------------------------------------------------------------------------------- /SingleFile/SYSTEM/delay/delay.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/SingleFile/SYSTEM/delay/delay.h -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/cortexm3_macro.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : cortexm3_macro.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : Header file for cortexm3_macro.s. 6 | ******************************************************************************** 7 | * History: 8 | * 04/02/2007: V0.2 9 | * 02/05/2007: V0.1 10 | * 09/29/2006: V0.01 11 | ******************************************************************************** 12 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 13 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 14 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 15 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 16 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 17 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 18 | *******************************************************************************/ 19 | 20 | /* Define to prevent recursive inclusion -------------------------------------*/ 21 | #ifndef __CORTEXM3_MACRO_H 22 | #define __CORTEXM3_MACRO_H 23 | 24 | /* Includes ------------------------------------------------------------------*/ 25 | #include "stm32f10x_type.h" 26 | 27 | /* Exported types ------------------------------------------------------------*/ 28 | /* Exported constants --------------------------------------------------------*/ 29 | /* Exported macro ------------------------------------------------------------*/ 30 | /* Exported functions ------------------------------------------------------- */ 31 | void __WFI(void); 32 | void __WFE(void); 33 | void __SEV(void); 34 | void __ISB(void); 35 | void __DSB(void); 36 | void __DMB(void); 37 | void __SVC(void); 38 | u32 __MRS_CONTROL(void); 39 | void __MSR_CONTROL(u32 Control); 40 | void __SETPRIMASK(void); 41 | void __RESETPRIMASK(void); 42 | void __SETFAULTMASK(void); 43 | void __RESETFAULTMASK(void); 44 | void __BASEPRICONFIG(u32 NewPriority); 45 | u32 __GetBASEPRI(void); 46 | u16 __REV_HalfWord(u16 Data); 47 | u32 __REV_Word(u32 Data); 48 | 49 | #endif /* __CORTEXM3_MACRO_H */ 50 | 51 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 52 | -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/stm32f10x_bkp.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_bkp.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * BKP firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_BKP_H 23 | #define __STM32F10x_BKP_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* Exported constants --------------------------------------------------------*/ 30 | /* Tamper Pin active level*/ 31 | #define BKP_TamperPinLevel_High ((u16)0x0000) 32 | #define BKP_TamperPinLevel_Low ((u16)0x0001) 33 | 34 | #define IS_BKP_TAMPER_PIN_LEVEL(LEVEL) ((LEVEL == BKP_TamperPinLevel_High) || \ 35 | (LEVEL == BKP_TamperPinLevel_Low)) 36 | 37 | /* Data Backup Register */ 38 | #define BKP_DR1 ((u16)0x0004) 39 | #define BKP_DR2 ((u16)0x0008) 40 | #define BKP_DR3 ((u16)0x000C) 41 | #define BKP_DR4 ((u16)0x0010) 42 | #define BKP_DR5 ((u16)0x0014) 43 | #define BKP_DR6 ((u16)0x0018) 44 | #define BKP_DR7 ((u16)0x001C) 45 | #define BKP_DR8 ((u16)0x0020) 46 | #define BKP_DR9 ((u16)0x0024) 47 | #define BKP_DR10 ((u16)0x0028) 48 | 49 | #define IS_BKP_DR(DR) ((DR == BKP_DR1) || (DR == BKP_DR2) || (DR == BKP_DR3) || \ 50 | (DR == BKP_DR4) || (DR == BKP_DR5) || (DR == BKP_DR6) || \ 51 | (DR == BKP_DR7) || (DR == BKP_DR8) || (DR == BKP_DR9) || \ 52 | (DR == BKP_DR10)) 53 | 54 | #define IS_BKP_CALIBRATION_VALUE(VALUE) (VALUE <= 0x7F) 55 | 56 | /* Exported macro ------------------------------------------------------------*/ 57 | /* Exported functions ------------------------------------------------------- */ 58 | void BKP_DeInit(void); 59 | void BKP_TamperPinLevelConfig(u16 BKP_TamperPinLevel); 60 | void BKP_TamperPinCmd(FunctionalState NewState); 61 | void BKP_ITConfig(FunctionalState NewState); 62 | void BKP_RTCCalibrationClockOutputCmd(FunctionalState NewState); 63 | void BKP_SetRTCCalibrationValue(u8 CalibrationValue); 64 | void BKP_WriteBackupRegister(u16 BKP_DR, u16 Data); 65 | u16 BKP_ReadBackupRegister(u16 BKP_DR); 66 | FlagStatus BKP_GetFlagStatus(void); 67 | void BKP_ClearFlag(void); 68 | ITStatus BKP_GetITStatus(void); 69 | void BKP_ClearITPendingBit(void); 70 | 71 | #endif /* __STM32F10x_BKP_H */ 72 | 73 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 74 | -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/stm32f10x_conf.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : stm32f10x_conf.h 3 | * Author : MCD Application Team 4 | * Version : V2.0.1 5 | * Date : 06/13/2008 6 | * Description : Library configuration file. 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __STM32F10x_CONF_H 18 | #define __STM32F10x_CONF_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | #include "stm32f10x_type.h" 22 | 23 | /* Exported types ------------------------------------------------------------*/ 24 | /* Exported constants --------------------------------------------------------*/ 25 | /* Uncomment the line below to compile the library in DEBUG mode, this will expanse 26 | the "assert_param" macro in the firmware library code (see "Exported macro" 27 | section below) */ 28 | /* #define DEBUG 1*/ 29 | 30 | /* Comment the line below to disable the specific peripheral inclusion */ 31 | /************************************* BKP ************************************/ 32 | #define _BKP 33 | 34 | /************************************* CAN ************************************/ 35 | #define _CAN 36 | 37 | /************************************* CRC ************************************/ 38 | #define _CRC 39 | 40 | /************************************* DAC ************************************/ 41 | #define _DAC 42 | 43 | /************************************* DBGMCU *********************************/ 44 | #define _DBGMCU 45 | 46 | /************************************* DMA ************************************/ 47 | #define _DMA 48 | #define _DMA1_Channel1 49 | #define _DMA1_Channel2 50 | #define _DMA1_Channel3 51 | #define _DMA1_Channel4 52 | #define _DMA1_Channel5 53 | #define _DMA1_Channel6 54 | #define _DMA1_Channel7 55 | #define _DMA2_Channel1 56 | #define _DMA2_Channel2 57 | #define _DMA2_Channel3 58 | #define _DMA2_Channel4 59 | #define _DMA2_Channel5 60 | 61 | /************************************* EXTI ***********************************/ 62 | #define _EXTI 63 | 64 | /************************************* FLASH and Option Bytes *****************/ 65 | #define _FLASH 66 | /* Uncomment the line below to enable FLASH program/erase/protections functions, 67 | otherwise only FLASH configuration (latency, prefetch, half cycle) functions 68 | are enabled */ 69 | #define _FLASH_PROG 70 | 71 | /************************************* FSMC ***********************************/ 72 | #define _FSMC 73 | 74 | /************************************* GPIO ***********************************/ 75 | #define _GPIO 76 | #define _GPIOA 77 | #define _GPIOB 78 | #define _GPIOC 79 | #define _GPIOD 80 | #define _GPIOE 81 | #define _GPIOF 82 | #define _GPIOG 83 | #define _AFIO 84 | 85 | /************************************* I2C ************************************/ 86 | #define _I2C 87 | #define _I2C1 88 | #define _I2C2 89 | 90 | /************************************* IWDG ***********************************/ 91 | #define _IWDG 92 | 93 | /************************************* NVIC ***********************************/ 94 | #define _NVIC 95 | 96 | /************************************* PWR ************************************/ 97 | #define _PWR 98 | 99 | /************************************* RCC ************************************/ 100 | #define _RCC 101 | 102 | /************************************* RTC ************************************/ 103 | #define _RTC 104 | 105 | /************************************* SDIO ***********************************/ 106 | #define _SDIO 107 | 108 | /************************************* SPI ************************************/ 109 | #define _SPI 110 | #define _SPI1 111 | #define _SPI2 112 | #define _SPI3 113 | 114 | /************************************* SysTick ********************************/ 115 | #define _SysTick 116 | 117 | /************************************* TIM ************************************/ 118 | #define _TIM 119 | #define _TIM1 120 | #define _TIM2 121 | #define _TIM3 122 | #define _TIM4 123 | #define _TIM5 124 | #define _TIM6 125 | #define _TIM7 126 | #define _TIM8 127 | 128 | /************************************* USART **********************************/ 129 | #define _USART 130 | #define _USART1 131 | #define _USART2 132 | #define _USART3 133 | #define _UART4 134 | #define _UART5 135 | 136 | /************************************* WWDG ***********************************/ 137 | #define _WWDG 138 | 139 | /* In the following line adjust the value of External High Speed oscillator (HSE) 140 | used in your application */ 141 | #define HSE_Value ((u32)8000000) /* Value of the External oscillator in Hz*/ 142 | 143 | /* Exported macro ------------------------------------------------------------*/ 144 | #ifdef DEBUG 145 | /******************************************************************************* 146 | * Macro Name : assert_param 147 | * Description : The assert_param macro is used for function's parameters check. 148 | * It is used only if the library is compiled in DEBUG mode. 149 | * Input : - expr: If expr is false, it calls assert_failed function 150 | * which reports the name of the source file and the source 151 | * line number of the call that failed. 152 | * If expr is true, it returns no value. 153 | * Return : None 154 | *******************************************************************************/ 155 | #define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__)) 156 | /* Exported functions ------------------------------------------------------- */ 157 | void assert_failed(u8* file, u32 line); 158 | #else 159 | #define assert_param(expr) ((void)0) 160 | #endif /* DEBUG */ 161 | 162 | #endif /* __STM32F10x_CONF_H */ 163 | 164 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 165 | -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/stm32f10x_exti.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_exti.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * EXTI firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_EXTI_H 23 | #define __STM32F10x_EXTI_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* EXTI mode enumeration -----------------------------------------------------*/ 30 | typedef enum 31 | { 32 | EXTI_Mode_Interrupt = 0x00, 33 | EXTI_Mode_Event = 0x04 34 | }EXTIMode_TypeDef; 35 | 36 | #define IS_EXTI_MODE(MODE) ((MODE == EXTI_Mode_Interrupt) || (MODE == EXTI_Mode_Event)) 37 | 38 | /* EXTI Trigger enumeration --------------------------------------------------*/ 39 | typedef enum 40 | { 41 | EXTI_Trigger_Rising = 0x08, 42 | EXTI_Trigger_Falling = 0x0C, 43 | EXTI_Trigger_Rising_Falling = 0x10 44 | }EXTITrigger_TypeDef; 45 | 46 | #define IS_EXTI_TRIGGER(TRIGGER) ((TRIGGER == EXTI_Trigger_Rising) || \ 47 | (TRIGGER == EXTI_Trigger_Falling) || \ 48 | (TRIGGER == EXTI_Trigger_Rising_Falling)) 49 | 50 | /* EXTI Init Structure definition --------------------------------------------*/ 51 | typedef struct 52 | { 53 | u32 EXTI_Line; 54 | EXTIMode_TypeDef EXTI_Mode; 55 | EXTITrigger_TypeDef EXTI_Trigger; 56 | FunctionalState EXTI_LineCmd; 57 | }EXTI_InitTypeDef; 58 | 59 | /* Exported constants --------------------------------------------------------*/ 60 | /* EXTI Lines ----------------------------------------------------------------*/ 61 | #define EXTI_Line0 ((u32)0x00001) /* External interrupt line 0 */ 62 | #define EXTI_Line1 ((u32)0x00002) /* External interrupt line 1 */ 63 | #define EXTI_Line2 ((u32)0x00004) /* External interrupt line 2 */ 64 | #define EXTI_Line3 ((u32)0x00008) /* External interrupt line 3 */ 65 | #define EXTI_Line4 ((u32)0x00010) /* External interrupt line 4 */ 66 | #define EXTI_Line5 ((u32)0x00020) /* External interrupt line 5 */ 67 | #define EXTI_Line6 ((u32)0x00040) /* External interrupt line 6 */ 68 | #define EXTI_Line7 ((u32)0x00080) /* External interrupt line 7 */ 69 | #define EXTI_Line8 ((u32)0x00100) /* External interrupt line 8 */ 70 | #define EXTI_Line9 ((u32)0x00200) /* External interrupt line 9 */ 71 | #define EXTI_Line10 ((u32)0x00400) /* External interrupt line 10 */ 72 | #define EXTI_Line11 ((u32)0x00800) /* External interrupt line 11 */ 73 | #define EXTI_Line12 ((u32)0x01000) /* External interrupt line 12 */ 74 | #define EXTI_Line13 ((u32)0x02000) /* External interrupt line 13 */ 75 | #define EXTI_Line14 ((u32)0x04000) /* External interrupt line 14 */ 76 | #define EXTI_Line15 ((u32)0x08000) /* External interrupt line 15 */ 77 | #define EXTI_Line16 ((u32)0x10000) /* External interrupt line 16 78 | Connected to the PVD Output */ 79 | #define EXTI_Line17 ((u32)0x20000) /* External interrupt line 17 80 | Connected to the RTC Alarm event */ 81 | #define EXTI_Line18 ((u32)0x40000) /* External interrupt line 18 82 | Connected to the USB Wakeup from 83 | suspend event */ 84 | 85 | #define IS_EXTI_LINE(LINE) (((LINE & (u32)0xFFF80000) == 0x00) && (LINE != (u16)0x00)) 86 | 87 | #define IS_GET_EXTI_LINE(LINE) ((LINE == EXTI_Line0) || (LINE == EXTI_Line1) || \ 88 | (LINE == EXTI_Line2) || (LINE == EXTI_Line3) || \ 89 | (LINE == EXTI_Line4) || (LINE == EXTI_Line5) || \ 90 | (LINE == EXTI_Line6) || (LINE == EXTI_Line7) || \ 91 | (LINE == EXTI_Line8) || (LINE == EXTI_Line9) || \ 92 | (LINE == EXTI_Line10) || (LINE == EXTI_Line11) || \ 93 | (LINE == EXTI_Line12) || (LINE == EXTI_Line13) || \ 94 | (LINE == EXTI_Line14) || (LINE == EXTI_Line15) || \ 95 | (LINE == EXTI_Line16) || (LINE == EXTI_Line17) || \ 96 | (LINE == EXTI_Line18)) 97 | 98 | /* Exported macro ------------------------------------------------------------*/ 99 | /* Exported functions ------------------------------------------------------- */ 100 | void EXTI_DeInit(void); 101 | void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct); 102 | void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct); 103 | void EXTI_GenerateSWInterrupt(u32 EXTI_Line); 104 | FlagStatus EXTI_GetFlagStatus(u32 EXTI_Line); 105 | void EXTI_ClearFlag(u32 EXTI_Line); 106 | ITStatus EXTI_GetITStatus(u32 EXTI_Line); 107 | void EXTI_ClearITPendingBit(u32 EXTI_Line); 108 | 109 | #endif /* __STM32F10x_EXTI_H */ 110 | 111 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 112 | -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/stm32f10x_it.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_it.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains the headers of the interrupt handlers. 6 | ******************************************************************************** 7 | * History: 8 | * mm/dd/yyyy: V0.1 9 | * 09/29/2006: V0.01 10 | ******************************************************************************** 11 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 12 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 13 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 14 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 15 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 16 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 17 | *******************************************************************************/ 18 | 19 | /* Define to prevent recursive inclusion -------------------------------------*/ 20 | #ifndef __STM32F10x_IT_H 21 | #define __STM32F10x_IT_H 22 | 23 | /* Includes ------------------------------------------------------------------*/ 24 | #include "stm32f10x_lib.h" 25 | 26 | /* Exported types ------------------------------------------------------------*/ 27 | /* Exported constants --------------------------------------------------------*/ 28 | /* Exported macro ------------------------------------------------------------*/ 29 | /* Exported functions ------------------------------------------------------- */ 30 | 31 | void NMIException(void); 32 | void HardFaultException(void); 33 | void MemManageException(void); 34 | void BusFaultException(void); 35 | void UsageFaultException(void); 36 | void DebugMonitor(void); 37 | void SVCHandler(void); 38 | void PendSVC(void); 39 | void SysTickHandler(void); 40 | void WWDG_IRQHandler(void); 41 | void PVD_IRQHandler(void); 42 | void TAMPER_IRQHandler(void); 43 | void RTC_IRQHandler(void); 44 | void FLASH_IRQHandler(void); 45 | void RCC_IRQHandler(void); 46 | void EXTI0_IRQHandler(void); 47 | void EXTI1_IRQHandler(void); 48 | void EXTI2_IRQHandler(void); 49 | void EXTI3_IRQHandler(void); 50 | void EXTI4_IRQHandler(void); 51 | void DMAChannel1_IRQHandler(void); 52 | void DMAChannel2_IRQHandler(void); 53 | void DMAChannel3_IRQHandler(void); 54 | void DMAChannel4_IRQHandler(void); 55 | void DMAChannel5_IRQHandler(void); 56 | void DMAChannel6_IRQHandler(void); 57 | void DMAChannel7_IRQHandler(void); 58 | void ADC_IRQHandler(void); 59 | void USB_HP_CAN_TX_IRQHandler(void); 60 | void USB_LP_CAN_RX0_IRQHandler(void); 61 | void CAN_RX1_IRQHandler(void); 62 | void CAN_SCE_IRQHandler(void); 63 | void EXTI9_5_IRQHandler(void); 64 | void TIM1_BRK_IRQHandler(void); 65 | void TIM1_UP_IRQHandler(void); 66 | void TIM1_TRG_COM_IRQHandler(void); 67 | void TIM1_CC_IRQHandler(void); 68 | void TIM2_IRQHandler(void); 69 | void TIM3_IRQHandler(void); 70 | void TIM4_IRQHandler(void); 71 | void I2C1_EV_IRQHandler(void); 72 | void I2C1_ER_IRQHandler(void); 73 | void I2C2_EV_IRQHandler(void); 74 | void I2C2_ER_IRQHandler(void); 75 | void SPI1_IRQHandler(void); 76 | void SPI2_IRQHandler(void); 77 | void USART1_IRQHandler(void); 78 | void USART2_IRQHandler(void); 79 | void USART3_IRQHandler(void); 80 | void EXTI15_10_IRQHandler(void); 81 | void RTCAlarm_IRQHandler(void); 82 | void USBWakeUp_IRQHandler(void); 83 | 84 | #endif /* __STM32F10x_IT_H */ 85 | 86 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 87 | -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/stm32f10x_iwdg.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_iwdg.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * IWDG firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_IWDG_H 23 | #define __STM32F10x_IWDG_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* Exported constants --------------------------------------------------------*/ 30 | /* Write access to IWDG_PR and IWDG_RLR registers */ 31 | #define IWDG_WriteAccess_Enable ((u16)0x5555) 32 | #define IWDG_WriteAccess_Disable ((u16)0x0000) 33 | 34 | #define IS_IWDG_WRITE_ACCESS(ACCESS) ((ACCESS == IWDG_WriteAccess_Enable) || \ 35 | (ACCESS == IWDG_WriteAccess_Disable)) 36 | 37 | /* IWDG prescaler */ 38 | #define IWDG_Prescaler_4 ((u8)0x00) 39 | #define IWDG_Prescaler_8 ((u8)0x01) 40 | #define IWDG_Prescaler_16 ((u8)0x02) 41 | #define IWDG_Prescaler_32 ((u8)0x03) 42 | #define IWDG_Prescaler_64 ((u8)0x04) 43 | #define IWDG_Prescaler_128 ((u8)0x05) 44 | #define IWDG_Prescaler_256 ((u8)0x06) 45 | 46 | #define IS_IWDG_PRESCALER(PRESCALER) ((PRESCALER == IWDG_Prescaler_4) || \ 47 | (PRESCALER == IWDG_Prescaler_8) || \ 48 | (PRESCALER == IWDG_Prescaler_16) || \ 49 | (PRESCALER == IWDG_Prescaler_32) || \ 50 | (PRESCALER == IWDG_Prescaler_64) || \ 51 | (PRESCALER == IWDG_Prescaler_128)|| \ 52 | (PRESCALER == IWDG_Prescaler_256)) 53 | 54 | /* IWDG Flag */ 55 | #define IWDG_FLAG_PVU ((u16)0x0001) 56 | #define IWDG_FLAG_RVU ((u16)0x0002) 57 | 58 | #define IS_IWDG_FLAG(FLAG) ((FLAG == IWDG_FLAG_PVU) || (FLAG == IWDG_FLAG_RVU)) 59 | 60 | #define IS_IWDG_RELOAD(RELOAD) (RELOAD <= 0xFFF) 61 | 62 | /* Exported macro ------------------------------------------------------------*/ 63 | /* Exported functions ------------------------------------------------------- */ 64 | void IWDG_WriteAccessCmd(u16 IWDG_WriteAccess); 65 | void IWDG_SetPrescaler(u8 IWDG_Prescaler); 66 | void IWDG_SetReload(u16 Reload); 67 | void IWDG_ReloadCounter(void); 68 | void IWDG_Enable(void); 69 | FlagStatus IWDG_GetFlagStatus(u16 IWDG_FLAG); 70 | 71 | #endif /* __STM32F10x_IWDG_H */ 72 | 73 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 74 | -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/stm32f10x_lib.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_lib.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file includes the peripherals header files in the 6 | * user application. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_LIB_H 23 | #define __STM32F10x_LIB_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | #ifdef _ADC 29 | #include "stm32f10x_adc.h" 30 | #endif /*_ADC */ 31 | 32 | #ifdef _BKP 33 | #include "stm32f10x_bkp.h" 34 | #endif /*_BKP */ 35 | 36 | #ifdef _CAN 37 | #include "stm32f10x_can.h" 38 | #endif /*_CAN */ 39 | 40 | #ifdef _DMA 41 | #include "stm32f10x_dma.h" 42 | #endif /*_DMA */ 43 | 44 | #ifdef _EXTI 45 | #include "stm32f10x_exti.h" 46 | #endif /*_EXTI */ 47 | 48 | #ifdef _FLASH 49 | #include "stm32f10x_flash.h" 50 | #endif /*_FLASH */ 51 | 52 | #ifdef _GPIO 53 | #include "stm32f10x_gpio.h" 54 | #endif /*_GPIO */ 55 | 56 | #ifdef _I2C 57 | #include "stm32f10x_i2c.h" 58 | #endif /*_I2C */ 59 | 60 | #ifdef _IWDG 61 | #include "stm32f10x_iwdg.h" 62 | #endif /*_IWDG */ 63 | 64 | #ifdef _NVIC 65 | #include "stm32f10x_nvic.h" 66 | #endif /*_NVIC */ 67 | 68 | #ifdef _PWR 69 | #include "stm32f10x_pwr.h" 70 | #endif /*_PWR */ 71 | 72 | #ifdef _RCC 73 | #include "stm32f10x_rcc.h" 74 | #endif /*_RCC */ 75 | 76 | #ifdef _RTC 77 | #include "stm32f10x_rtc.h" 78 | #endif /*_RTC */ 79 | 80 | #ifdef _SPI 81 | #include "stm32f10x_spi.h" 82 | #endif /*_SPI */ 83 | 84 | #ifdef _SysTick 85 | #include "stm32f10x_systick.h" 86 | #endif /*_SysTick */ 87 | 88 | #ifdef _TIM1 89 | #include "stm32f10x_tim1.h" 90 | #endif /*_TIM1 */ 91 | 92 | #ifdef _TIM 93 | #include "stm32f10x_tim.h" 94 | #endif /*_TIM */ 95 | 96 | #ifdef _USART 97 | #include "stm32f10x_usart.h" 98 | #endif /*_USART */ 99 | 100 | #ifdef _WWDG 101 | #include "stm32f10x_wwdg.h" 102 | #endif /*_WWDG */ 103 | 104 | /* Exported types ------------------------------------------------------------*/ 105 | /* Exported constants --------------------------------------------------------*/ 106 | /* Exported macro ------------------------------------------------------------*/ 107 | /* Exported functions ------------------------------------------------------- */ 108 | void debug(void); 109 | 110 | #endif /* __STM32F10x_LIB_H */ 111 | 112 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 113 | -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/stm32f10x_pwr.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_pwr.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * PWR firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_PWR_H 23 | #define __STM32F10x_PWR_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* Exported constants --------------------------------------------------------*/ 30 | /* PVD detection level */ 31 | #define PWR_PVDLevel_2V2 ((u32)0x00000000) 32 | #define PWR_PVDLevel_2V3 ((u32)0x00000020) 33 | #define PWR_PVDLevel_2V4 ((u32)0x00000040) 34 | #define PWR_PVDLevel_2V5 ((u32)0x00000060) 35 | #define PWR_PVDLevel_2V6 ((u32)0x00000080) 36 | #define PWR_PVDLevel_2V7 ((u32)0x000000A0) 37 | #define PWR_PVDLevel_2V8 ((u32)0x000000C0) 38 | #define PWR_PVDLevel_2V9 ((u32)0x000000E0) 39 | 40 | #define IS_PWR_PVD_LEVEL(LEVEL) ((LEVEL == PWR_PVDLevel_2V2) || (LEVEL == PWR_PVDLevel_2V3)|| \ 41 | (LEVEL == PWR_PVDLevel_2V4) || (LEVEL == PWR_PVDLevel_2V5)|| \ 42 | (LEVEL == PWR_PVDLevel_2V6) || (LEVEL == PWR_PVDLevel_2V7)|| \ 43 | (LEVEL == PWR_PVDLevel_2V8) || (LEVEL == PWR_PVDLevel_2V9)) 44 | 45 | /* Regulator state is STOP mode */ 46 | #define PWR_Regulator_ON ((u32)0x00000000) 47 | #define PWR_Regulator_LowPower ((u32)0x00000001) 48 | 49 | #define IS_PWR_REGULATOR(REGULATOR) ((REGULATOR == PWR_Regulator_ON) || \ 50 | (REGULATOR == PWR_Regulator_LowPower)) 51 | 52 | /* STOP mode entry */ 53 | #define PWR_STOPEntry_WFI ((u8)0x01) 54 | #define PWR_STOPEntry_WFE ((u8)0x02) 55 | 56 | #define IS_PWR_STOP_ENTRY(ENTRY) ((ENTRY == PWR_STOPEntry_WFI) || (ENTRY == PWR_STOPEntry_WFE)) 57 | 58 | /* PWR Flag */ 59 | #define PWR_FLAG_WU ((u32)0x00000001) 60 | #define PWR_FLAG_SB ((u32)0x00000002) 61 | #define PWR_FLAG_PVDO ((u32)0x00000004) 62 | 63 | #define IS_PWR_GET_FLAG(FLAG) ((FLAG == PWR_FLAG_WU) || (FLAG == PWR_FLAG_SB) || \ 64 | (FLAG == PWR_FLAG_PVDO)) 65 | #define IS_PWR_CLEAR_FLAG(FLAG) ((FLAG == PWR_FLAG_WU) || (FLAG == PWR_FLAG_SB)) 66 | 67 | /* Exported macro ------------------------------------------------------------*/ 68 | /* Exported functions ------------------------------------------------------- */ 69 | void PWR_DeInit(void); 70 | void PWR_BackupAccessCmd(FunctionalState NewState); 71 | void PWR_PVDCmd(FunctionalState NewState); 72 | void PWR_PVDLevelConfig(u32 PWR_PVDLevel); 73 | void PWR_WakeUpPinCmd(FunctionalState NewState); 74 | void PWR_EnterSTOPMode(u32 PWR_Regulator, u8 PWR_STOPEntry); 75 | void PWR_EnterSTANDBYMode(void); 76 | FlagStatus PWR_GetFlagStatus(u32 PWR_FLAG); 77 | void PWR_ClearFlag(u32 PWR_FLAG); 78 | 79 | #endif /* __STM32F10x_PWR_H */ 80 | 81 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 82 | -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/stm32f10x_rtc.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_rtc.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * RTC firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_RTC_H 23 | #define __STM32F10x_RTC_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* Exported constants --------------------------------------------------------*/ 30 | /* RTC interrupts define -----------------------------------------------------*/ 31 | #define RTC_IT_OW ((u16)0x0004) /* Overflow interrupt */ 32 | #define RTC_IT_ALR ((u16)0x0002) /* Alarm interrupt */ 33 | #define RTC_IT_SEC ((u16)0x0001) /* Second interrupt */ 34 | 35 | #define IS_RTC_IT(IT) (((IT & (u16)0xFFF8) == 0x00) && (IT != 0x00)) 36 | 37 | #define IS_RTC_GET_IT(IT) ((IT == RTC_IT_OW) || (IT == RTC_IT_ALR) || \ 38 | (IT == RTC_IT_SEC)) 39 | 40 | /* RTC interrupts flags ------------------------------------------------------*/ 41 | #define RTC_FLAG_RTOFF ((u16)0x0020) /* RTC Operation OFF flag */ 42 | #define RTC_FLAG_RSF ((u16)0x0008) /* Registers Synchronized flag */ 43 | #define RTC_FLAG_OW ((u16)0x0004) /* Overflow flag */ 44 | #define RTC_FLAG_ALR ((u16)0x0002) /* Alarm flag */ 45 | #define RTC_FLAG_SEC ((u16)0x0001) /* Second flag */ 46 | 47 | #define IS_RTC_CLEAR_FLAG(FLAG) (((FLAG & (u16)0xFFF0) == 0x00) && (FLAG != 0x00)) 48 | 49 | #define IS_RTC_GET_FLAG(FLAG) ((FLAG == RTC_FLAG_RTOFF) || (FLAG == RTC_FLAG_RSF) || \ 50 | (FLAG == RTC_FLAG_OW) || (FLAG == RTC_FLAG_ALR) || \ 51 | (FLAG == RTC_FLAG_SEC)) 52 | 53 | #define IS_RTC_PRESCALER(PRESCALER) (PRESCALER <= 0xFFFFF) 54 | 55 | /* Exported macro ------------------------------------------------------------*/ 56 | /* Exported functions ------------------------------------------------------- */ 57 | void RTC_ITConfig(u16 RTC_IT, FunctionalState NewState); 58 | void RTC_EnterConfigMode(void); 59 | void RTC_ExitConfigMode(void); 60 | u32 RTC_GetCounter(void); 61 | void RTC_SetCounter(u32 CounterValue); 62 | u32 RTC_GetPrescaler(void); 63 | void RTC_SetPrescaler(u32 PrescalerValue); 64 | void RTC_SetAlarm(u32 AlarmValue); 65 | u32 RTC_GetDivider(void); 66 | void RTC_WaitForLastTask(void); 67 | void RTC_WaitForSynchro(void); 68 | FlagStatus RTC_GetFlagStatus(u16 RTC_FLAG); 69 | void RTC_ClearFlag(u16 RTC_FLAG); 70 | ITStatus RTC_GetITStatus(u16 RTC_IT); 71 | void RTC_ClearITPendingBit(u16 RTC_IT); 72 | 73 | #endif /* __STM32F10x_RTC_H */ 74 | 75 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 76 | -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/stm32f10x_spi.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_spi.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * SPI firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_SPI_H 23 | #define __STM32F10x_SPI_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* SPI Init structure definition */ 30 | typedef struct 31 | { 32 | u16 SPI_Direction; 33 | u16 SPI_Mode; 34 | u16 SPI_DataSize; 35 | u16 SPI_CPOL; 36 | u16 SPI_CPHA; 37 | u16 SPI_NSS; 38 | u16 SPI_BaudRatePrescaler; 39 | u16 SPI_FirstBit; 40 | u16 SPI_CRCPolynomial; 41 | }SPI_InitTypeDef; 42 | 43 | /* Exported constants --------------------------------------------------------*/ 44 | /* SPI data direction mode */ 45 | #define SPI_Direction_2Lines_FullDuplex ((u16)0x0000) 46 | #define SPI_Direction_2Lines_RxOnly ((u16)0x0400) 47 | #define SPI_Direction_1Line_Rx ((u16)0x8000) 48 | #define SPI_Direction_1Line_Tx ((u16)0xC000) 49 | 50 | #define IS_SPI_DIRECTION_MODE(MODE) ((MODE == SPI_Direction_2Lines_FullDuplex) || \ 51 | (MODE == SPI_Direction_2Lines_RxOnly) || \ 52 | (MODE == SPI_Direction_1Line_Rx) || \ 53 | (MODE == SPI_Direction_1Line_Tx)) 54 | 55 | /* SPI master/slave mode */ 56 | #define SPI_Mode_Master ((u16)0x0104) 57 | #define SPI_Mode_Slave ((u16)0x0000) 58 | 59 | #define IS_SPI_MODE(MODE) ((MODE == SPI_Mode_Master) || \ 60 | (MODE == SPI_Mode_Slave)) 61 | 62 | /* SPI data size */ 63 | #define SPI_DataSize_16b ((u16)0x0800) 64 | #define SPI_DataSize_8b ((u16)0x0000) 65 | 66 | #define IS_SPI_DATASIZE(DATASIZE) ((DATASIZE == SPI_DataSize_16b) || \ 67 | (DATASIZE == SPI_DataSize_8b)) 68 | 69 | /* SPI Clock Polarity */ 70 | #define SPI_CPOL_Low ((u16)0x0000) 71 | #define SPI_CPOL_High ((u16)0x0002) 72 | 73 | #define IS_SPI_CPOL(CPOL) ((CPOL == SPI_CPOL_Low) || \ 74 | (CPOL == SPI_CPOL_High)) 75 | 76 | /* SPI Clock Phase */ 77 | #define SPI_CPHA_1Edge ((u16)0x0000) 78 | #define SPI_CPHA_2Edge ((u16)0x0001) 79 | 80 | #define IS_SPI_CPHA(CPHA) ((CPHA == SPI_CPHA_1Edge) || \ 81 | (CPHA == SPI_CPHA_2Edge)) 82 | 83 | /* SPI Slave Select management */ 84 | #define SPI_NSS_Soft ((u16)0x0200) 85 | #define SPI_NSS_Hard ((u16)0x0000) 86 | 87 | #define IS_SPI_NSS(NSS) ((NSS == SPI_NSS_Soft) || \ 88 | (NSS == SPI_NSS_Hard)) 89 | 90 | /* SPI BaudRate Prescaler */ 91 | #define SPI_BaudRatePrescaler_2 ((u16)0x0000) 92 | #define SPI_BaudRatePrescaler_4 ((u16)0x0008) 93 | #define SPI_BaudRatePrescaler_8 ((u16)0x0010) 94 | #define SPI_BaudRatePrescaler_16 ((u16)0x0018) 95 | #define SPI_BaudRatePrescaler_32 ((u16)0x0020) 96 | #define SPI_BaudRatePrescaler_64 ((u16)0x0028) 97 | #define SPI_BaudRatePrescaler_128 ((u16)0x0030) 98 | #define SPI_BaudRatePrescaler_256 ((u16)0x0038) 99 | 100 | #define IS_SPI_BAUDRATE_PRESCALER(PRESCALER) ((PRESCALER == SPI_BaudRatePrescaler_2) || \ 101 | (PRESCALER == SPI_BaudRatePrescaler_4) || \ 102 | (PRESCALER == SPI_BaudRatePrescaler_8) || \ 103 | (PRESCALER == SPI_BaudRatePrescaler_16) || \ 104 | (PRESCALER == SPI_BaudRatePrescaler_32) || \ 105 | (PRESCALER == SPI_BaudRatePrescaler_64) || \ 106 | (PRESCALER == SPI_BaudRatePrescaler_128) || \ 107 | (PRESCALER == SPI_BaudRatePrescaler_256)) 108 | 109 | /* SPI MSB/LSB transmission */ 110 | #define SPI_FirstBit_MSB ((u16)0x0000) 111 | #define SPI_FirstBit_LSB ((u16)0x0080) 112 | 113 | #define IS_SPI_FIRST_BIT(BIT) ((BIT == SPI_FirstBit_MSB) || \ 114 | (BIT == SPI_FirstBit_LSB)) 115 | 116 | /* SPI DMA transfer requests */ 117 | #define SPI_DMAReq_Tx ((u16)0x0002) 118 | #define SPI_DMAReq_Rx ((u16)0x0001) 119 | 120 | #define IS_SPI_DMA_REQ(REQ) (((REQ & (u16)0xFFFC) == 0x00) && (REQ != 0x00)) 121 | 122 | /* SPI NSS internal software mangement */ 123 | #define SPI_NSSInternalSoft_Set ((u16)0x0100) 124 | #define SPI_NSSInternalSoft_Reset ((u16)0xFEFF) 125 | 126 | #define IS_SPI_NSS_INTERNAL(INTERNAL) ((INTERNAL == SPI_NSSInternalSoft_Set) || \ 127 | (INTERNAL == SPI_NSSInternalSoft_Reset)) 128 | 129 | /* SPI CRC Transmit/Receive */ 130 | #define SPI_CRC_Tx ((u8)0x00) 131 | #define SPI_CRC_Rx ((u8)0x01) 132 | 133 | #define IS_SPI_CRC(CRC) ((CRC == SPI_CRC_Tx) || (CRC == SPI_CRC_Rx)) 134 | 135 | /* SPI direction transmit/receive */ 136 | #define SPI_Direction_Rx ((u16)0xBFFF) 137 | #define SPI_Direction_Tx ((u16)0x4000) 138 | 139 | #define IS_SPI_DIRECTION(DIRECTION) ((DIRECTION == SPI_Direction_Rx) || \ 140 | (DIRECTION == SPI_Direction_Tx)) 141 | 142 | /* SPI interrupts definition */ 143 | #define SPI_IT_TXE ((u8)0x71) 144 | #define SPI_IT_RXNE ((u8)0x60) 145 | #define SPI_IT_ERR ((u8)0x50) 146 | 147 | #define IS_SPI_CONFIG_IT(IT) ((IT == SPI_IT_TXE) || (IT == SPI_IT_RXNE) || \ 148 | (IT == SPI_IT_ERR)) 149 | 150 | #define SPI_IT_OVR ((u8)0x56) 151 | #define SPI_IT_MODF ((u8)0x55) 152 | #define SPI_IT_CRCERR ((u8)0x54) 153 | 154 | #define IS_SPI_CLEAR_IT(IT) ((IT == SPI_IT_OVR) || (IT == SPI_IT_MODF) || \ 155 | (IT == SPI_IT_CRCERR)) 156 | 157 | #define IS_SPI_GET_IT(IT) ((IT == SPI_IT_TXE) || (IT == SPI_IT_RXNE) || \ 158 | (IT == SPI_IT_OVR) || (IT == SPI_IT_MODF) || \ 159 | (IT == SPI_IT_CRCERR)) 160 | 161 | /* SPI flags definition */ 162 | #define SPI_FLAG_RXNE ((u16)0x0001) 163 | #define SPI_FLAG_TXE ((u16)0x0002) 164 | #define SPI_FLAG_CRCERR ((u16)0x0010) 165 | #define SPI_FLAG_MODF ((u16)0x0020) 166 | #define SPI_FLAG_OVR ((u16)0x0040) 167 | #define SPI_FLAG_BSY ((u16)0x0080) 168 | 169 | #define IS_SPI_CLEAR_FLAG(FLAG) (((FLAG & (u16)0xFF8F) == 0x00) && (FLAG != 0x00)) 170 | #define IS_SPI_GET_FLAG(FLAG) ((FLAG == SPI_FLAG_BSY) || (FLAG == SPI_FLAG_OVR) || \ 171 | (FLAG == SPI_FLAG_MODF) || (FLAG == SPI_FLAG_CRCERR) || \ 172 | (FLAG == SPI_FLAG_TXE) || (FLAG == SPI_FLAG_RXNE)) 173 | 174 | /* SPI CRC polynomial --------------------------------------------------------*/ 175 | #define IS_SPI_CRC_POLYNOMIAL(POLYNOMIAL) (POLYNOMIAL >= 0x1) 176 | 177 | /* Exported macro ------------------------------------------------------------*/ 178 | /* Exported functions ------------------------------------------------------- */ 179 | void SPI_DeInit(SPI_TypeDef* SPIx); 180 | void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct); 181 | void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct); 182 | void SPI_Cmd(SPI_TypeDef* SPIx, FunctionalState NewState); 183 | void SPI_ITConfig(SPI_TypeDef* SPIx, u8 SPI_IT, FunctionalState NewState); 184 | void SPI_DMACmd(SPI_TypeDef* SPIx, u16 SPI_DMAReq, FunctionalState NewState); 185 | void SPI_SendData(SPI_TypeDef* SPIx, u16 Data); 186 | u16 SPI_ReceiveData(SPI_TypeDef* SPIx); 187 | void SPI_NSSInternalSoftwareConfig(SPI_TypeDef* SPIx, u16 SPI_NSSInternalSoft); 188 | void SPI_SSOutputCmd(SPI_TypeDef* SPIx, FunctionalState NewState); 189 | void SPI_DataSizeConfig(SPI_TypeDef* SPIx, u16 SPI_DataSize); 190 | void SPI_TransmitCRC(SPI_TypeDef* SPIx); 191 | void SPI_CalculateCRC(SPI_TypeDef* SPIx, FunctionalState NewState); 192 | u16 SPI_GetCRC(SPI_TypeDef* SPIx, u8 SPI_CRC); 193 | u16 SPI_GetCRCPolynomial(SPI_TypeDef* SPIx); 194 | void SPI_BiDirectionalLineConfig(SPI_TypeDef* SPIx, u16 SPI_Direction); 195 | FlagStatus SPI_GetFlagStatus(SPI_TypeDef* SPIx, u16 SPI_FLAG); 196 | void SPI_ClearFlag(SPI_TypeDef* SPIx, u16 SPI_FLAG); 197 | ITStatus SPI_GetITStatus(SPI_TypeDef* SPIx, u8 SPI_IT); 198 | void SPI_ClearITPendingBit(SPI_TypeDef* SPIx, u8 SPI_IT); 199 | 200 | #endif /*__STM32F10x_SPI_H */ 201 | 202 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 203 | -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/stm32f10x_systick.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_systick.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * SysTick firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_SYSTICK_H 23 | #define __STM32F10x_SYSTICK_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* Exported constants --------------------------------------------------------*/ 30 | /* SysTick clock source */ 31 | #define SysTick_CLKSource_HCLK_Div8 ((u32)0xFFFFFFFB) 32 | #define SysTick_CLKSource_HCLK ((u32)0x00000004) 33 | 34 | #define IS_SYSTICK_CLK_SOURCE(SOURCE) ((SOURCE == SysTick_CLKSource_HCLK) || \ 35 | (SOURCE == SysTick_CLKSource_HCLK_Div8)) 36 | 37 | /* SysTick counter state */ 38 | #define SysTick_Counter_Disable ((u32)0xFFFFFFFE) 39 | #define SysTick_Counter_Enable ((u32)0x00000001) 40 | #define SysTick_Counter_Clear ((u32)0x00000000) 41 | 42 | #define IS_SYSTICK_COUNTER(COUNTER) ((COUNTER == SysTick_Counter_Disable) || \ 43 | (COUNTER == SysTick_Counter_Enable) || \ 44 | (COUNTER == SysTick_Counter_Clear)) 45 | 46 | /* SysTick Flag */ 47 | #define SysTick_FLAG_COUNT ((u8)0x30) 48 | #define SysTick_FLAG_SKEW ((u8)0x5E) 49 | #define SysTick_FLAG_NOREF ((u8)0x5F) 50 | 51 | #define IS_SYSTICK_FLAG(FLAG) ((FLAG == SysTick_FLAG_COUNT) || \ 52 | (FLAG == SysTick_FLAG_SKEW) || \ 53 | (FLAG == SysTick_FLAG_NOREF)) 54 | 55 | #define IS_SYSTICK_RELOAD(RELOAD) ((RELOAD > 0) || (RELOAD <= 0xFFFFFF)) 56 | 57 | /* Exported macro ------------------------------------------------------------*/ 58 | /* Exported functions ------------------------------------------------------- */ 59 | void SysTick_CLKSourceConfig(u32 SysTick_CLKSource); 60 | void SysTick_SetReload(u32 Reload); 61 | void SysTick_CounterCmd(u32 SysTick_Counter); 62 | void SysTick_ITConfig(FunctionalState NewState); 63 | u32 SysTick_GetCounter(void); 64 | FlagStatus SysTick_GetFlagStatus(u8 SysTick_FLAG); 65 | 66 | #endif /* __STM32F10x_SYSTICK_H */ 67 | 68 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 69 | -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/stm32f10x_type.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : stm32f10x_type.h 3 | * Author : MCD Application Team 4 | * Version : V2.0.1 5 | * Date : 06/13/2008 6 | * Description : This file contains all the common data types used for the 7 | * STM32F10x firmware library. 8 | ******************************************************************************** 9 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 10 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 11 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 12 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 13 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 14 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 15 | *******************************************************************************/ 16 | 17 | /* Define to prevent recursive inclusion -------------------------------------*/ 18 | #ifndef __STM32F10x_TYPE_H 19 | #define __STM32F10x_TYPE_H 20 | 21 | /* Includes ------------------------------------------------------------------*/ 22 | /* Exported types ------------------------------------------------------------*/ 23 | typedef signed long s32; 24 | typedef signed short s16; 25 | typedef signed char s8; 26 | 27 | typedef signed long const sc32; /* Read Only */ 28 | typedef signed short const sc16; /* Read Only */ 29 | typedef signed char const sc8; /* Read Only */ 30 | 31 | typedef volatile signed long vs32; 32 | typedef volatile signed short vs16; 33 | typedef volatile signed char vs8; 34 | 35 | typedef volatile signed long const vsc32; /* Read Only */ 36 | typedef volatile signed short const vsc16; /* Read Only */ 37 | typedef volatile signed char const vsc8; /* Read Only */ 38 | 39 | typedef unsigned long u32; 40 | typedef unsigned short u16; 41 | typedef unsigned char u8; 42 | 43 | typedef unsigned long const uc32; /* Read Only */ 44 | typedef unsigned short const uc16; /* Read Only */ 45 | typedef unsigned char const uc8; /* Read Only */ 46 | 47 | typedef volatile unsigned long vu32; 48 | typedef volatile unsigned short vu16; 49 | typedef volatile unsigned char vu8; 50 | 51 | typedef volatile unsigned long const vuc32; /* Read Only */ 52 | typedef volatile unsigned short const vuc16; /* Read Only */ 53 | typedef volatile unsigned char const vuc8; /* Read Only */ 54 | 55 | typedef enum {FALSE = 0, TRUE = !FALSE} bool; 56 | 57 | typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus; 58 | 59 | typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; 60 | #define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) 61 | 62 | typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus; 63 | 64 | #define U8_MAX ((u8)255) 65 | #define S8_MAX ((s8)127) 66 | #define S8_MIN ((s8)-128) 67 | #define U16_MAX ((u16)65535u) 68 | #define S16_MAX ((s16)32767) 69 | #define S16_MIN ((s16)-32768) 70 | #define U32_MAX ((u32)4294967295uL) 71 | #define S32_MAX ((s32)2147483647) 72 | #define S32_MIN ((s32)-2147483648) 73 | 74 | /* Exported constants --------------------------------------------------------*/ 75 | /* Exported macro ------------------------------------------------------------*/ 76 | /* Exported functions ------------------------------------------------------- */ 77 | 78 | #endif /* __STM32F10x_TYPE_H */ 79 | 80 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 81 | -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/stm32f10x_wwdg.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2007 STMicroelectronics ******************** 2 | * File Name : stm32f10x_wwdg.h 3 | * Author : MCD Application Team 4 | * Date First Issued : 09/29/2006 5 | * Description : This file contains all the functions prototypes for the 6 | * WWDG firmware library. 7 | ******************************************************************************** 8 | * History: 9 | * 04/02/2007: V0.2 10 | * 02/05/2007: V0.1 11 | * 09/29/2006: V0.01 12 | ******************************************************************************** 13 | * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 14 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 15 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 16 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 17 | * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 18 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 19 | *******************************************************************************/ 20 | 21 | /* Define to prevent recursive inclusion -------------------------------------*/ 22 | #ifndef __STM32F10x_WWDG_H 23 | #define __STM32F10x_WWDG_H 24 | 25 | /* Includes ------------------------------------------------------------------*/ 26 | #include "stm32f10x_map.h" 27 | 28 | /* Exported types ------------------------------------------------------------*/ 29 | /* Exported constants --------------------------------------------------------*/ 30 | /* WWDG Prescaler */ 31 | #define WWDG_Prescaler_1 ((u32)0x00000000) 32 | #define WWDG_Prescaler_2 ((u32)0x00000080) 33 | #define WWDG_Prescaler_4 ((u32)0x00000100) 34 | #define WWDG_Prescaler_8 ((u32)0x00000180) 35 | 36 | #define IS_WWDG_PRESCALER(PRESCALER) ((PRESCALER == WWDG_Prescaler_1) || \ 37 | (PRESCALER == WWDG_Prescaler_2) || \ 38 | (PRESCALER == WWDG_Prescaler_4) || \ 39 | (PRESCALER == WWDG_Prescaler_8)) 40 | 41 | #define IS_WWDG_WINDOW_VALUE(VALUE) (VALUE <= 0x7F) 42 | 43 | #define IS_WWDG_COUNTER(COUNTER) ((COUNTER >= 0x40) && (COUNTER <= 0x7F)) 44 | 45 | /* Exported macro ------------------------------------------------------------*/ 46 | /* Exported functions ------------------------------------------------------- */ 47 | void WWDG_DeInit(void); 48 | void WWDG_SetPrescaler(u32 WWDG_Prescaler); 49 | void WWDG_SetWindowValue(u8 WindowValue); 50 | void WWDG_EnableIT(void); 51 | void WWDG_SetCounter(u8 Counter); 52 | void WWDG_Enable(u8 Counter); 53 | FlagStatus WWDG_GetFlagStatus(void); 54 | void WWDG_ClearFlag(void); 55 | 56 | #endif /* __STM32F10x_WWDG_H */ 57 | 58 | /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/ 59 | -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/sys.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/SingleFile/SYSTEM/sys/sys.c -------------------------------------------------------------------------------- /SingleFile/SYSTEM/sys/sys.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/SingleFile/SYSTEM/sys/sys.h -------------------------------------------------------------------------------- /SingleFile/SYSTEM/usart/usart.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/SingleFile/SYSTEM/usart/usart.c -------------------------------------------------------------------------------- /SingleFile/SYSTEM/usart/usart.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/SingleFile/SYSTEM/usart/usart.h -------------------------------------------------------------------------------- /SingleFile/USB/USB_CH341.H: -------------------------------------------------------------------------------- 1 | //write by blackmiaool email:blackmiaool@gmail.com 2014.6.20 2 | #ifndef _USB_CH341_H_ 3 | #define _USB_CH341_H_ 4 | #include "stm32f10x_gpio.h" 5 | #include "stm32f10x_rcc.h" 6 | #include "stm32f10x_nvic.h" 7 | #include "stm32f10x_type.h" 8 | 9 | //migration part 10 | #define USB_DISCONNECT GPIOD //use PD0 to control connect 1.5k pull up resistor 11 | #define USB_DISCONNECT_PIN GPIO_Pin_0 12 | #define RCC_APB2Periph_GPIO_DISCONNECT RCC_APB2Periph_GPIOD 13 | #define RCC_DISCONNECT_CLK_CMD RCC_APB2PeriphClockCmd 14 | //migration end 15 | 16 | 17 | extern u16 ch341_baud; 18 | void USB_CH341_Init(void); 19 | void USB_Cable_Config (FunctionalState NewState); 20 | void USB_To_USART_Send_Data(u8* data_buffer, u8 Nb_bytes); 21 | void USART_To_USB_Send_Data(void); 22 | void USB_send(u8 *buf,u8 lenth); 23 | void USB_receive(const u8 *buf,u8 lenth); 24 | 25 | 26 | #endif//_USB_CH341_H_ 27 | 28 | -------------------------------------------------------------------------------- /SingleFile/USB/USB_CH341.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/SingleFile/USB/USB_CH341.c -------------------------------------------------------------------------------- /SingleFile/USER/stm32f10x_conf.h: -------------------------------------------------------------------------------- 1 | /******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** 2 | * File Name : stm32f10x_conf.h 3 | * Author : MCD Application Team 4 | * Version : V2.0.1 5 | * Date : 06/13/2008 6 | * Description : Library configuration file. 7 | ******************************************************************************** 8 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 9 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. 10 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, 11 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE 12 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING 13 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 14 | *******************************************************************************/ 15 | 16 | /* Define to prevent recursive inclusion -------------------------------------*/ 17 | #ifndef __STM32F10x_CONF_H 18 | #define __STM32F10x_CONF_H 19 | 20 | /* Includes ------------------------------------------------------------------*/ 21 | #include "stm32f10x_type.h" 22 | 23 | /* Exported types ------------------------------------------------------------*/ 24 | /* Exported constants --------------------------------------------------------*/ 25 | /* Uncomment the line below to compile the library in DEBUG mode, this will expanse 26 | the "assert_param" macro in the firmware library code (see "Exported macro" 27 | section below) */ 28 | /* #define DEBUG 1*/ 29 | 30 | /* Comment the line below to disable the specific peripheral inclusion */ 31 | /************************************* ADC ************************************/ 32 | #define _ADC 33 | #define _ADC1 34 | #define _ADC2 35 | #define _ADC3 36 | 37 | /************************************* BKP ************************************/ 38 | #define _BKP 39 | 40 | /************************************* CAN ************************************/ 41 | #define _CAN 42 | 43 | /************************************* CRC ************************************/ 44 | #define _CRC 45 | 46 | /************************************* DAC ************************************/ 47 | #define _DAC 48 | 49 | /************************************* DBGMCU *********************************/ 50 | #define _DBGMCU 51 | 52 | /************************************* DMA ************************************/ 53 | #define _DMA 54 | #define _DMA1_Channel1 55 | #define _DMA1_Channel2 56 | #define _DMA1_Channel3 57 | #define _DMA1_Channel4 58 | #define _DMA1_Channel5 59 | #define _DMA1_Channel6 60 | #define _DMA1_Channel7 61 | #define _DMA2_Channel1 62 | #define _DMA2_Channel2 63 | #define _DMA2_Channel3 64 | #define _DMA2_Channel4 65 | #define _DMA2_Channel5 66 | 67 | /************************************* EXTI ***********************************/ 68 | #define _EXTI 69 | 70 | /************************************* FLASH and Option Bytes *****************/ 71 | #define _FLASH 72 | /* Uncomment the line below to enable FLASH program/erase/protections functions, 73 | otherwise only FLASH configuration (latency, prefetch, half cycle) functions 74 | are enabled */ 75 | #define _FLASH_PROG 76 | 77 | /************************************* FSMC ***********************************/ 78 | #define _FSMC 79 | 80 | /************************************* GPIO ***********************************/ 81 | #define _GPIO 82 | #define _GPIOA 83 | #define _GPIOB 84 | #define _GPIOC 85 | #define _GPIOD 86 | #define _GPIOE 87 | #define _GPIOF 88 | #define _GPIOG 89 | #define _AFIO 90 | 91 | /************************************* I2C ************************************/ 92 | #define _I2C 93 | #define _I2C1 94 | #define _I2C2 95 | 96 | /************************************* IWDG ***********************************/ 97 | #define _IWDG 98 | 99 | /************************************* NVIC ***********************************/ 100 | #define _NVIC 101 | 102 | /************************************* PWR ************************************/ 103 | #define _PWR 104 | 105 | /************************************* RCC ************************************/ 106 | #define _RCC 107 | 108 | /************************************* RTC ************************************/ 109 | #define _RTC 110 | 111 | /************************************* SDIO ***********************************/ 112 | #define _SDIO 113 | 114 | /************************************* SPI ************************************/ 115 | #define _SPI 116 | #define _SPI1 117 | #define _SPI2 118 | #define _SPI3 119 | 120 | /************************************* SysTick ********************************/ 121 | #define _SysTick 122 | 123 | /************************************* TIM ************************************/ 124 | #define _TIM 125 | #define _TIM1 126 | #define _TIM2 127 | #define _TIM3 128 | #define _TIM4 129 | #define _TIM5 130 | #define _TIM6 131 | #define _TIM7 132 | #define _TIM8 133 | 134 | /************************************* USART **********************************/ 135 | #define _USART 136 | #define _USART1 137 | #define _USART2 138 | #define _USART3 139 | #define _UART4 140 | #define _UART5 141 | 142 | /************************************* WWDG ***********************************/ 143 | #define _WWDG 144 | 145 | /* In the following line adjust the value of External High Speed oscillator (HSE) 146 | used in your application */ 147 | #define HSE_Value ((u32)8000000) /* Value of the External oscillator in Hz*/ 148 | 149 | /* Exported macro ------------------------------------------------------------*/ 150 | #ifdef DEBUG 151 | /******************************************************************************* 152 | * Macro Name : assert_param 153 | * Description : The assert_param macro is used for function's parameters check. 154 | * It is used only if the library is compiled in DEBUG mode. 155 | * Input : - expr: If expr is false, it calls assert_failed function 156 | * which reports the name of the source file and the source 157 | * line number of the call that failed. 158 | * If expr is true, it returns no value. 159 | * Return : None 160 | *******************************************************************************/ 161 | #define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__)) 162 | /* Exported functions ------------------------------------------------------- */ 163 | void assert_failed(u8* file, u32 line); 164 | #else 165 | #define assert_param(expr) ((void)0) 166 | #endif /* DEBUG */ 167 | 168 | #endif /* __STM32F10x_CONF_H */ 169 | 170 | /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ 171 | -------------------------------------------------------------------------------- /SingleFile/USER/test.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/SingleFile/USER/test.c -------------------------------------------------------------------------------- /SingleFile/keilkilll.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/SingleFile/keilkilll.bat -------------------------------------------------------------------------------- /diagram.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/blackmiaool/STM32_USB_CH341/c17768955cee73f5bcb7bc4d3f76cad94d9e2341/diagram.jpg --------------------------------------------------------------------------------