stm32f0xx.pp 178 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178
  1. unit stm32f0xx;
  2. interface
  3. {$goto on}
  4. {$PACKRECORDS 2}
  5. //*
  6. //******************************************************************************
  7. //* @file stm32f0xx.h
  8. //* @author MCD Application Team
  9. //* @version V1.0.1
  10. //* @date 20-April-2012
  11. // CMSIS Cortex-M0 Device Peripheral Access Layer Header File.
  12. //* This file contains all the peripheral register's definitions, bits
  13. //* definitions and memory mapping for STM32F0xx devices.
  14. //*
  15. //* The file is the unique include file that the application programmer
  16. //* is using in the C source code, usually in main.c. This file contains:
  17. //* - Configuration section that allows to select:
  18. //* - The device used in the target application
  19. //* - To use or not the peripheral’s drivers in application code(i.e.
  20. //* code will be based on direct access to peripheral’s registers
  21. //* rather than drivers API), this option is controlled by
  22. //* "#define USE_STDPERIPH_DRIVER"
  23. //* - To change few application-specific parameters such as the HSE
  24. //* crystal frequency
  25. //* - Data structures and the address mapping for all peripherals
  26. //* - Peripheral's registers declarations and bits definition
  27. //* - Macros to access peripheral’s registers hardware
  28. //*
  29. //******************************************************************************
  30. //* @attention
  31. //*
  32. //* <h2><center>&copy; COPYRIGHT 2012 STMicroelectronics</center></h2>
  33. //*
  34. //* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
  35. //* You may not use this file except in compliance with the License.
  36. //* You may obtain a copy of the License at:
  37. //*
  38. //* http://www.st.com/software_license_agreement_liberty_v2
  39. //*
  40. //* Unless required by applicable law or agreed to in writing, software
  41. //* distributed under the License is distributed on an "AS IS" BASIS,
  42. //* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  43. //* See the License for the specific language governing permissions and
  44. //* limitations under the License.
  45. //*
  46. //******************************************************************************
  47. //Uncomment the line below according to the target STM32F0 device used in your
  48. //application
  49. //Tip: To avoid modifying this file each time you need to switch between these
  50. //devices, you can define the device in your toolchain compiler preprocessor.
  51. //STM32F0xx devices are:
  52. //- STM32F050xx microcontrollers where the Flash memory density can go up to 32 Kbytes.
  53. //- STM32F051xx microcontrollers where the Flash memory density can go up to 64 Kbytes.
  54. //Comment the line below if you will not use the peripherals drivers.
  55. //In this case, these drivers will not be included and the application code will
  56. //be based on direct access to peripherals registers
  57. //#define USE_STDPERIPH_DRIVER
  58. //In the following line adjust the value of External High Speed oscillator (HSE)
  59. //used in your application
  60. //Tip: To avoid modifying this file each time you need to use different HSE, you
  61. //can define the HSE value in your toolchain compiler preprocessor.
  62. const
  63. HSE_VALUE = longword(8000000); //Value of the External oscillator in Hz
  64. //In the following line adjust the External High Speed oscillator (HSE) Startup
  65. //Timeout value
  66. HSE_STARTUP_TIMEOUT = longword($0500); //Time out for HSE start up
  67. //In the following line adjust the Internal High Speed oscillator (HSI) Startup
  68. //Timeout value
  69. HSI_STARTUP_TIMEOUT = longword($0500); //Time out for HSI start up
  70. HSI_VALUE = longword(8000000); //Value of the Internal High Speed oscillator in Hz.
  71. //The real value may vary depending on the variations
  72. //in voltage and temperature.
  73. HSI14_VALUE = longword(14000000); //Value of the Internal High Speed oscillator for ADC in Hz.
  74. //The real value may vary depending on the variations
  75. //in voltage and temperature.
  76. LSI_VALUE = longword(40000); //Value of the Internal Low Speed oscillator in Hz
  77. //The real value may vary depending on the variations
  78. //in voltage and temperature.
  79. LSE_VALUE = longword(32768); //Value of the External Low Speed oscillator in Hz
  80. //STM32F0xx Standard Peripheral Library version number V1.0.1
  81. __STM32F0XX_STDPERIPH_VERSION_MAIN = $01; //[31:24] main version
  82. __STM32F0XX_STDPERIPH_VERSION_SUB1 = $00; //[23:16] sub1 version
  83. __STM32F0XX_STDPERIPH_VERSION_SUB2 = $01; //[15:8] sub2 version
  84. __STM32F0XX_STDPERIPH_VERSION_RC = $00; //[7:0] release candidate
  85. //STM32F0xx Interrupt Number Definition, according to the selected device
  86. //* in @ref Library_configuration_section
  87. __CM0_REV = 0; //Core Revision r0p0
  88. __MPU_PRESENT = 0; //STM32F0xx do not provide MPU
  89. __NVIC_PRIO_BITS = 2; //STM32F0xx uses 2 Bits for the Priority Levels
  90. __Vendor_SysTickConfig = 0; //Set to 1 if different SysTick Config is used
  91. //Interrupt Number Definition
  92. type
  93. TIRQn_Enum = (
  94. //***** Cortex-M0 Processor Exceptions Numbers *****************************************************
  95. NonMaskableInt_IRQn = -14, //2 Non Maskable Interrupt
  96. HardFault_IRQn = -13, //3 Cortex-M0 Hard Fault Interrupt
  97. SVC_IRQn = -5, //11 Cortex-M0 SV Call Interrupt
  98. PendSV_IRQn = -2, //14 Cortex-M0 Pend SV Interrupt
  99. SysTick_IRQn = -1, //15 Cortex-M0 System Tick Interrupt
  100. //***** STM32F-0 specific Interrupt Numbers ********************************************************
  101. WWDG_IRQn = 0, //Window WatchDog Interrupt
  102. PVD_IRQn = 1, //PVD through EXTI Line detect Interrupt
  103. RTC_IRQn = 2, //RTC through EXTI Line Interrupt
  104. FLASH_IRQn = 3, //FLASH Interrupt
  105. RCC_IRQn = 4, //RCC Interrupt
  106. EXTI0_1_IRQn = 5, //EXTI Line 0 and 1 Interrupts
  107. EXTI2_3_IRQn = 6, //EXTI Line 2 and 3 Interrupts
  108. EXTI4_15_IRQn = 7, //EXTI Line 4 to 15 Interrupts
  109. TS_IRQn = 8, //TS Interrupt
  110. DMA1_Channel1_IRQn = 9, //DMA1 Channel 1 Interrupt
  111. DMA1_Channel2_3_IRQn = 10, //DMA1 Channel 2 and Channel 3 Interrupts
  112. DMA1_Channel4_5_IRQn = 11, //DMA1 Channel 4 and Channel 5 Interrupts
  113. ADC1_COMP_IRQn = 12, //ADC1, COMP1 and COMP2 Interrupts
  114. TIM1_BRK_UP_TRG_COM_IRQn = 13, //TIM1 Break, Update, Trigger and Commutation Interrupts
  115. TIM1_CC_IRQn = 14, //TIM1 Capture Compare Interrupt
  116. TIM2_IRQn = 15, //TIM2 Interrupt
  117. TIM3_IRQn = 16, //TIM3 Interrupt
  118. TIM6_DAC_IRQn = 17, //TIM6 and DAC Interrupts
  119. TIM14_IRQn = 19, //TIM14 Interrupt
  120. TIM15_IRQn = 20, //TIM15 Interrupt
  121. TIM16_IRQn = 21, //TIM16 Interrupt
  122. TIM17_IRQn = 22, //TIM17 Interrupt
  123. I2C1_IRQn = 23, //I2C1 Interrupt
  124. I2C2_IRQn = 24, //I2C2 Interrupt
  125. SPI1_IRQn = 25, //SPI1 Interrupt
  126. SPI2_IRQn = 26, //SPI2 Interrupt
  127. USART1_IRQn = 27, //USART1 Interrupt
  128. USART2_IRQn = 28, //USART2 Interrupt
  129. CEC_IRQn = 30 //CEC Interrupt
  130. );
  131. //Analog to Digital Converter
  132. TADC_Registers = record
  133. ISR : longword; //ADC Interrupt and Status register, Address offset:0x00
  134. IER : longword; //ADC Interrupt Enable register, Address offset:0x04
  135. CR : longword; //ADC Control register, Address offset:0x08
  136. CFGR1 : longword; //ADC Configuration register 1, Address offset:0x0C
  137. CFGR2 : longword; //ADC Configuration register 2, Address offset:0x10
  138. SMPR : longword; //ADC Sampling time register, Address offset:0x14
  139. RESERVED1 : longword; //Reserved, 0x18
  140. RESERVED2 : longword; //Reserved, 0x1C
  141. TR : longword; //ADC watchdog threshold register, Address offset:0x20
  142. RESERVED3 : longword; //Reserved, 0x24
  143. CHSELR : longword; //ADC channel selection register, Address offset:0x28
  144. RESERVED4 : array[0..4] of longword; //Reserved, 0x2C
  145. DR : longword; //ADC data register, Address offset:0x40
  146. end;
  147. TADC_Common_Registers = record
  148. CCR : longword;
  149. end;
  150. //HDMI-CEC
  151. TCEC_Registers = record
  152. CR : longword; //CEC control register, Address offset:0x00
  153. CFGR : longword; //CEC configuration register, Address offset:0x04
  154. TXDR : longword; //CEC Tx data register , Address offset:0x08
  155. RXDR : longword; //CEC Rx Data Register, Address offset:0x0C
  156. ISR : longword; //CEC Interrupt and Status Register, Address offset:0x10
  157. IER : longword; //CEC interrupt enable register, Address offset:0x14
  158. end;
  159. //Comparator
  160. TCOMP_Registers = record
  161. CSR : longword; //COMP comparator control and status register, Address offset: 0x1C
  162. end;
  163. //CRC calculation unit
  164. TCRC_Registers = record
  165. DR : longword; //CRC Data register, Address offset: 0x00
  166. IDR : byte; //CRC Independent data register, Address offset: 0x04
  167. RESERVED0 : byte; //Reserved, 0x05
  168. RESERVED1 : word; //Reserved, 0x06
  169. CR : longword; //CRC Control register, Address offset: 0x08
  170. RESERVED2 : longword; //Reserved, 0x0C
  171. INIT : longword; //Initial CRC value register, Address offset: 0x10
  172. end;
  173. //Digital to Analog Converter
  174. TDAC_Registers = record
  175. CR : longword; //DAC control register, Address offset: 0x00
  176. SWTRIGR : longword; //DAC software trigger register, Address offset: 0x04
  177. DHR12R1 : longword; //DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08
  178. DHR12L1 : longword; //DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C
  179. DHR8R1 : longword; //DAC channel1 8-bit right aligned data holding register, Address offset: 0x10
  180. RESERVED : array[0..5] of longword; //Reserved, 0x14
  181. DOR1 : longword; //DAC channel1 data output register, Address offset: 0x2C
  182. RESERVED1 : longword; //Reserved, 0x30
  183. SR : longword; //DAC status register, Address offset: 0x34
  184. end;
  185. //Debug MCU
  186. TDBGMCU_Registers = record
  187. IDCODE : longword; //MCU device ID code, Address offset: 0x00
  188. CR : longword; //Debug MCU configuration register, Address offset: 0x04
  189. APB1FZ : longword; //Debug MCU APB1 freeze register, Address offset: 0x08
  190. APB2FZ : longword; //Debug MCU APB2 freeze register, Address offset: 0x0C
  191. end;
  192. //DMA Controller
  193. TDMA_Channel_Registers = record
  194. CCR : longword; //DMA channel x configuration register
  195. CNDTR : longword; //DMA channel x number of data register
  196. CPAR : longword; //DMA channel x peripheral address register
  197. CMAR : longword; //DMA channel x memory address register
  198. end;
  199. TDMA_Registers = record
  200. ISR : longword; //DMA interrupt status register, Address offset: 0x00
  201. IFCR : longword; //DMA interrupt flag clear register, Address offset: 0x04
  202. end;
  203. //External Interrupt/Event Controller
  204. TEXTI_Registers = record
  205. IMR : longword; //XTI Interrupt mask register, Address offset: 0x00
  206. EMR : longword; //XTI Event mask register, Address offset: 0x04
  207. RTSR : longword; //XTI Rising trigger selection register , Address offset: 0x08
  208. FTSR : longword; //XTI Falling trigger selection register, Address offset: 0x0C
  209. SWIER : longword; //XTI Software interrupt event register, Address offset: 0x10
  210. PR : longword; //XTI Pending register, Address offset: 0x14
  211. end;
  212. //FLASH Registers
  213. TFLASH_Registers = record
  214. ACR : longword; //LASH access control register, Address offset: 0x00
  215. KEYR : longword; //LASH key register, Address offset: 0x04
  216. OPTKEYR : longword; //LASH OPT key register, Address offset: 0x08
  217. SR : longword; //LASH status register, Address offset: 0x0C
  218. CR : longword; //LASH control register, Address offset: 0x10
  219. AR : longword; //LASH address register, Address offset: 0x14
  220. RESERVED : longword; //Reserved, 0x18
  221. OBR : longword; //LASH option bytes register, Address offset: 0x1C
  222. WRPR : longword; //LASH option bytes register, Address offset: 0x20
  223. end;
  224. //Option Bytes Registers
  225. TOB_Registers = record
  226. RDP : word; //LASH option byte Read protection, Address offset: 0x00
  227. USER : word; //LASH option byte user options, Address offset: 0x02
  228. RESERVED0 : word; //Reserved, 0x04
  229. RESERVED1 : word; //Reserved, 0x06
  230. WRP0 : word; //LASH option byte write protection 0, Address offset: 0x08
  231. WRP1 : word; //LASH option byte write protection 1, Address offset: 0x0C
  232. end;
  233. //General Purpose IO
  234. TGPIO_Registers = record
  235. MODER : longword; //GPIO port mode register, Address offset: 0x00
  236. OTYPER : word; //GPIO port output type register, Address offset: 0x04
  237. RESERVED0 : word; //Reserved, 0x06
  238. OSPEEDR : longword; //GPIO port output speed register, Address offset: 0x08
  239. PUPDR : longword; //GPIO port pull-up/pull-down register, Address offset: 0x0C
  240. IDR : word; //GPIO port input data register, Address offset: 0x10
  241. RESERVED1 : word; //Reserved, 0x12
  242. ODR : word; //GPIO port output data register, Address offset: 0x14
  243. RESERVED2 : word; //Reserved, 0x16
  244. BSRR : longword; //GPIO port bit set/reset registerBSRR, Address offset: 0x18
  245. LCKR : longword; //GPIO port configuration lock register, Address offset: 0x1C
  246. AFR : array[0..1] of longword; //GPIO alternate function low register, Address offset: 0x20-0x24
  247. BRR : word; //GPIO bit reset register, Address offset: 0x28
  248. RESERVED3 : word; //Reserved, 0x2A
  249. end;
  250. //SysTem Configuration
  251. TSYSCFG_Registers = record
  252. CFGR1 : longword; //SYSCFG configuration register 1, Address offset: 0x00
  253. RESERVED : longword; //Reserved, 0x04
  254. EXTICR : array[0..3] of longword; //SYSCFG external interrupt configuration register, Address offset: 0x14-0x08
  255. CFGR2 : longword; //SYSCFG configuration register 2, Address offset: 0x18
  256. end;
  257. //Inter-integrated Circuit Interface
  258. TI2C_Registers = record
  259. CR1 : longword; //I2C Control register 1, Address offset: 0x00
  260. CR2 : longword; //I2C Control register 2, Address offset: 0x04
  261. OAR1 : longword; //I2C Own address 1 register, Address offset: 0x08
  262. OAR2 : longword; //I2C Own address 2 register, Address offset: 0x0C
  263. TIMINGR : longword; //I2C Timing register, Address offset: 0x10
  264. TIMEOUTR : longword; //I2C Timeout register, Address offset: 0x14
  265. ISR : longword; //I2C Interrupt and status register, Address offset: 0x18
  266. ICR : longword; //I2C Interrupt clear register, Address offset: 0x1C
  267. PECR : longword; //I2C PEC register, Address offset: 0x20
  268. RXDR : longword; //I2C Receive data register, Address offset: 0x24
  269. TXDR : longword; //I2C Transmit data register, Address offset: 0x28
  270. end;
  271. //Independent WATCHDOG
  272. TIWDG_Registers = record
  273. KR : longword; //IWDG Key register, Address offset: 0x00
  274. PR : longword; //IWDG Prescaler register, Address offset: 0x04
  275. RLR : longword; //IWDG Reload register, Address offset: 0x08
  276. SR : longword; //IWDG Status register, Address offset: 0x0C
  277. WINR : longword; //IWDG Window register, Address offset: 0x10
  278. end;
  279. //Power Control
  280. TPWR_Registers = record
  281. CR : longword; //PWR power control register, Address offset: 0x00
  282. CSR : longword; //PWR power control/status register, Address offset: 0x04
  283. end;
  284. //Reset and Clock Control
  285. TRCC_Registers = record
  286. CR : longword; //RCC clock control register, Address offset: 0x00
  287. CFGR : longword; //RCC clock configuration register, Address offset: 0x04
  288. CIR : longword; //RCC clock interrupt register, Address offset: 0x08
  289. APB2RSTR : longword; //RCC APB2 peripheral reset register, Address offset: 0x0C
  290. APB1RSTR : longword; //RCC APB1 peripheral reset register, Address offset: 0x10
  291. AHBENR : longword; //RCC AHB peripheral clock register, Address offset: 0x14
  292. APB2ENR : longword; //RCC APB2 peripheral clock enable register, Address offset: 0x18
  293. APB1ENR : longword; //RCC APB1 peripheral clock enable register, Address offset: 0x1C
  294. BDCR : longword; //RCC Backup domain control register, Address offset: 0x20
  295. CSR : longword; //RCC clock control & status register, Address offset: 0x24
  296. AHBRSTR : longword; //RCC AHB peripheral reset register, Address offset: 0x28
  297. CFGR2 : longword; //RCC clock configuration register 2, Address offset: 0x2C
  298. CFGR3 : longword; //RCC clock configuration register 3, Address offset: 0x30
  299. CR2 : longword; //RCC clock control register 2, Address offset: 0x34
  300. end;
  301. //Real-Time Clock
  302. TRTC_Registers = record
  303. TR : longword; //RTC time register, Address offset: 0x00
  304. DR : longword; //RTC date register, Address offset: 0x04
  305. CR : longword; //RTC control register, Address offset: 0x08
  306. ISR : longword; //RTC initialization and status register, Address offset: 0x0C
  307. PRER : longword; //RTC prescaler register, Address offset: 0x10
  308. RESERVED0 : longword; //Reserved, Address offset: 0x14
  309. RESERVED1 : longword; //Reserved, Address offset: 0x18
  310. ALRMAR : longword; //RTC alarm A register, Address offset: 0x1C
  311. RESERVED2 : longword; //Reserved, Address offset: 0x20
  312. WPR : longword; //RTC write protection register, Address offset: 0x24
  313. SSR : longword; //RTC sub second register, Address offset: 0x28
  314. SHIFTR : longword; //RTC shift control register, Address offset: 0x2C
  315. TSTR : longword; //RTC time stamp time register, Address offset: 0x30
  316. TSDR : longword; //RTC time stamp date register, Address offset: 0x34
  317. TSSSR : longword; //RTC time-stamp sub second register, Address offset: 0x38
  318. CAL : longword; //RTC calibration register, Address offset: 0x3C
  319. TAFCR : longword; //RTC tamper and alternate function configuration register, Address offset: 0x40
  320. ALRMASSR : longword; //RTC alarm A sub second register, Address offset: 0x44
  321. RESERVED3 : longword; //Reserved, Address offset: 0x48
  322. RESERVED4 : longword; //Reserved, Address offset: 0x4C
  323. BKP0R : longword; //RTC backup register 0, Address offset: 0x50
  324. BKP1R : longword; //RTC backup register 1, Address offset: 0x54
  325. BKP2R : longword; //RTC backup register 2, Address offset: 0x58
  326. BKP3R : longword; //RTC backup register 3, Address offset: 0x5C
  327. BKP4R : longword; //RTC backup register 4, Address offset: 0x60
  328. end;
  329. //Serial Peripheral Interface
  330. TSPI_Registers = record
  331. CR1 : word; //SPI Control register 1 (not used in I2S mode), Address offset: 0x00
  332. RESERVED0 : word; //Reserved, 0x02
  333. CR2 : word; //SPI Control register 2, Address offset: 0x04
  334. RESERVED1 : word; //Reserved, 0x06
  335. SR : word; //SPI Status register, Address offset: 0x08
  336. RESERVED2 : word; //Reserved, 0x0A
  337. DR : word; //SPI data register, Address offset: 0x0C
  338. RESERVED3 : word; //Reserved, 0x0E
  339. CRCPR : word; //SPI CRC polynomial register (not used in I2S mode), Address offset: 0x10
  340. RESERVED4 : word; //Reserved, 0x12
  341. RXCRCR : word; //SPI Rx CRC register (not used in I2S mode), Address offset: 0x14
  342. RESERVED5 : word; //Reserved, 0x16
  343. TXCRCR : word; //SPI Tx CRC register (not used in I2S mode), Address offset: 0x18
  344. RESERVED6 : word; //Reserved, 0x1A
  345. I2SCFGR : word; //SPI_I2S configuration register, Address offset: 0x1C
  346. RESERVED7 : word; //Reserved, 0x1E
  347. I2SPR : word; //SPI_I2S prescaler register, Address offset: 0x20
  348. RESERVED8 : word; //Reserved, 0x22
  349. end;
  350. //TIM
  351. TTIM_Registers = record
  352. CR1 : word; //TIM control register 1, Address offset: 0x00
  353. RESERVED0 : word; //Reserved, 0x02
  354. CR2 : word; //TIM control register 2, Address offset: 0x04
  355. RESERVED1 : word; //Reserved, 0x06
  356. SMCR : word; //TIM slave Mode Control register, Address offset: 0x08
  357. RESERVED2 : word; //Reserved, 0x0A
  358. DIER : word; //TIM DMA/interrupt enable register, Address offset: 0x0C
  359. RESERVED3 : word; //Reserved, 0x0E
  360. SR : word; //TIM status register, Address offset: 0x10
  361. RESERVED4 : word; //Reserved, 0x12
  362. EGR : word; //TIM event generation register, Address offset: 0x14
  363. RESERVED5 : word; //Reserved, 0x16
  364. CCMR1 : word; //TIM capture/compare mode register 1, Address offset: 0x18
  365. RESERVED6 : word; //Reserved, 0x1A
  366. CCMR2 : word; //TIM capture/compare mode register 2, Address offset: 0x1C
  367. RESERVED7 : word; //Reserved, 0x1E
  368. CCER : word; //TIM capture/compare enable register, Address offset: 0x20
  369. RESERVED8 : word; //Reserved, 0x22
  370. CNT : longword; //TIM counter register, Address offset: 0x24
  371. PSC : word; //TIM prescaler register, Address offset: 0x28
  372. RESERVED10 : word; //Reserved, 0x2A
  373. ARR : longword; //TIM auto-reload register, Address offset: 0x2C
  374. RCR : word; //TIM repetition counter register, Address offset: 0x30
  375. RESERVED12 : word; //Reserved, 0x32
  376. CCR1 : longword; //TIM capture/compare register 1, Address offset: 0x34
  377. CCR2 : longword; //TIM capture/compare register 2, Address offset: 0x38
  378. CCR3 : longword; //TIM capture/compare register 3, Address offset: 0x3C
  379. CCR4 : longword; //TIM capture/compare register 4, Address offset: 0x40
  380. BDTR : word; //TIM break and dead-time register, Address offset: 0x44
  381. RESERVED17 : word; //Reserved, 0x26
  382. DCR : word; //TIM DMA control register, Address offset: 0x48
  383. RESERVED18 : word; //Reserved, 0x4A
  384. DMAR : word; //TIM DMA address for full transfer register, Address offset: 0x4C
  385. RESERVED19 : word; //Reserved, 0x4E
  386. _OR : word; //TIM option register, Address offset: 0x50
  387. RESERVED20 : word; //Reserved, 0x52
  388. end;
  389. //Touch Sensing Controller (TSC)
  390. TTSC_Registers = record
  391. CR : longword; //TSC control register, Address offset: 0x00
  392. IER : longword; //TSC interrupt enable register, Address offset: 0x04
  393. ICR : longword; //TSC interrupt clear register, Address offset: 0x08
  394. ISR : longword; //TSC interrupt status register, Address offset: 0x0C
  395. IOHCR : longword; //TSC I/O hysteresis control register, Address offset: 0x10
  396. RESERVED1 : longword; //Reserved, Address offset: 0x14
  397. IOASCR : longword; //TSC I/O analog switch control register, Address offset: 0x18
  398. RESERVED2 : longword; //Reserved, Address offset: 0x1C
  399. IOSCR : longword; //TSC I/O sampling control register, Address offset: 0x20
  400. RESERVED3 : longword; //Reserved, Address offset: 0x24
  401. IOCCR : longword; //TSC I/O channel control register, Address offset: 0x28
  402. RESERVED4 : longword; //Reserved, Address offset: 0x2C
  403. IOGCSR : longword; //TSC I/O group control status register, Address offset: 0x30
  404. IOGXCR : array[0..5] of longword; //TSC I/O group x counter register, Address offset: 0x34-48
  405. end;
  406. //Universal Synchronous Asynchronous Receiver Transmitter
  407. TUSART_Registers = record
  408. CR1 : longword; //USART Control register 1, Address offset: 0x00
  409. CR2 : longword; //USART Control register 2, Address offset: 0x04
  410. CR3 : longword; //USART Control register 3, Address offset: 0x08
  411. BRR : word; //USART Baud rate register, Address offset: 0x0C
  412. RESERVED1 : word; //Reserved, 0x0E
  413. GTPR : word; //USART Guard time and prescaler register, Address offset: 0x10
  414. RESERVED2 : word; //Reserved, 0x12
  415. RTOR : longword; //USART Receiver Time Out register, Address offset: 0x14
  416. RQR : word; //USART Request register, Address offset: 0x18
  417. RESERVED3 : word; //Reserved, 0x1A
  418. ISR : longword; //USART Interrupt and status register, Address offset: 0x1C
  419. ICR : longword; //USART Interrupt flag Clear register, Address offset: 0x20
  420. RDR : word; //USART Receive Data register, Address offset: 0x24
  421. RESERVED4 : word; //Reserved, 0x26
  422. TDR : word; //USART Transmit Data register, Address offset: 0x28
  423. RESERVED5 : word; //Reserved, 0x2A
  424. end;
  425. //Window WATCHDOG
  426. TWWDG_Registers = record
  427. CR : longword; //WWDG Control register, Address offset: 0x00
  428. CFR : longword; //WWDG Configuration register, Address offset: 0x04
  429. SR : longword; //WWDG Status register, Address offset: 0x08
  430. end;
  431. const
  432. FLASH_BASE = longword($08000000); //FLASH base address in the alias region
  433. SRAM_BASE = longword($20000000); //SRAM base address in the alias region
  434. PERIPH_BASE = longword($40000000); //Peripheral base address in the alias region
  435. //Peripheral memory map
  436. APBPERIPH_BASE = PERIPH_BASE;
  437. AHBPERIPH_BASE = (PERIPH_BASE + $00020000);
  438. AHB2PERIPH_BASE = (PERIPH_BASE + $08000000);
  439. TIM2_BASE = (APBPERIPH_BASE + $00000000);
  440. TIM3_BASE = (APBPERIPH_BASE + $00000400);
  441. TIM6_BASE = (APBPERIPH_BASE + $00001000);
  442. TIM14_BASE = (APBPERIPH_BASE + $00002000);
  443. RTC_BASE = (APBPERIPH_BASE + $00002800);
  444. WWDG_BASE = (APBPERIPH_BASE + $00002C00);
  445. IWDG_BASE = (APBPERIPH_BASE + $00003000);
  446. SPI2_BASE = (APBPERIPH_BASE + $00003800);
  447. USART2_BASE = (APBPERIPH_BASE + $00004400);
  448. I2C1_BASE = (APBPERIPH_BASE + $00005400);
  449. I2C2_BASE = (APBPERIPH_BASE + $00005800);
  450. PWR_BASE = (APBPERIPH_BASE + $00007000);
  451. DAC_BASE = (APBPERIPH_BASE + $00007400);
  452. CEC_BASE = (APBPERIPH_BASE + $00007800);
  453. SYSCFG_BASE = (APBPERIPH_BASE + $00010000);
  454. COMP_BASE = (APBPERIPH_BASE + $0001001C);
  455. EXTI_BASE = (APBPERIPH_BASE + $00010400);
  456. ADC1_BASE = (APBPERIPH_BASE + $00012400);
  457. ADC_BASE = (APBPERIPH_BASE + $00012708);
  458. TIM1_BASE = (APBPERIPH_BASE + $00012C00);
  459. SPI1_BASE = (APBPERIPH_BASE + $00013000);
  460. USART1_BASE = (APBPERIPH_BASE + $00013800);
  461. TIM15_BASE = (APBPERIPH_BASE + $00014000);
  462. TIM16_BASE = (APBPERIPH_BASE + $00014400);
  463. TIM17_BASE = (APBPERIPH_BASE + $00014800);
  464. DBGMCU_BASE = (APBPERIPH_BASE + $00015800);
  465. DMA1_BASE = (AHBPERIPH_BASE + $00000000);
  466. DMA1_Channel1_BASE = (DMA1_BASE + $00000008);
  467. DMA1_Channel2_BASE = (DMA1_BASE + $0000001C);
  468. DMA1_Channel3_BASE = (DMA1_BASE + $00000030);
  469. DMA1_Channel4_BASE = (DMA1_BASE + $00000044);
  470. DMA1_Channel5_BASE = (DMA1_BASE + $00000058);
  471. RCC_BASE = (AHBPERIPH_BASE + $00001000);
  472. FLASH_R_BASE = (AHBPERIPH_BASE + $00002000); //FLASH registers base address
  473. OB_BASE = longword($1FFFF800); //FLASH Option Bytes base address
  474. CRC_BASE = (AHBPERIPH_BASE + $00003000);
  475. TSC_BASE = (AHBPERIPH_BASE + $00004000);
  476. GPIOA_BASE = (AHB2PERIPH_BASE + $00000000);
  477. GPIOB_BASE = (AHB2PERIPH_BASE + $00000400);
  478. GPIOC_BASE = (AHB2PERIPH_BASE + $00000800);
  479. GPIOD_BASE = (AHB2PERIPH_BASE + $00000C00);
  480. GPIOF_BASE = (AHB2PERIPH_BASE + $00001400);
  481. var
  482. TIM2 : TTIM_Registers absolute TIM2_BASE;
  483. TIM3 : TTIM_Registers absolute TIM3_BASE;
  484. TIM6 : TTIM_Registers absolute TIM6_BASE;
  485. TIM14 : TTIM_Registers absolute TIM14_BASE;
  486. RTC : TRTC_Registers absolute RTC_BASE;
  487. WWDG : TWWDG_Registers absolute WWDG_BASE;
  488. IWDG : TIWDG_Registers absolute IWDG_BASE;
  489. SPI2 : TSPI_Registers absolute SPI2_BASE;
  490. USART2 : TUSART_Registers absolute USART2_BASE;
  491. I2C1 : TI2C_Registers absolute I2C1_BASE;
  492. I2C2 : TI2C_Registers absolute I2C2_BASE;
  493. PWR : TPWR_Registers absolute PWR_BASE;
  494. DAC : TDAC_Registers absolute DAC_BASE;
  495. CEC : TCEC_Registers absolute CEC_BASE;
  496. SYSCFG : TSYSCFG_Registers absolute SYSCFG_BASE;
  497. COMP : TCOMP_Registers absolute COMP_BASE;
  498. EXTI : TEXTI_Registers absolute EXTI_BASE;
  499. ADC1 : TADC_Registers absolute ADC1_BASE;
  500. ADC : TADC_Common_Registers absolute ADC_BASE;
  501. TIM1 : TTIM_Registers absolute TIM1_BASE;
  502. SPI1 : TSPI_Registers absolute SPI1_BASE;
  503. USART1 : TUSART_Registers absolute USART1_BASE;
  504. TIM15 : TTIM_Registers absolute TIM15_BASE;
  505. TIM16 : TTIM_Registers absolute TIM16_BASE;
  506. TIM17 : TTIM_Registers absolute TIM17_BASE;
  507. DBGMCU : TDBGMCU_Registers absolute DBGMCU_BASE;
  508. DMA1 : TDMA_Registers absolute DMA1_BASE;
  509. DMA1_Channel1 : TDMA_Channel_Registers absolute DMA1_Channel1_BASE;
  510. DMA1_Channel2 : TDMA_Channel_Registers absolute DMA1_Channel2_BASE;
  511. DMA1_Channel3 : TDMA_Channel_Registers absolute DMA1_Channel3_BASE;
  512. DMA1_Channel4 : TDMA_Channel_Registers absolute DMA1_Channel4_BASE;
  513. DMA1_Channel5 : TDMA_Channel_Registers absolute DMA1_Channel5_BASE;
  514. FLASH : TFLASH_Registers absolute FLASH_R_BASE;
  515. OB : TOB_Registers absolute OB_BASE;
  516. RCC : TRCC_Registers absolute RCC_BASE;
  517. CRC : TCRC_Registers absolute CRC_BASE;
  518. TSC : TTSC_Registers absolute TSC_BASE;
  519. GPIOA : TGPIO_Registers absolute GPIOA_BASE;
  520. GPIOB : TGPIO_Registers absolute GPIOB_BASE;
  521. GPIOC : TGPIO_Registers absolute GPIOC_BASE;
  522. GPIOD : TGPIO_Registers absolute GPIOD_BASE;
  523. GPIOF : TGPIO_Registers absolute GPIOF_BASE;
  524. //****************************************************************************
  525. //Peripheral Registers Bits Definition
  526. //****************************************************************************
  527. //****************************************************************************
  528. //Analog to Digital Converter (ADC)
  529. //****************************************************************************
  530. //******************* Bits definition for ADC_ISR register *****************
  531. const
  532. ADC_ISR_AWD = longword($00000080); //Analog watchdog flag
  533. ADC_ISR_OVR = longword($00000010); //Overrun flag
  534. ADC_ISR_EOSEQ = longword($00000008); //End of Sequence flag
  535. ADC_ISR_EOC = longword($00000004); //End of Conversion
  536. ADC_ISR_EOSMP = longword($00000002); //End of sampling flag
  537. ADC_ISR_ADRDY = longword($00000001); //ADC Ready
  538. //Old EOSEQ bit definition, maintained for legacy purpose
  539. ADC_ISR_EOS = ADC_ISR_EOSEQ;
  540. //******************* Bits definition for ADC_IER register *****************
  541. ADC_IER_AWDIE = longword($00000080); //Analog Watchdog interrupt enable
  542. ADC_IER_OVRIE = longword($00000010); //Overrun interrupt enable
  543. ADC_IER_EOSEQIE = longword($00000008); //End of Sequence of conversion interrupt enable
  544. ADC_IER_EOCIE = longword($00000004); //End of Conversion interrupt enable
  545. ADC_IER_EOSMPIE = longword($00000002); //End of sampling interrupt enable
  546. ADC_IER_ADRDYIE = longword($00000001); //ADC Ready interrupt enable
  547. //Old EOSEQIE bit definition, maintained for legacy purpose
  548. ADC_IER_EOSIE = ADC_IER_EOSEQIE;
  549. //******************* Bits definition for ADC_CR register ******************
  550. ADC_CR_ADCAL = longword($80000000); //ADC calibration
  551. ADC_CR_ADSTP = longword($00000010); //ADC stop of conversion command
  552. ADC_CR_ADSTART = longword($00000004); //ADC start of conversion
  553. ADC_CR_ADDIS = longword($00000002); //ADC disable command
  554. ADC_CR_ADEN = longword($00000001); //ADC enable control
  555. //****************** Bits definition for ADC_CFGR1 register ****************
  556. ADC_CFGR1_AWDCH = longword($7C000000); //AWDCH[4:0] bits (Analog watchdog channel select bits)
  557. ADC_CFGR1_AWDCH_0 = longword($04000000); //Bit 0
  558. ADC_CFGR1_AWDCH_1 = longword($08000000); //Bit 1
  559. ADC_CFGR1_AWDCH_2 = longword($10000000); //Bit 2
  560. ADC_CFGR1_AWDCH_3 = longword($20000000); //Bit 3
  561. ADC_CFGR1_AWDCH_4 = longword($40000000); //Bit 4
  562. ADC_CFGR1_AWDEN = longword($00800000); //Analog watchdog enable on regular channels
  563. ADC_CFGR1_AWDSGL = longword($00400000); //Enable the watchdog on a single channel or on all channels
  564. ADC_CFGR1_DISCEN = longword($00010000); //Discontinuous mode on regular channels
  565. ADC_CFGR1_AUTOFF = longword($00008000); //ADC auto power off
  566. ADC_CFGR1_WAIT = longword($00004000); //ADC wait conversion mode
  567. ADC_CFGR1_CONT = longword($00002000); //Continuous Conversion
  568. ADC_CFGR1_OVRMOD = longword($00001000); //Overrun mode
  569. ADC_CFGR1_EXTEN = longword($00000C00); //EXTEN[1:0] bits (External Trigger Conversion mode for regular channels)
  570. ADC_CFGR1_EXTEN_0 = longword($00000400); //Bit 0
  571. ADC_CFGR1_EXTEN_1 = longword($00000800); //Bit 1
  572. ADC_CFGR1_EXTSEL = longword($000001C0); //EXTSEL[2:0] bits (External Event Select for regular group)
  573. ADC_CFGR1_EXTSEL_0 = longword($00000040); //Bit 0
  574. ADC_CFGR1_EXTSEL_1 = longword($00000080); //Bit 1
  575. ADC_CFGR1_EXTSEL_2 = longword($00000100); //Bit 2
  576. ADC_CFGR1_ALIGN = longword($00000020); //Data Alignment
  577. ADC_CFGR1_RES = longword($00000018); //RES[1:0] bits (Resolution)
  578. ADC_CFGR1_RES_0 = longword($00000008); //Bit 0
  579. ADC_CFGR1_RES_1 = longword($00000010); //Bit 1
  580. ADC_CFGR1_SCANDIR = longword($00000004); //Sequence scan direction
  581. ADC_CFGR1_DMACFG = longword($00000002); //Direct memory access configuration
  582. ADC_CFGR1_DMAEN = longword($00000001); //Direct memory access enable
  583. //Old WAIT bit definition, maintained for legacy purpose
  584. ADC_CFGR1_AUTDLY = ADC_CFGR1_WAIT;
  585. //****************** Bits definition for ADC_CFGR2 register ****************
  586. ADC_CFGR2_JITOFFDIV4 = longword($80000000); //Jitter Off when ADC clocked by PCLK div4
  587. ADC_CFGR2_JITOFFDIV2 = longword($40000000); //Jitter Off when ADC clocked by PCLK div2
  588. //***************** Bit definition for ADC_SMPR register *******************
  589. ADC_SMPR1_SMPR = longword($00000007); //SMPR[2:0] bits (Sampling time selection)
  590. ADC_SMPR1_SMPR_0 = longword($00000001); //Bit 0
  591. ADC_SMPR1_SMPR_1 = longword($00000002); //Bit 1
  592. ADC_SMPR1_SMPR_2 = longword($00000004); //Bit 2
  593. //****************** Bit definition for ADC_HTR register *******************
  594. ADC_HTR_HT = longword($00000FFF); //Analog watchdog high threshold
  595. //****************** Bit definition for ADC_LTR register *******************
  596. ADC_LTR_LT = longword($00000FFF); //Analog watchdog low threshold
  597. //***************** Bit definition for ADC_CHSELR register *****************
  598. ADC_CHSELR_CHSEL18 = longword($00040000); //Channel 18 selection
  599. ADC_CHSELR_CHSEL17 = longword($00020000); //Channel 17 selection
  600. ADC_CHSELR_CHSEL16 = longword($00010000); //Channel 16 selection
  601. ADC_CHSELR_CHSEL15 = longword($00008000); //Channel 15 selection
  602. ADC_CHSELR_CHSEL14 = longword($00004000); //Channel 14 selection
  603. ADC_CHSELR_CHSEL13 = longword($00002000); //Channel 13 selection
  604. ADC_CHSELR_CHSEL12 = longword($00001000); //Channel 12 selection
  605. ADC_CHSELR_CHSEL11 = longword($00000800); //Channel 11 selection
  606. ADC_CHSELR_CHSEL10 = longword($00000400); //Channel 10 selection
  607. ADC_CHSELR_CHSEL9 = longword($00000200); //Channel 9 selection
  608. ADC_CHSELR_CHSEL8 = longword($00000100); //Channel 8 selection
  609. ADC_CHSELR_CHSEL7 = longword($00000080); //Channel 7 selection
  610. ADC_CHSELR_CHSEL6 = longword($00000040); //Channel 6 selection
  611. ADC_CHSELR_CHSEL5 = longword($00000020); //Channel 5 selection
  612. ADC_CHSELR_CHSEL4 = longword($00000010); //Channel 4 selection
  613. ADC_CHSELR_CHSEL3 = longword($00000008); //Channel 3 selection
  614. ADC_CHSELR_CHSEL2 = longword($00000004); //Channel 2 selection
  615. ADC_CHSELR_CHSEL1 = longword($00000002); //Channel 1 selection
  616. ADC_CHSELR_CHSEL0 = longword($00000001); //Channel 0 selection
  617. //******************* Bit definition for ADC_DR register *******************
  618. ADC_DR_DATA = longword($0000FFFF); //Regular data
  619. //****************** Bit definition for ADC_CCR register *******************
  620. ADC_CCR_VBATEN = longword($01000000); //Voltage battery enable
  621. ADC_CCR_TSEN = longword($00800000); //Tempurature sensore enable
  622. ADC_CCR_VREFEN = longword($00400000); //Vrefint enable
  623. //****************************************************************************
  624. //HDMI-CEC (CEC)
  625. //****************************************************************************
  626. //****************** Bit definition for CEC_CR register ********************
  627. CEC_CR_CECEN = longword($00000001); //CEC Enable
  628. CEC_CR_TXSOM = longword($00000002); //CEC Tx Start Of Message
  629. CEC_CR_TXEOM = longword($00000004); //CEC Tx End Of Message
  630. //****************** Bit definition for CEC_CFGR register ******************
  631. CEC_CFGR_SFT = longword($00000007); //CEC Signal Free Time
  632. CEC_CFGR_RXTOL = longword($00000008); //CEC Tolerance
  633. CEC_CFGR_BRESTP = longword($00000010); //CEC Rx Stop
  634. CEC_CFGR_BREGEN = longword($00000020); //CEC Bit Rising Error generation
  635. CEC_CFGR_LREGEN = longword($00000040); //CEC Long Period Error generation
  636. CEC_CFGR_BRDNOGEN = longword($00000080); //CEC Broadcast no Error generation
  637. CEC_CFGR_SFTOPT = longword($00000100); //CEC Signal Free Time optional
  638. CEC_CFGR_OAR = longword($7FFF0000); //CEC Own Address
  639. CEC_CFGR_LSTN = longword($80000000); //CEC Listen mode
  640. //****************** Bit definition for CEC_TXDR register ******************
  641. CEC_TXDR_TXD = longword($000000FF); //CEC Tx Data
  642. //****************** Bit definition for CEC_RXDR register ******************
  643. CEC_TXDR_RXD = longword($000000FF); //CEC Rx Data
  644. //****************** Bit definition for CEC_ISR register *******************
  645. CEC_ISR_RXBR = longword($00000001); //CEC Rx-Byte Received
  646. CEC_ISR_RXEND = longword($00000002); //CEC End Of Reception
  647. CEC_ISR_RXOVR = longword($00000004); //CEC Rx-Overrun
  648. CEC_ISR_BRE = longword($00000008); //CEC Rx Bit Rising Error
  649. CEC_ISR_SBPE = longword($00000010); //CEC Rx Short Bit period Error
  650. CEC_ISR_LBPE = longword($00000020); //CEC Rx Long Bit period Error
  651. CEC_ISR_RXACKE = longword($00000040); //CEC Rx Missing Acknowledge
  652. CEC_ISR_ARBLST = longword($00000080); //CEC Arbitration Lost
  653. CEC_ISR_TXBR = longword($00000100); //CEC Tx Byte Request
  654. CEC_ISR_TXEND = longword($00000200); //CEC End of Transmission
  655. CEC_ISR_TXUDR = longword($00000400); //CEC Tx-Buffer Underrun
  656. CEC_ISR_TXERR = longword($00000800); //CEC Tx-Error
  657. CEC_ISR_TXACKE = longword($00001000); //CEC Tx Missing Acknowledge
  658. //****************** Bit definition for CEC_IER register *******************
  659. CEC_IER_RXBRIE = longword($00000001); //CEC Rx-Byte Received IT Enable
  660. CEC_IER_RXENDIE = longword($00000002); //CEC End Of Reception IT Enable
  661. CEC_IER_RXOVRIE = longword($00000004); //CEC Rx-Overrun IT Enable
  662. CEC_IER_BREIEIE = longword($00000008); //CEC Rx Bit Rising Error IT Enable
  663. CEC_IER_SBPEIE = longword($00000010); //CEC Rx Short Bit period Error IT Enable
  664. CEC_IER_LBPEIE = longword($00000020); //CEC Rx Long Bit period Error IT Enable
  665. CEC_IER_RXACKEIE = longword($00000040); //CEC Rx Missing Acknowledge IT Enable
  666. CEC_IER_ARBLSTIE = longword($00000080); //CEC Arbitration Lost IT Enable
  667. CEC_IER_TXBRIE = longword($00000100); //CEC Tx Byte Request IT Enable
  668. CEC_IER_TXENDIE = longword($00000200); //CEC End of Transmission IT Enable
  669. CEC_IER_TXUDRIE = longword($00000400); //CEC Tx-Buffer Underrun IT Enable
  670. CEC_IER_TXERRIE = longword($00000800); //CEC Tx-Error IT Enable
  671. CEC_IER_TXACKEIE = longword($00001000); //CEC Tx Missing Acknowledge IT Enable
  672. //****************************************************************************
  673. //Analog Comparators (COMP)
  674. //****************************************************************************
  675. //********************** Bit definition for COMP_CSR register **************
  676. //COMP1 bits definition
  677. COMP_CSR_COMP1EN = longword($00000001); //COMP1 enable
  678. COMP_CSR_COMP1SW1 = longword($00000002); //SW1 switch control
  679. COMP_CSR_COMP1MODE = longword($0000000C); //COMP1 power mode
  680. COMP_CSR_COMP1MODE_0 = longword($00000004); //COMP1 power mode bit 0
  681. COMP_CSR_COMP1MODE_1 = longword($00000008); //COMP1 power mode bit 1
  682. COMP_CSR_COMP1INSEL = longword($00000070); //COMP1 inverting input select
  683. COMP_CSR_COMP1INSEL_0 = longword($00000010); //COMP1 inverting input select bit 0
  684. COMP_CSR_COMP1INSEL_1 = longword($00000020); //COMP1 inverting input select bit 1
  685. COMP_CSR_COMP1INSEL_2 = longword($00000040); //COMP1 inverting input select bit 2
  686. COMP_CSR_COMP1OUTSEL = longword($00000700); //COMP1 output select
  687. COMP_CSR_COMP1OUTSEL_0 = longword($00000100); //COMP1 output select bit 0
  688. COMP_CSR_COMP1OUTSEL_1 = longword($00000200); //COMP1 output select bit 1
  689. COMP_CSR_COMP1OUTSEL_2 = longword($00000400); //COMP1 output select bit 2
  690. COMP_CSR_COMP1POL = longword($00000800); //COMP1 output polarity
  691. COMP_CSR_COMP1HYST = longword($00003000); //COMP1 hysteresis
  692. COMP_CSR_COMP1HYST_0 = longword($00001000); //COMP1 hysteresis bit 0
  693. COMP_CSR_COMP1HYST_1 = longword($00002000); //COMP1 hysteresis bit 1
  694. COMP_CSR_COMP1OUT = longword($00004000); //COMP1 output level
  695. COMP_CSR_COMP1LOCK = longword($00008000); //COMP1 lock
  696. //COMP2 bits definition
  697. COMP_CSR_COMP2EN = longword($00010000); //COMP2 enable
  698. COMP_CSR_COMP2MODE = longword($000C0000); //COMP2 power mode
  699. COMP_CSR_COMP2MODE_0 = longword($00040000); //COMP2 power mode bit 0
  700. COMP_CSR_COMP2MODE_1 = longword($00080000); //COMP2 power mode bit 1
  701. COMP_CSR_COMP2INSEL = longword($00700000); //COMP2 inverting input select
  702. COMP_CSR_COMP2INSEL_0 = longword($00100000); //COMP2 inverting input select bit 0
  703. COMP_CSR_COMP2INSEL_1 = longword($00200000); //COMP2 inverting input select bit 1
  704. COMP_CSR_COMP2INSEL_2 = longword($00400000); //COMP2 inverting input select bit 2
  705. COMP_CSR_WNDWEN = longword($00800000); //Comparators window mode enable
  706. COMP_CSR_COMP2OUTSEL = longword($07000000); //COMP2 output select
  707. COMP_CSR_COMP2OUTSEL_0 = longword($01000000); //COMP2 output select bit 0
  708. COMP_CSR_COMP2OUTSEL_1 = longword($02000000); //COMP2 output select bit 1
  709. COMP_CSR_COMP2OUTSEL_2 = longword($04000000); //COMP2 output select bit 2
  710. COMP_CSR_COMP2POL = longword($08000000); //COMP2 output polarity
  711. COMP_CSR_COMP2HYST = longword($30000000); //COMP2 hysteresis
  712. COMP_CSR_COMP2HYST_0 = longword($10000000); //COMP2 hysteresis bit 0
  713. COMP_CSR_COMP2HYST_1 = longword($20000000); //COMP2 hysteresis bit 1
  714. COMP_CSR_COMP2OUT = longword($40000000); //COMP2 output level
  715. COMP_CSR_COMP2LOCK = longword($80000000); //COMP2 lock
  716. //****************************************************************************
  717. //CRC calculation unit (CRC)
  718. //****************************************************************************
  719. //****************** Bit definition for CRC_DR register ********************
  720. CRC_DR_DR = longword($FFFFFFFF); //Data register bits
  721. //****************** Bit definition for CRC_IDR register *******************
  722. CRC_IDR_IDR = longword($FF); //General-purpose 8-bit data register bits
  723. //******************* Bit definition for CRC_CR register *******************
  724. CRC_CR_RESET = longword($00000001); //RESET the CRC computation unit bit
  725. CRC_CR_REV_IN = longword($00000060); //REV_IN Reverse Input Data bits
  726. CRC_CR_REV_IN_0 = longword($00000020); //REV_IN Bit 0
  727. CRC_CR_REV_IN_1 = longword($00000040); //REV_IN Bit 1
  728. CRC_CR_REV_OUT = longword($00000080); //REV_OUT Reverse Output Data bits
  729. //****************** Bit definition for CRC_INIT register ******************
  730. CRC_INIT_INIT = longword($FFFFFFFF); //Initial CRC value bits
  731. //****************************************************************************
  732. //Digital to Analog Converter (DAC)
  733. //****************************************************************************
  734. //******************* Bit definition for DAC_CR register *******************
  735. DAC_CR_EN1 = longword($00000001); //AC channel1 enable
  736. DAC_CR_BOFF1 = longword($00000002); //AC channel1 output buffer disable
  737. DAC_CR_TEN1 = longword($00000004); //AC channel1 Trigger enable
  738. DAC_CR_TSEL1 = longword($00000038); //SEL1[2:0] (DAC channel1 Trigger selection)
  739. DAC_CR_TSEL1_0 = longword($00000008); //it 0
  740. DAC_CR_TSEL1_1 = longword($00000010); //it 1
  741. DAC_CR_TSEL1_2 = longword($00000020); //it 2
  742. DAC_CR_DMAEN1 = longword($00001000); //AC channel1 DMA enable
  743. DAC_CR_DMAUDRIE1 = longword($00002000); //AC channel1 DMA Underrun Interrupt enable
  744. //**************** Bit definition for DAC_SWTRIGR register *****************
  745. DAC_SWTRIGR_SWTRIG1 = longword($00000001); //AC channel1 software trigger
  746. //**************** Bit definition for DAC_DHR12R1 register *****************
  747. DAC_DHR12R1_DACC1DHR = longword($00000FFF); //AC channel1 12-bit Right aligned data
  748. //**************** Bit definition for DAC_DHR12L1 register *****************
  749. DAC_DHR12L1_DACC1DHR = longword($0000FFF0); //AC channel1 12-bit Left aligned data
  750. //***************** Bit definition for DAC_DHR8R1 register *****************
  751. DAC_DHR8R1_DACC1DHR = longword($000000FF); //AC channel1 8-bit Right aligned data
  752. //****************** Bit definition for DAC_DOR1 register ******************
  753. DAC_DOR1_DACC1DOR = longword($00000FFF); //AC channel1 data output
  754. //******************* Bit definition for DAC_SR register *******************
  755. DAC_SR_DMAUDR1 = longword($00002000); //AC channel1 DMA underrun flag
  756. //****************************************************************************
  757. //Debug MCU (DBGMCU)
  758. //****************************************************************************
  759. //*************** Bit definition for DBGMCU_IDCODE register ****************
  760. DBGMCU_IDCODE_DEV_ID = longword($00000FFF); //Device Identifier
  761. DBGMCU_IDCODE_REV_ID = longword($FFFF0000); //REV_ID[15:0] bits (Revision Identifier)
  762. DBGMCU_IDCODE_REV_ID_0 = longword($00010000); //Bit 0
  763. DBGMCU_IDCODE_REV_ID_1 = longword($00020000); //Bit 1
  764. DBGMCU_IDCODE_REV_ID_2 = longword($00040000); //Bit 2
  765. DBGMCU_IDCODE_REV_ID_3 = longword($00080000); //Bit 3
  766. DBGMCU_IDCODE_REV_ID_4 = longword($00100000); //Bit 4
  767. DBGMCU_IDCODE_REV_ID_5 = longword($00200000); //Bit 5
  768. DBGMCU_IDCODE_REV_ID_6 = longword($00400000); //Bit 6
  769. DBGMCU_IDCODE_REV_ID_7 = longword($00800000); //Bit 7
  770. DBGMCU_IDCODE_REV_ID_8 = longword($01000000); //Bit 8
  771. DBGMCU_IDCODE_REV_ID_9 = longword($02000000); //Bit 9
  772. DBGMCU_IDCODE_REV_ID_10 = longword($04000000); //Bit 10
  773. DBGMCU_IDCODE_REV_ID_11 = longword($08000000); //Bit 11
  774. DBGMCU_IDCODE_REV_ID_12 = longword($10000000); //Bit 12
  775. DBGMCU_IDCODE_REV_ID_13 = longword($20000000); //Bit 13
  776. DBGMCU_IDCODE_REV_ID_14 = longword($40000000); //Bit 14
  777. DBGMCU_IDCODE_REV_ID_15 = longword($80000000); //Bit 15
  778. //***************** Bit definition for DBGMCU_CR register ******************
  779. DBGMCU_CR_DBG_STOP = longword($00000002); //Debug Stop Mode
  780. DBGMCU_CR_DBG_STANDBY = longword($00000004); //Debug Standby mode
  781. //***************** Bit definition for DBGMCU_APB1_FZ register *************
  782. DBGMCU_APB1_FZ_DBG_TIM2_STOP = longword($00000001); //TIM2 counter stopped when core is halted
  783. DBGMCU_APB1_FZ_DBG_TIM3_STOP = longword($00000002); //TIM3 counter stopped when core is halted
  784. DBGMCU_APB1_FZ_DBG_TIM6_STOP = longword($00000010); //TIM6 counter stopped when core is halted
  785. DBGMCU_APB1_FZ_DBG_TIM14_STOP = longword($00000100); //TIM14 counter stopped when core is halted
  786. DBGMCU_APB1_FZ_DBG_RTC_STOP = longword($00000400); //RTC Calendar frozen when core is halted
  787. DBGMCU_APB1_FZ_DBG_WWDG_STOP = longword($00000800); //Debug Window Watchdog stopped when Core is halted
  788. DBGMCU_APB1_FZ_DBG_IWDG_STOP = longword($00001000); //Debug Independent Watchdog stopped when Core is halted
  789. DBGMCU_APB1_FZ_DBG_I2C1_SMBUS_TIMEOUT = longword($00200000); //I2C1 SMBUS timeout mode stopped when Core is halted
  790. //***************** Bit definition for DBGMCU_APB2_FZ register *************
  791. DBGMCU_APB2_FZ_DBG_TIM1_STOP = longword($00000800); //TIM1 counter stopped when core is halted
  792. DBGMCU_APB2_FZ_DBG_TIM15_STOP = longword($00010000); //TIM15 counter stopped when core is halted
  793. DBGMCU_APB2_FZ_DBG_TIM16_STOP = longword($00020000); //TIM16 counter stopped when core is halted
  794. DBGMCU_APB2_FZ_DBG_TIM17_STOP = longword($00040000); //TIM17 counter stopped when core is halted
  795. //****************************************************************************
  796. //DMA Controller (DMA)
  797. //****************************************************************************
  798. //****************** Bit definition for DMA_ISR register *******************
  799. DMA_ISR_GIF1 = longword($00000001); //Channel 1 Global interrupt flag
  800. DMA_ISR_TCIF1 = longword($00000002); //Channel 1 Transfer Complete flag
  801. DMA_ISR_HTIF1 = longword($00000004); //Channel 1 Half Transfer flag
  802. DMA_ISR_TEIF1 = longword($00000008); //Channel 1 Transfer Error flag
  803. DMA_ISR_GIF2 = longword($00000010); //Channel 2 Global interrupt flag
  804. DMA_ISR_TCIF2 = longword($00000020); //Channel 2 Transfer Complete flag
  805. DMA_ISR_HTIF2 = longword($00000040); //Channel 2 Half Transfer flag
  806. DMA_ISR_TEIF2 = longword($00000080); //Channel 2 Transfer Error flag
  807. DMA_ISR_GIF3 = longword($00000100); //Channel 3 Global interrupt flag
  808. DMA_ISR_TCIF3 = longword($00000200); //Channel 3 Transfer Complete flag
  809. DMA_ISR_HTIF3 = longword($00000400); //Channel 3 Half Transfer flag
  810. DMA_ISR_TEIF3 = longword($00000800); //Channel 3 Transfer Error flag
  811. DMA_ISR_GIF4 = longword($00001000); //Channel 4 Global interrupt flag
  812. DMA_ISR_TCIF4 = longword($00002000); //Channel 4 Transfer Complete flag
  813. DMA_ISR_HTIF4 = longword($00004000); //Channel 4 Half Transfer flag
  814. DMA_ISR_TEIF4 = longword($00008000); //Channel 4 Transfer Error flag
  815. DMA_ISR_GIF5 = longword($00010000); //Channel 5 Global interrupt flag
  816. DMA_ISR_TCIF5 = longword($00020000); //Channel 5 Transfer Complete flag
  817. DMA_ISR_HTIF5 = longword($00040000); //Channel 5 Half Transfer flag
  818. DMA_ISR_TEIF5 = longword($00080000); //Channel 5 Transfer Error flag
  819. //****************** Bit definition for DMA_IFCR register ******************
  820. DMA_IFCR_CGIF1 = longword($00000001); //Channel 1 Global interrupt clear
  821. DMA_IFCR_CTCIF1 = longword($00000002); //Channel 1 Transfer Complete clear
  822. DMA_IFCR_CHTIF1 = longword($00000004); //Channel 1 Half Transfer clear
  823. DMA_IFCR_CTEIF1 = longword($00000008); //Channel 1 Transfer Error clear
  824. DMA_IFCR_CGIF2 = longword($00000010); //Channel 2 Global interrupt clear
  825. DMA_IFCR_CTCIF2 = longword($00000020); //Channel 2 Transfer Complete clear
  826. DMA_IFCR_CHTIF2 = longword($00000040); //Channel 2 Half Transfer clear
  827. DMA_IFCR_CTEIF2 = longword($00000080); //Channel 2 Transfer Error clear
  828. DMA_IFCR_CGIF3 = longword($00000100); //Channel 3 Global interrupt clear
  829. DMA_IFCR_CTCIF3 = longword($00000200); //Channel 3 Transfer Complete clear
  830. DMA_IFCR_CHTIF3 = longword($00000400); //Channel 3 Half Transfer clear
  831. DMA_IFCR_CTEIF3 = longword($00000800); //Channel 3 Transfer Error clear
  832. DMA_IFCR_CGIF4 = longword($00001000); //Channel 4 Global interrupt clear
  833. DMA_IFCR_CTCIF4 = longword($00002000); //Channel 4 Transfer Complete clear
  834. DMA_IFCR_CHTIF4 = longword($00004000); //Channel 4 Half Transfer clear
  835. DMA_IFCR_CTEIF4 = longword($00008000); //Channel 4 Transfer Error clear
  836. DMA_IFCR_CGIF5 = longword($00010000); //Channel 5 Global interrupt clear
  837. DMA_IFCR_CTCIF5 = longword($00020000); //Channel 5 Transfer Complete clear
  838. DMA_IFCR_CHTIF5 = longword($00040000); //Channel 5 Half Transfer clear
  839. DMA_IFCR_CTEIF5 = longword($00080000); //Channel 5 Transfer Error clear
  840. //****************** Bit definition for DMA_CCR register *******************
  841. DMA_CCR_EN = longword($00000001); //Channel enable
  842. DMA_CCR_TCIE = longword($00000002); //Transfer complete interrupt enable
  843. DMA_CCR_HTIE = longword($00000004); //Half Transfer interrupt enable
  844. DMA_CCR_TEIE = longword($00000008); //Transfer error interrupt enable
  845. DMA_CCR_DIR = longword($00000010); //Data transfer direction
  846. DMA_CCR_CIRC = longword($00000020); //Circular mode
  847. DMA_CCR_PINC = longword($00000040); //Peripheral increment mode
  848. DMA_CCR_MINC = longword($00000080); //Memory increment mode
  849. DMA_CCR_PSIZE = longword($00000300); //PSIZE[1:0] bits (Peripheral size)
  850. DMA_CCR_PSIZE_0 = longword($00000100); //Bit 0
  851. DMA_CCR_PSIZE_1 = longword($00000200); //Bit 1
  852. DMA_CCR_MSIZE = longword($00000C00); //MSIZE[1:0] bits (Memory size)
  853. DMA_CCR_MSIZE_0 = longword($00000400); //Bit 0
  854. DMA_CCR_MSIZE_1 = longword($00000800); //Bit 1
  855. DMA_CCR_PL = longword($00003000); //PL[1:0] bits(Channel Priority level)
  856. DMA_CCR_PL_0 = longword($00001000); //Bit 0
  857. DMA_CCR_PL_1 = longword($00002000); //Bit 1
  858. DMA_CCR_MEM2MEM = longword($00004000); //Memory to memory mode
  859. //***************** Bit definition for DMA_CNDTR register ******************
  860. DMA_CNDTR_NDT = longword($0000FFFF); //Number of data to Transfer
  861. //***************** Bit definition for DMA_CPAR register *******************
  862. DMA_CPAR_PA = longword($FFFFFFFF); //Peripheral Address
  863. //***************** Bit definition for DMA_CMAR register *******************
  864. DMA_CMAR_MA = longword($FFFFFFFF); //Memory Address
  865. //****************************************************************************
  866. //External Interrupt/Event Controller (EXTI)
  867. //****************************************************************************
  868. //****************** Bit definition for EXTI_IMR register ******************
  869. EXTI_IMR_MR0 = longword($00000001); //Interrupt Mask on line 0
  870. EXTI_IMR_MR1 = longword($00000002); //Interrupt Mask on line 1
  871. EXTI_IMR_MR2 = longword($00000004); //Interrupt Mask on line 2
  872. EXTI_IMR_MR3 = longword($00000008); //Interrupt Mask on line 3
  873. EXTI_IMR_MR4 = longword($00000010); //Interrupt Mask on line 4
  874. EXTI_IMR_MR5 = longword($00000020); //Interrupt Mask on line 5
  875. EXTI_IMR_MR6 = longword($00000040); //Interrupt Mask on line 6
  876. EXTI_IMR_MR7 = longword($00000080); //Interrupt Mask on line 7
  877. EXTI_IMR_MR8 = longword($00000100); //Interrupt Mask on line 8
  878. EXTI_IMR_MR9 = longword($00000200); //Interrupt Mask on line 9
  879. EXTI_IMR_MR10 = longword($00000400); //Interrupt Mask on line 10
  880. EXTI_IMR_MR11 = longword($00000800); //Interrupt Mask on line 11
  881. EXTI_IMR_MR12 = longword($00001000); //Interrupt Mask on line 12
  882. EXTI_IMR_MR13 = longword($00002000); //Interrupt Mask on line 13
  883. EXTI_IMR_MR14 = longword($00004000); //Interrupt Mask on line 14
  884. EXTI_IMR_MR15 = longword($00008000); //Interrupt Mask on line 15
  885. EXTI_IMR_MR16 = longword($00010000); //Interrupt Mask on line 16
  886. EXTI_IMR_MR17 = longword($00020000); //Interrupt Mask on line 17
  887. EXTI_IMR_MR19 = longword($00080000); //Interrupt Mask on line 19
  888. EXTI_IMR_MR21 = longword($00200000); //Interrupt Mask on line 21
  889. EXTI_IMR_MR22 = longword($00400000); //Interrupt Mask on line 22
  890. EXTI_IMR_MR23 = longword($00800000); //Interrupt Mask on line 23
  891. EXTI_IMR_MR25 = longword($02000000); //Interrupt Mask on line 25
  892. EXTI_IMR_MR27 = longword($08000000); //Interrupt Mask on line 27
  893. //***************** Bit definition for EXTI_EMR register *******************
  894. EXTI_EMR_MR0 = longword($00000001); //Event Mask on line 0
  895. EXTI_EMR_MR1 = longword($00000002); //Event Mask on line 1
  896. EXTI_EMR_MR2 = longword($00000004); //Event Mask on line 2
  897. EXTI_EMR_MR3 = longword($00000008); //Event Mask on line 3
  898. EXTI_EMR_MR4 = longword($00000010); //Event Mask on line 4
  899. EXTI_EMR_MR5 = longword($00000020); //Event Mask on line 5
  900. EXTI_EMR_MR6 = longword($00000040); //Event Mask on line 6
  901. EXTI_EMR_MR7 = longword($00000080); //Event Mask on line 7
  902. EXTI_EMR_MR8 = longword($00000100); //Event Mask on line 8
  903. EXTI_EMR_MR9 = longword($00000200); //Event Mask on line 9
  904. EXTI_EMR_MR10 = longword($00000400); //Event Mask on line 10
  905. EXTI_EMR_MR11 = longword($00000800); //Event Mask on line 11
  906. EXTI_EMR_MR12 = longword($00001000); //Event Mask on line 12
  907. EXTI_EMR_MR13 = longword($00002000); //Event Mask on line 13
  908. EXTI_EMR_MR14 = longword($00004000); //Event Mask on line 14
  909. EXTI_EMR_MR15 = longword($00008000); //Event Mask on line 15
  910. EXTI_EMR_MR16 = longword($00010000); //Event Mask on line 16
  911. EXTI_EMR_MR17 = longword($00020000); //Event Mask on line 17
  912. EXTI_EMR_MR19 = longword($00080000); //Event Mask on line 19
  913. EXTI_EMR_MR21 = longword($00200000); //Event Mask on line 21
  914. EXTI_EMR_MR22 = longword($00400000); //Event Mask on line 22
  915. EXTI_EMR_MR23 = longword($00800000); //Event Mask on line 23
  916. EXTI_EMR_MR25 = longword($02000000); //Event Mask on line 25
  917. EXTI_EMR_MR27 = longword($08000000); //Event Mask on line 27
  918. //****************** Bit definition for EXTI_RTSR register *****************
  919. EXTI_RTSR_TR0 = longword($00000001); //Rising trigger event configuration bit of line 0
  920. EXTI_RTSR_TR1 = longword($00000002); //Rising trigger event configuration bit of line 1
  921. EXTI_RTSR_TR2 = longword($00000004); //Rising trigger event configuration bit of line 2
  922. EXTI_RTSR_TR3 = longword($00000008); //Rising trigger event configuration bit of line 3
  923. EXTI_RTSR_TR4 = longword($00000010); //Rising trigger event configuration bit of line 4
  924. EXTI_RTSR_TR5 = longword($00000020); //Rising trigger event configuration bit of line 5
  925. EXTI_RTSR_TR6 = longword($00000040); //Rising trigger event configuration bit of line 6
  926. EXTI_RTSR_TR7 = longword($00000080); //Rising trigger event configuration bit of line 7
  927. EXTI_RTSR_TR8 = longword($00000100); //Rising trigger event configuration bit of line 8
  928. EXTI_RTSR_TR9 = longword($00000200); //Rising trigger event configuration bit of line 9
  929. EXTI_RTSR_TR10 = longword($00000400); //Rising trigger event configuration bit of line 10
  930. EXTI_RTSR_TR11 = longword($00000800); //Rising trigger event configuration bit of line 11
  931. EXTI_RTSR_TR12 = longword($00001000); //Rising trigger event configuration bit of line 12
  932. EXTI_RTSR_TR13 = longword($00002000); //Rising trigger event configuration bit of line 13
  933. EXTI_RTSR_TR14 = longword($00004000); //Rising trigger event configuration bit of line 14
  934. EXTI_RTSR_TR15 = longword($00008000); //Rising trigger event configuration bit of line 15
  935. EXTI_RTSR_TR16 = longword($00010000); //Rising trigger event configuration bit of line 16
  936. EXTI_RTSR_TR17 = longword($00020000); //Rising trigger event configuration bit of line 17
  937. EXTI_RTSR_TR19 = longword($00080000); //Rising trigger event configuration bit of line 19
  938. //****************** Bit definition for EXTI_FTSR register ******************
  939. EXTI_FTSR_TR0 = longword($00000001); //Falling trigger event configuration bit of line 0
  940. EXTI_FTSR_TR1 = longword($00000002); //Falling trigger event configuration bit of line 1
  941. EXTI_FTSR_TR2 = longword($00000004); //Falling trigger event configuration bit of line 2
  942. EXTI_FTSR_TR3 = longword($00000008); //Falling trigger event configuration bit of line 3
  943. EXTI_FTSR_TR4 = longword($00000010); //Falling trigger event configuration bit of line 4
  944. EXTI_FTSR_TR5 = longword($00000020); //Falling trigger event configuration bit of line 5
  945. EXTI_FTSR_TR6 = longword($00000040); //Falling trigger event configuration bit of line 6
  946. EXTI_FTSR_TR7 = longword($00000080); //Falling trigger event configuration bit of line 7
  947. EXTI_FTSR_TR8 = longword($00000100); //Falling trigger event configuration bit of line 8
  948. EXTI_FTSR_TR9 = longword($00000200); //Falling trigger event configuration bit of line 9
  949. EXTI_FTSR_TR10 = longword($00000400); //Falling trigger event configuration bit of line 10
  950. EXTI_FTSR_TR11 = longword($00000800); //Falling trigger event configuration bit of line 11
  951. EXTI_FTSR_TR12 = longword($00001000); //Falling trigger event configuration bit of line 12
  952. EXTI_FTSR_TR13 = longword($00002000); //Falling trigger event configuration bit of line 13
  953. EXTI_FTSR_TR14 = longword($00004000); //Falling trigger event configuration bit of line 14
  954. EXTI_FTSR_TR15 = longword($00008000); //Falling trigger event configuration bit of line 15
  955. EXTI_FTSR_TR16 = longword($00010000); //Falling trigger event configuration bit of line 16
  956. EXTI_FTSR_TR17 = longword($00020000); //Falling trigger event configuration bit of line 17
  957. EXTI_FTSR_TR19 = longword($00080000); //Falling trigger event configuration bit of line 19
  958. //****************** Bit definition for EXTI_SWIER register ******************
  959. EXTI_SWIER_SWIER0 = longword($00000001); //Software Interrupt on line 0
  960. EXTI_SWIER_SWIER1 = longword($00000002); //Software Interrupt on line 1
  961. EXTI_SWIER_SWIER2 = longword($00000004); //Software Interrupt on line 2
  962. EXTI_SWIER_SWIER3 = longword($00000008); //Software Interrupt on line 3
  963. EXTI_SWIER_SWIER4 = longword($00000010); //Software Interrupt on line 4
  964. EXTI_SWIER_SWIER5 = longword($00000020); //Software Interrupt on line 5
  965. EXTI_SWIER_SWIER6 = longword($00000040); //Software Interrupt on line 6
  966. EXTI_SWIER_SWIER7 = longword($00000080); //Software Interrupt on line 7
  967. EXTI_SWIER_SWIER8 = longword($00000100); //Software Interrupt on line 8
  968. EXTI_SWIER_SWIER9 = longword($00000200); //Software Interrupt on line 9
  969. EXTI_SWIER_SWIER10 = longword($00000400); //Software Interrupt on line 10
  970. EXTI_SWIER_SWIER11 = longword($00000800); //Software Interrupt on line 11
  971. EXTI_SWIER_SWIER12 = longword($00001000); //Software Interrupt on line 12
  972. EXTI_SWIER_SWIER13 = longword($00002000); //Software Interrupt on line 13
  973. EXTI_SWIER_SWIER14 = longword($00004000); //Software Interrupt on line 14
  974. EXTI_SWIER_SWIER15 = longword($00008000); //Software Interrupt on line 15
  975. EXTI_SWIER_SWIER16 = longword($00010000); //Software Interrupt on line 16
  976. EXTI_SWIER_SWIER17 = longword($00020000); //Software Interrupt on line 17
  977. EXTI_SWIER_SWIER19 = longword($00080000); //Software Interrupt on line 19
  978. //***************** Bit definition for EXTI_PR register ********************
  979. EXTI_PR_PR0 = longword($00000001); //Pending bit 0
  980. EXTI_PR_PR1 = longword($00000002); //Pending bit 1
  981. EXTI_PR_PR2 = longword($00000004); //Pending bit 2
  982. EXTI_PR_PR3 = longword($00000008); //Pending bit 3
  983. EXTI_PR_PR4 = longword($00000010); //Pending bit 4
  984. EXTI_PR_PR5 = longword($00000020); //Pending bit 5
  985. EXTI_PR_PR6 = longword($00000040); //Pending bit 6
  986. EXTI_PR_PR7 = longword($00000080); //Pending bit 7
  987. EXTI_PR_PR8 = longword($00000100); //Pending bit 8
  988. EXTI_PR_PR9 = longword($00000200); //Pending bit 9
  989. EXTI_PR_PR10 = longword($00000400); //Pending bit 10
  990. EXTI_PR_PR11 = longword($00000800); //Pending bit 11
  991. EXTI_PR_PR12 = longword($00001000); //Pending bit 12
  992. EXTI_PR_PR13 = longword($00002000); //Pending bit 13
  993. EXTI_PR_PR14 = longword($00004000); //Pending bit 14
  994. EXTI_PR_PR15 = longword($00008000); //Pending bit 15
  995. EXTI_PR_PR16 = longword($00010000); //Pending bit 16
  996. EXTI_PR_PR17 = longword($00020000); //Pending bit 17
  997. EXTI_PR_PR19 = longword($00080000); //Pending bit 19
  998. //****************************************************************************
  999. //FLASH and Option Bytes Registers
  1000. //****************************************************************************
  1001. //****************** Bit definition for FLASH_ACR register *****************
  1002. FLASH_ACR_LATENCY = longword($00000001); //LATENCY bit (Latency)
  1003. FLASH_ACR_PRFTBE = longword($00000010); //Prefetch Buffer Enable
  1004. FLASH_ACR_PRFTBS = longword($00000020); //Prefetch Buffer Status
  1005. //***************** Bit definition for FLASH_KEYR register *****************
  1006. FLASH_KEYR_FKEYR = longword($FFFFFFFF); //FPEC Key
  1007. //**************** Bit definition for FLASH_OPTKEYR register ***************
  1008. FLASH_OPTKEYR_OPTKEYR = longword($FFFFFFFF); //Option Byte Key
  1009. //***************** FLASH Keys *********************************************
  1010. FLASH_FKEY1 = longword($45670123); //Flash program erase key1
  1011. FLASH_FKEY2 = longword($CDEF89AB); //Flash program erase key2: used with FLASH_PEKEY1
  1012. //to unlock the write access to the FPEC.
  1013. FLASH_OPTKEY1 = longword($45670123); //Flash option key1
  1014. FLASH_OPTKEY2 = longword($CDEF89AB); //Flash option key2: used with FLASH_OPTKEY1 to
  1015. //unlock the write access to the option byte block
  1016. //***************** Bit definition for FLASH_SR register ******************
  1017. FLASH_SR_BSY = longword($00000001); //Busy
  1018. FLASH_SR_PGERR = longword($00000004); //Programming Error
  1019. FLASH_SR_WRPERR = longword($00000010); //Write Protection Error
  1020. FLASH_SR_EOP = longword($00000020); //End of operation
  1021. //****************** Bit definition for FLASH_CR register ******************
  1022. FLASH_CR_PG = longword($00000001); //Programming
  1023. FLASH_CR_PER = longword($00000002); //Page Erase
  1024. FLASH_CR_MER = longword($00000004); //Mass Erase
  1025. FLASH_CR_OPTPG = longword($00000010); //Option Byte Programming
  1026. FLASH_CR_OPTER = longword($00000020); //Option Byte Erase
  1027. FLASH_CR_STRT = longword($00000040); //Start
  1028. FLASH_CR_LOCK = longword($00000080); //Lock
  1029. FLASH_CR_OPTWRE = longword($00000200); //Option Bytes Write Enable
  1030. FLASH_CR_ERRIE = longword($00000400); //Error Interrupt Enable
  1031. FLASH_CR_EOPIE = longword($00001000); //End of operation interrupt enable
  1032. FLASH_CR_OBL_LAUNCH = longword($00002000); //Option Bytes Loader Launch
  1033. //****************** Bit definition for FLASH_AR register ******************
  1034. FLASH_AR_FAR = longword($FFFFFFFF); //Flash Address
  1035. //***************** Bit definition for FLASH_OBR register ******************
  1036. FLASH_OBR_OPTERR = longword($00000001); //Option Byte Error
  1037. FLASH_OBR_RDPRT1 = longword($00000002); //Read protection Level 1
  1038. FLASH_OBR_RDPRT2 = longword($00000004); //Read protection Level 2
  1039. FLASH_OBR_USER = longword($00003700); //User Option Bytes
  1040. FLASH_OBR_IWDG_SW = longword($00000100); //IWDG SW
  1041. FLASH_OBR_nRST_STOP = longword($00000200); //nRST_STOP
  1042. FLASH_OBR_nRST_STDBY = longword($00000400); //nRST_STDBY
  1043. FLASH_OBR_nBOOT1 = longword($00001000); //nBOOT1
  1044. FLASH_OBR_VDDA_MONITOR = longword($00002000); //VDDA power supply supervisor
  1045. //Old BOOT1 bit definition, maintained for legacy purpose
  1046. FLASH_OBR_BOOT1 = FLASH_OBR_nBOOT1;
  1047. //Old BOOT1 bit definition, maintained for legacy purpose
  1048. FLASH_OBR_VDDA_ANALOG = FLASH_OBR_VDDA_MONITOR;
  1049. //***************** Bit definition for FLASH_WRPR register *****************
  1050. FLASH_WRPR_WRP = longword($0000FFFF); //Write Protect
  1051. //----------------------------------------------------------------------------
  1052. //***************** Bit definition for OB_RDP register *********************
  1053. OB_RDP_RDP = longword($000000FF); //Read protection option byte
  1054. OB_RDP_nRDP = longword($0000FF00); //Read protection complemented option byte
  1055. //***************** Bit definition for OB_USER register ********************
  1056. OB_USER_USER = longword($00FF0000); //User option byte
  1057. OB_USER_nUSER = longword($FF000000); //User complemented option byte
  1058. //***************** Bit definition for OB_WRP0 register ********************
  1059. OB_WRP0_WRP0 = longword($000000FF); //Flash memory write protection option bytes
  1060. OB_WRP0_nWRP0 = longword($0000FF00); //Flash memory write protection complemented option bytes
  1061. //***************** Bit definition for OB_WRP1 register ********************
  1062. OB_WRP1_WRP1 = longword($00FF0000); //Flash memory write protection option bytes
  1063. OB_WRP1_nWRP1 = longword($FF000000); //Flash memory write protection complemented option bytes
  1064. //****************************************************************************
  1065. //General Purpose IOs (GPIO)
  1066. //****************************************************************************
  1067. //****************** Bit definition for GPIO_MODER register ****************
  1068. GPIO_MODER_MODER0 = longword($00000003);
  1069. GPIO_MODER_MODER0_0 = longword($00000001);
  1070. GPIO_MODER_MODER0_1 = longword($00000002);
  1071. GPIO_MODER_MODER1 = longword($0000000C);
  1072. GPIO_MODER_MODER1_0 = longword($00000004);
  1073. GPIO_MODER_MODER1_1 = longword($00000008);
  1074. GPIO_MODER_MODER2 = longword($00000030);
  1075. GPIO_MODER_MODER2_0 = longword($00000010);
  1076. GPIO_MODER_MODER2_1 = longword($00000020);
  1077. GPIO_MODER_MODER3 = longword($000000C0);
  1078. GPIO_MODER_MODER3_0 = longword($00000040);
  1079. GPIO_MODER_MODER3_1 = longword($00000080);
  1080. GPIO_MODER_MODER4 = longword($00000300);
  1081. GPIO_MODER_MODER4_0 = longword($00000100);
  1082. GPIO_MODER_MODER4_1 = longword($00000200);
  1083. GPIO_MODER_MODER5 = longword($00000C00);
  1084. GPIO_MODER_MODER5_0 = longword($00000400);
  1085. GPIO_MODER_MODER5_1 = longword($00000800);
  1086. GPIO_MODER_MODER6 = longword($00003000);
  1087. GPIO_MODER_MODER6_0 = longword($00001000);
  1088. GPIO_MODER_MODER6_1 = longword($00002000);
  1089. GPIO_MODER_MODER7 = longword($0000C000);
  1090. GPIO_MODER_MODER7_0 = longword($00004000);
  1091. GPIO_MODER_MODER7_1 = longword($00008000);
  1092. GPIO_MODER_MODER8 = longword($00030000);
  1093. GPIO_MODER_MODER8_0 = longword($00010000);
  1094. GPIO_MODER_MODER8_1 = longword($00020000);
  1095. GPIO_MODER_MODER9 = longword($000C0000);
  1096. GPIO_MODER_MODER9_0 = longword($00040000);
  1097. GPIO_MODER_MODER9_1 = longword($00080000);
  1098. GPIO_MODER_MODER10 = longword($00300000);
  1099. GPIO_MODER_MODER10_0 = longword($00100000);
  1100. GPIO_MODER_MODER10_1 = longword($00200000);
  1101. GPIO_MODER_MODER11 = longword($00C00000);
  1102. GPIO_MODER_MODER11_0 = longword($00400000);
  1103. GPIO_MODER_MODER11_1 = longword($00800000);
  1104. GPIO_MODER_MODER12 = longword($03000000);
  1105. GPIO_MODER_MODER12_0 = longword($01000000);
  1106. GPIO_MODER_MODER12_1 = longword($02000000);
  1107. GPIO_MODER_MODER13 = longword($0C000000);
  1108. GPIO_MODER_MODER13_0 = longword($04000000);
  1109. GPIO_MODER_MODER13_1 = longword($08000000);
  1110. GPIO_MODER_MODER14 = longword($30000000);
  1111. GPIO_MODER_MODER14_0 = longword($10000000);
  1112. GPIO_MODER_MODER14_1 = longword($20000000);
  1113. GPIO_MODER_MODER15 = longword($C0000000);
  1114. GPIO_MODER_MODER15_0 = longword($40000000);
  1115. GPIO_MODER_MODER15_1 = longword($80000000);
  1116. //***************** Bit definition for GPIO_OTYPER register ****************
  1117. GPIO_OTYPER_OT_0 = longword($00000001);
  1118. GPIO_OTYPER_OT_1 = longword($00000002);
  1119. GPIO_OTYPER_OT_2 = longword($00000004);
  1120. GPIO_OTYPER_OT_3 = longword($00000008);
  1121. GPIO_OTYPER_OT_4 = longword($00000010);
  1122. GPIO_OTYPER_OT_5 = longword($00000020);
  1123. GPIO_OTYPER_OT_6 = longword($00000040);
  1124. GPIO_OTYPER_OT_7 = longword($00000080);
  1125. GPIO_OTYPER_OT_8 = longword($00000100);
  1126. GPIO_OTYPER_OT_9 = longword($00000200);
  1127. GPIO_OTYPER_OT_10 = longword($00000400);
  1128. GPIO_OTYPER_OT_11 = longword($00000800);
  1129. GPIO_OTYPER_OT_12 = longword($00001000);
  1130. GPIO_OTYPER_OT_13 = longword($00002000);
  1131. GPIO_OTYPER_OT_14 = longword($00004000);
  1132. GPIO_OTYPER_OT_15 = longword($00008000);
  1133. //*************** Bit definition for GPIO_OSPEEDR register *****************
  1134. GPIO_OSPEEDER_OSPEEDR0 = longword($00000003);
  1135. GPIO_OSPEEDER_OSPEEDR0_0 = longword($00000001);
  1136. GPIO_OSPEEDER_OSPEEDR0_1 = longword($00000002);
  1137. GPIO_OSPEEDER_OSPEEDR1 = longword($0000000C);
  1138. GPIO_OSPEEDER_OSPEEDR1_0 = longword($00000004);
  1139. GPIO_OSPEEDER_OSPEEDR1_1 = longword($00000008);
  1140. GPIO_OSPEEDER_OSPEEDR2 = longword($00000030);
  1141. GPIO_OSPEEDER_OSPEEDR2_0 = longword($00000010);
  1142. GPIO_OSPEEDER_OSPEEDR2_1 = longword($00000020);
  1143. GPIO_OSPEEDER_OSPEEDR3 = longword($000000C0);
  1144. GPIO_OSPEEDER_OSPEEDR3_0 = longword($00000040);
  1145. GPIO_OSPEEDER_OSPEEDR3_1 = longword($00000080);
  1146. GPIO_OSPEEDER_OSPEEDR4 = longword($00000300);
  1147. GPIO_OSPEEDER_OSPEEDR4_0 = longword($00000100);
  1148. GPIO_OSPEEDER_OSPEEDR4_1 = longword($00000200);
  1149. GPIO_OSPEEDER_OSPEEDR5 = longword($00000C00);
  1150. GPIO_OSPEEDER_OSPEEDR5_0 = longword($00000400);
  1151. GPIO_OSPEEDER_OSPEEDR5_1 = longword($00000800);
  1152. GPIO_OSPEEDER_OSPEEDR6 = longword($00003000);
  1153. GPIO_OSPEEDER_OSPEEDR6_0 = longword($00001000);
  1154. GPIO_OSPEEDER_OSPEEDR6_1 = longword($00002000);
  1155. GPIO_OSPEEDER_OSPEEDR7 = longword($0000C000);
  1156. GPIO_OSPEEDER_OSPEEDR7_0 = longword($00004000);
  1157. GPIO_OSPEEDER_OSPEEDR7_1 = longword($00008000);
  1158. GPIO_OSPEEDER_OSPEEDR8 = longword($00030000);
  1159. GPIO_OSPEEDER_OSPEEDR8_0 = longword($00010000);
  1160. GPIO_OSPEEDER_OSPEEDR8_1 = longword($00020000);
  1161. GPIO_OSPEEDER_OSPEEDR9 = longword($000C0000);
  1162. GPIO_OSPEEDER_OSPEEDR9_0 = longword($00040000);
  1163. GPIO_OSPEEDER_OSPEEDR9_1 = longword($00080000);
  1164. GPIO_OSPEEDER_OSPEEDR10 = longword($00300000);
  1165. GPIO_OSPEEDER_OSPEEDR10_0 = longword($00100000);
  1166. GPIO_OSPEEDER_OSPEEDR10_1 = longword($00200000);
  1167. GPIO_OSPEEDER_OSPEEDR11 = longword($00C00000);
  1168. GPIO_OSPEEDER_OSPEEDR11_0 = longword($00400000);
  1169. GPIO_OSPEEDER_OSPEEDR11_1 = longword($00800000);
  1170. GPIO_OSPEEDER_OSPEEDR12 = longword($03000000);
  1171. GPIO_OSPEEDER_OSPEEDR12_0 = longword($01000000);
  1172. GPIO_OSPEEDER_OSPEEDR12_1 = longword($02000000);
  1173. GPIO_OSPEEDER_OSPEEDR13 = longword($0C000000);
  1174. GPIO_OSPEEDER_OSPEEDR13_0 = longword($04000000);
  1175. GPIO_OSPEEDER_OSPEEDR13_1 = longword($08000000);
  1176. GPIO_OSPEEDER_OSPEEDR14 = longword($30000000);
  1177. GPIO_OSPEEDER_OSPEEDR14_0 = longword($10000000);
  1178. GPIO_OSPEEDER_OSPEEDR14_1 = longword($20000000);
  1179. GPIO_OSPEEDER_OSPEEDR15 = longword($C0000000);
  1180. GPIO_OSPEEDER_OSPEEDR15_0 = longword($40000000);
  1181. GPIO_OSPEEDER_OSPEEDR15_1 = longword($80000000);
  1182. //****************** Bit definition for GPIO_PUPDR register *****************
  1183. GPIO_PUPDR_PUPDR0 = longword($00000003);
  1184. GPIO_PUPDR_PUPDR0_0 = longword($00000001);
  1185. GPIO_PUPDR_PUPDR0_1 = longword($00000002);
  1186. GPIO_PUPDR_PUPDR1 = longword($0000000C);
  1187. GPIO_PUPDR_PUPDR1_0 = longword($00000004);
  1188. GPIO_PUPDR_PUPDR1_1 = longword($00000008);
  1189. GPIO_PUPDR_PUPDR2 = longword($00000030);
  1190. GPIO_PUPDR_PUPDR2_0 = longword($00000010);
  1191. GPIO_PUPDR_PUPDR2_1 = longword($00000020);
  1192. GPIO_PUPDR_PUPDR3 = longword($000000C0);
  1193. GPIO_PUPDR_PUPDR3_0 = longword($00000040);
  1194. GPIO_PUPDR_PUPDR3_1 = longword($00000080);
  1195. GPIO_PUPDR_PUPDR4 = longword($00000300);
  1196. GPIO_PUPDR_PUPDR4_0 = longword($00000100);
  1197. GPIO_PUPDR_PUPDR4_1 = longword($00000200);
  1198. GPIO_PUPDR_PUPDR5 = longword($00000C00);
  1199. GPIO_PUPDR_PUPDR5_0 = longword($00000400);
  1200. GPIO_PUPDR_PUPDR5_1 = longword($00000800);
  1201. GPIO_PUPDR_PUPDR6 = longword($00003000);
  1202. GPIO_PUPDR_PUPDR6_0 = longword($00001000);
  1203. GPIO_PUPDR_PUPDR6_1 = longword($00002000);
  1204. GPIO_PUPDR_PUPDR7 = longword($0000C000);
  1205. GPIO_PUPDR_PUPDR7_0 = longword($00004000);
  1206. GPIO_PUPDR_PUPDR7_1 = longword($00008000);
  1207. GPIO_PUPDR_PUPDR8 = longword($00030000);
  1208. GPIO_PUPDR_PUPDR8_0 = longword($00010000);
  1209. GPIO_PUPDR_PUPDR8_1 = longword($00020000);
  1210. GPIO_PUPDR_PUPDR9 = longword($000C0000);
  1211. GPIO_PUPDR_PUPDR9_0 = longword($00040000);
  1212. GPIO_PUPDR_PUPDR9_1 = longword($00080000);
  1213. GPIO_PUPDR_PUPDR10 = longword($00300000);
  1214. GPIO_PUPDR_PUPDR10_0 = longword($00100000);
  1215. GPIO_PUPDR_PUPDR10_1 = longword($00200000);
  1216. GPIO_PUPDR_PUPDR11 = longword($00C00000);
  1217. GPIO_PUPDR_PUPDR11_0 = longword($00400000);
  1218. GPIO_PUPDR_PUPDR11_1 = longword($00800000);
  1219. GPIO_PUPDR_PUPDR12 = longword($03000000);
  1220. GPIO_PUPDR_PUPDR12_0 = longword($01000000);
  1221. GPIO_PUPDR_PUPDR12_1 = longword($02000000);
  1222. GPIO_PUPDR_PUPDR13 = longword($0C000000);
  1223. GPIO_PUPDR_PUPDR13_0 = longword($04000000);
  1224. GPIO_PUPDR_PUPDR13_1 = longword($08000000);
  1225. GPIO_PUPDR_PUPDR14 = longword($30000000);
  1226. GPIO_PUPDR_PUPDR14_0 = longword($10000000);
  1227. GPIO_PUPDR_PUPDR14_1 = longword($20000000);
  1228. GPIO_PUPDR_PUPDR15 = longword($C0000000);
  1229. GPIO_PUPDR_PUPDR15_0 = longword($40000000);
  1230. GPIO_PUPDR_PUPDR15_1 = longword($80000000);
  1231. //****************** Bit definition for GPIO_IDR register ******************
  1232. GPIO_IDR_0 = longword($00000001);
  1233. GPIO_IDR_1 = longword($00000002);
  1234. GPIO_IDR_2 = longword($00000004);
  1235. GPIO_IDR_3 = longword($00000008);
  1236. GPIO_IDR_4 = longword($00000010);
  1237. GPIO_IDR_5 = longword($00000020);
  1238. GPIO_IDR_6 = longword($00000040);
  1239. GPIO_IDR_7 = longword($00000080);
  1240. GPIO_IDR_8 = longword($00000100);
  1241. GPIO_IDR_9 = longword($00000200);
  1242. GPIO_IDR_10 = longword($00000400);
  1243. GPIO_IDR_11 = longword($00000800);
  1244. GPIO_IDR_12 = longword($00001000);
  1245. GPIO_IDR_13 = longword($00002000);
  1246. GPIO_IDR_14 = longword($00004000);
  1247. GPIO_IDR_15 = longword($00008000);
  1248. //***************** Bit definition for GPIO_ODR register *******************
  1249. GPIO_ODR_0 = longword($00000001);
  1250. GPIO_ODR_1 = longword($00000002);
  1251. GPIO_ODR_2 = longword($00000004);
  1252. GPIO_ODR_3 = longword($00000008);
  1253. GPIO_ODR_4 = longword($00000010);
  1254. GPIO_ODR_5 = longword($00000020);
  1255. GPIO_ODR_6 = longword($00000040);
  1256. GPIO_ODR_7 = longword($00000080);
  1257. GPIO_ODR_8 = longword($00000100);
  1258. GPIO_ODR_9 = longword($00000200);
  1259. GPIO_ODR_10 = longword($00000400);
  1260. GPIO_ODR_11 = longword($00000800);
  1261. GPIO_ODR_12 = longword($00001000);
  1262. GPIO_ODR_13 = longword($00002000);
  1263. GPIO_ODR_14 = longword($00004000);
  1264. GPIO_ODR_15 = longword($00008000);
  1265. //***************** Bit definition for GPIO_BSRR register *******************
  1266. GPIO_BSRR_BS_0 = longword($00000001);
  1267. GPIO_BSRR_BS_1 = longword($00000002);
  1268. GPIO_BSRR_BS_2 = longword($00000004);
  1269. GPIO_BSRR_BS_3 = longword($00000008);
  1270. GPIO_BSRR_BS_4 = longword($00000010);
  1271. GPIO_BSRR_BS_5 = longword($00000020);
  1272. GPIO_BSRR_BS_6 = longword($00000040);
  1273. GPIO_BSRR_BS_7 = longword($00000080);
  1274. GPIO_BSRR_BS_8 = longword($00000100);
  1275. GPIO_BSRR_BS_9 = longword($00000200);
  1276. GPIO_BSRR_BS_10 = longword($00000400);
  1277. GPIO_BSRR_BS_11 = longword($00000800);
  1278. GPIO_BSRR_BS_12 = longword($00001000);
  1279. GPIO_BSRR_BS_13 = longword($00002000);
  1280. GPIO_BSRR_BS_14 = longword($00004000);
  1281. GPIO_BSRR_BS_15 = longword($00008000);
  1282. GPIO_BSRR_BR_0 = longword($00010000);
  1283. GPIO_BSRR_BR_1 = longword($00020000);
  1284. GPIO_BSRR_BR_2 = longword($00040000);
  1285. GPIO_BSRR_BR_3 = longword($00080000);
  1286. GPIO_BSRR_BR_4 = longword($00100000);
  1287. GPIO_BSRR_BR_5 = longword($00200000);
  1288. GPIO_BSRR_BR_6 = longword($00400000);
  1289. GPIO_BSRR_BR_7 = longword($00800000);
  1290. GPIO_BSRR_BR_8 = longword($01000000);
  1291. GPIO_BSRR_BR_9 = longword($02000000);
  1292. GPIO_BSRR_BR_10 = longword($04000000);
  1293. GPIO_BSRR_BR_11 = longword($08000000);
  1294. GPIO_BSRR_BR_12 = longword($10000000);
  1295. GPIO_BSRR_BR_13 = longword($20000000);
  1296. GPIO_BSRR_BR_14 = longword($40000000);
  1297. GPIO_BSRR_BR_15 = longword($80000000);
  1298. //***************** Bit definition for GPIO_LCKR register *******************
  1299. GPIO_LCKR_LCK0 = longword($00000001);
  1300. GPIO_LCKR_LCK1 = longword($00000002);
  1301. GPIO_LCKR_LCK2 = longword($00000004);
  1302. GPIO_LCKR_LCK3 = longword($00000008);
  1303. GPIO_LCKR_LCK4 = longword($00000010);
  1304. GPIO_LCKR_LCK5 = longword($00000020);
  1305. GPIO_LCKR_LCK6 = longword($00000040);
  1306. GPIO_LCKR_LCK7 = longword($00000080);
  1307. GPIO_LCKR_LCK8 = longword($00000100);
  1308. GPIO_LCKR_LCK9 = longword($00000200);
  1309. GPIO_LCKR_LCK10 = longword($00000400);
  1310. GPIO_LCKR_LCK11 = longword($00000800);
  1311. GPIO_LCKR_LCK12 = longword($00001000);
  1312. GPIO_LCKR_LCK13 = longword($00002000);
  1313. GPIO_LCKR_LCK14 = longword($00004000);
  1314. GPIO_LCKR_LCK15 = longword($00008000);
  1315. GPIO_LCKR_LCKK = longword($00010000);
  1316. //***************** Bit definition for GPIO_AFRL register *******************
  1317. GPIO_AFRL_AFRL0 = longword($0000000F);
  1318. GPIO_AFRL_AFRL1 = longword($000000F0);
  1319. GPIO_AFRL_AFRL2 = longword($00000F00);
  1320. GPIO_AFRL_AFRL3 = longword($0000F000);
  1321. GPIO_AFRL_AFRL4 = longword($000F0000);
  1322. GPIO_AFRL_AFRL5 = longword($00F00000);
  1323. GPIO_AFRL_AFRL6 = longword($0F000000);
  1324. GPIO_AFRL_AFRL7 = longword($F0000000);
  1325. //***************** Bit definition for GPIO_AFRH register *******************
  1326. GPIO_AFRH_AFRH0 = longword($0000000F);
  1327. GPIO_AFRH_AFRH1 = longword($000000F0);
  1328. GPIO_AFRH_AFRH2 = longword($00000F00);
  1329. GPIO_AFRH_AFRH3 = longword($0000F000);
  1330. GPIO_AFRH_AFRH4 = longword($000F0000);
  1331. GPIO_AFRH_AFRH5 = longword($00F00000);
  1332. GPIO_AFRH_AFRH6 = longword($0F000000);
  1333. GPIO_AFRH_AFRH7 = longword($F0000000);
  1334. //***************** Bit definition for GPIO_BRR register ********************
  1335. GPIO_BRR_BR_0 = longword($00000001);
  1336. GPIO_BRR_BR_1 = longword($00000002);
  1337. GPIO_BRR_BR_2 = longword($00000004);
  1338. GPIO_BRR_BR_3 = longword($00000008);
  1339. GPIO_BRR_BR_4 = longword($00000010);
  1340. GPIO_BRR_BR_5 = longword($00000020);
  1341. GPIO_BRR_BR_6 = longword($00000040);
  1342. GPIO_BRR_BR_7 = longword($00000080);
  1343. GPIO_BRR_BR_8 = longword($00000100);
  1344. GPIO_BRR_BR_9 = longword($00000200);
  1345. GPIO_BRR_BR_10 = longword($00000400);
  1346. GPIO_BRR_BR_11 = longword($00000800);
  1347. GPIO_BRR_BR_12 = longword($00001000);
  1348. GPIO_BRR_BR_13 = longword($00002000);
  1349. GPIO_BRR_BR_14 = longword($00004000);
  1350. GPIO_BRR_BR_15 = longword($00008000);
  1351. //****************************************************************************
  1352. //Inter-integrated Circuit Interface (I2C)
  1353. //****************************************************************************
  1354. //****************** Bit definition for I2C_CR1 register ******************
  1355. I2C_CR1_PE = longword($00000001); //Peripheral enable
  1356. I2C_CR1_TXIE = longword($00000002); //TX interrupt enable
  1357. I2C_CR1_RXIE = longword($00000004); //RX interrupt enable
  1358. I2C_CR1_ADDRIE = longword($00000008); //Address match interrupt enable
  1359. I2C_CR1_NACKIE = longword($00000010); //NACK received interrupt enable
  1360. I2C_CR1_STOPIE = longword($00000020); //STOP detection interrupt enable
  1361. I2C_CR1_TCIE = longword($00000040); //Transfer complete interrupt enable
  1362. I2C_CR1_ERRIE = longword($00000080); //Errors interrupt enable
  1363. I2C_CR1_DFN = longword($00000F00); //Digital noise filter
  1364. I2C_CR1_ANFOFF = longword($00001000); //Analog noise filter OFF
  1365. I2C_CR1_SWRST = longword($00002000); //Software reset
  1366. I2C_CR1_TXDMAEN = longword($00004000); //DMA transmission requests enable
  1367. I2C_CR1_RXDMAEN = longword($00008000); //DMA reception requests enable
  1368. I2C_CR1_SBC = longword($00010000); //Slave byte control
  1369. I2C_CR1_NOSTRETCH = longword($00020000); //Clock stretching disable
  1370. I2C_CR1_WUPEN = longword($00040000); //Wakeup from STOP enable
  1371. I2C_CR1_GCEN = longword($00080000); //General call enable
  1372. I2C_CR1_SMBHEN = longword($00100000); //SMBus host address enable
  1373. I2C_CR1_SMBDEN = longword($00200000); //SMBus device default address enable
  1374. I2C_CR1_ALERTEN = longword($00400000); //SMBus alert enable
  1375. I2C_CR1_PECEN = longword($00800000); //PEC enable
  1376. //***************** Bit definition for I2C_CR2 register *******************
  1377. I2C_CR2_SADD = longword($000003FF); //Slave address (master mode)
  1378. I2C_CR2_RD_WRN = longword($00000400); //Transfer direction (master mode)
  1379. I2C_CR2_ADD10 = longword($00000800); //10-bit addressing mode (master mode)
  1380. I2C_CR2_HEAD10R = longword($00001000); //10-bit address header only read direction (master mode)
  1381. I2C_CR2_START = longword($00002000); //START generation
  1382. I2C_CR2_STOP = longword($00004000); //STOP generation (master mode)
  1383. I2C_CR2_NACK = longword($00008000); //NACK generation (slave mode)
  1384. I2C_CR2_NBYTES = longword($00FF0000); //Number of bytes
  1385. I2C_CR2_RELOAD = longword($01000000); //NBYTES reload mode
  1386. I2C_CR2_AUTOEND = longword($02000000); //Automatic end mode (master mode)
  1387. I2C_CR2_PECBYTE = longword($04000000); //Packet error checking byte
  1388. //****************** Bit definition for I2C_OAR1 register *****************
  1389. I2C_OAR1_OA1 = longword($000003FF); //Interface own address 1
  1390. I2C_OAR1_OA1MODE = longword($00000400); //Own address 1 10-bit mode
  1391. I2C_OAR1_OA1EN = longword($00008000); //Own address 1 enable
  1392. //****************** Bit definition for I2C_OAR2 register *****************
  1393. I2C_OAR2_OA2 = longword($000000FE); //Interface own address 2
  1394. I2C_OAR2_OA2MSK = longword($00000700); //Own address 2 masks
  1395. I2C_OAR2_OA2EN = longword($00008000); //Own address 2 enable
  1396. //****************** Bit definition for I2C_TIMINGR register ******************
  1397. I2C_TIMINGR_SCLL = longword($000000FF); //SCL low period (master mode)
  1398. I2C_TIMINGR_SCLH = longword($0000FF00); //SCL high period (master mode)
  1399. I2C_TIMINGR_SDADEL = longword($000F0000); //Data hold time
  1400. I2C_TIMINGR_SCLDEL = longword($00F00000); //Data setup time
  1401. I2C_TIMINGR_PRESC = longword($F0000000); //Timings prescaler
  1402. //****************** Bit definition for I2C_TIMEOUTR register ******************
  1403. I2C_TIMEOUTR_TIMEOUTA = longword($00000FFF); //Bus timeout A
  1404. I2C_TIMEOUTR_TIDLE = longword($00001000); //Idle clock timeout detection
  1405. I2C_TIMEOUTR_TIMOUTEN = longword($00008000); //Clock timeout enable
  1406. I2C_TIMEOUTR_TIMEOUTB = longword($0FFF0000); //Bus timeout B
  1407. I2C_TIMEOUTR_TEXTEN = longword($80000000); //Extended clock timeout enable
  1408. //***************** Bit definition for I2C_ISR register ********************
  1409. I2C_ISR_TXE = longword($00000001); //Transmit data register empty
  1410. I2C_ISR_TXIS = longword($00000002); //Transmit interrupt status
  1411. I2C_ISR_RXNE = longword($00000004); //Receive data register not empty
  1412. I2C_ISR_ADDR = longword($00000008); //Address matched (slave mode)
  1413. I2C_ISR_NACKF = longword($00000010); //NACK received flag
  1414. I2C_ISR_STOPF = longword($00000020); //STOP detection flag
  1415. I2C_ISR_TC = longword($00000040); //Transfer complete (master mode)
  1416. I2C_ISR_TCR = longword($00000080); //Transfer complete reload
  1417. I2C_ISR_BERR = longword($00000100); //Bus error
  1418. I2C_ISR_ARLO = longword($00000200); //Arbitration lost
  1419. I2C_ISR_OVR = longword($00000400); //Overrun/Underrun
  1420. I2C_ISR_PECERR = longword($00000800); //PEC error in reception
  1421. I2C_ISR_TIMEOUT = longword($00001000); //Timeout or Tlow detection flag
  1422. I2C_ISR_ALERT = longword($00002000); //SMBus alert
  1423. I2C_ISR_BUSY = longword($00008000); //Bus busy
  1424. I2C_ISR_DIR = longword($00010000); //Transfer direction (slave mode)
  1425. I2C_ISR_ADDCODE = longword($00FE0000); //Address match code (slave mode)
  1426. //***************** Bit definition for I2C_ICR register ********************
  1427. I2C_ICR_ADDRCF = longword($00000008); //Address matched clear flag
  1428. I2C_ICR_NACKCF = longword($00000010); //NACK clear flag
  1429. I2C_ICR_STOPCF = longword($00000020); //STOP detection clear flag
  1430. I2C_ICR_BERRCF = longword($00000100); //Bus error clear flag
  1431. I2C_ICR_ARLOCF = longword($00000200); //Arbitration lost clear flag
  1432. I2C_ICR_OVRCF = longword($00000400); //Overrun/Underrun clear flag
  1433. I2C_ICR_PECCF = longword($00000800); //PAC error clear flag
  1434. I2C_ICR_TIMOUTCF = longword($00001000); //Timeout clear flag
  1435. I2C_ICR_ALERTCF = longword($00002000); //Alert clear flag
  1436. //***************** Bit definition for I2C_PECR register ********************
  1437. I2C_PECR_PEC = longword($000000FF); //PEC register
  1438. //***************** Bit definition for I2C_RXDR register ********************
  1439. I2C_RXDR_RXDATA = longword($000000FF); //8-bit receive data
  1440. //***************** Bit definition for I2C_TXDR register ********************
  1441. I2C_TXDR_TXDATA = longword($000000FF); //8-bit transmit data
  1442. //****************************************************************************
  1443. //Independent WATCHDOG (IWDG)
  1444. //****************************************************************************
  1445. //****************** Bit definition for IWDG_KR register *******************
  1446. IWDG_KR_KEY = longword($FFFF); //Key value (write only, read 0000h)
  1447. //****************** Bit definition for IWDG_PR register *******************
  1448. IWDG_PR_PR = longword($07); //PR[2:0] (Prescaler divider)
  1449. IWDG_PR_PR_0 = longword($01); //Bit 0
  1450. IWDG_PR_PR_1 = longword($02); //Bit 1
  1451. IWDG_PR_PR_2 = longword($04); //Bit 2
  1452. //****************** Bit definition for IWDG_RLR register ******************
  1453. IWDG_RLR_RL = longword($0FFF); //Watchdog counter reload value
  1454. //****************** Bit definition for IWDG_SR register *******************
  1455. IWDG_SR_PVU = longword($01); //Watchdog prescaler value update
  1456. IWDG_SR_RVU = longword($02); //Watchdog counter reload value update
  1457. IWDG_SR_WVU = longword($04); //Watchdog counter window value update
  1458. //****************** Bit definition for IWDG_KR register *******************
  1459. IWDG_WINR_WIN = longword($0FFF); //Watchdog counter window value
  1460. //****************************************************************************
  1461. //Power Control (PWR)
  1462. //****************************************************************************
  1463. //******************* Bit definition for PWR_CR register *******************
  1464. PWR_CR_LPSDSR = longword($0001); //Low-power deepsleep/sleep/low power run
  1465. PWR_CR_PDDS = longword($0002); //Power Down Deepsleep
  1466. PWR_CR_CWUF = longword($0004); //Clear Wakeup Flag
  1467. PWR_CR_CSBF = longword($0008); //Clear Standby Flag
  1468. PWR_CR_PVDE = longword($0010); //Power Voltage Detector Enable
  1469. PWR_CR_PLS = longword($00E0); //PLS[2:0] bits (PVD Level Selection)
  1470. PWR_CR_PLS_0 = longword($0020); //Bit 0
  1471. PWR_CR_PLS_1 = longword($0040); //Bit 1
  1472. PWR_CR_PLS_2 = longword($0080); //Bit 2
  1473. //PVD level configuration
  1474. PWR_CR_PLS_LEV0 = longword($0000); //PVD level 0
  1475. PWR_CR_PLS_LEV1 = longword($0020); //PVD level 1
  1476. PWR_CR_PLS_LEV2 = longword($0040); //PVD level 2
  1477. PWR_CR_PLS_LEV3 = longword($0060); //PVD level 3
  1478. PWR_CR_PLS_LEV4 = longword($0080); //PVD level 4
  1479. PWR_CR_PLS_LEV5 = longword($00A0); //PVD level 5
  1480. PWR_CR_PLS_LEV6 = longword($00C0); //PVD level 6
  1481. PWR_CR_PLS_LEV7 = longword($00E0); //PVD level 7
  1482. PWR_CR_DBP = longword($0100); //Disable Backup Domain write protection
  1483. //****************** Bit definition for PWR_CSR register *******************
  1484. PWR_CSR_WUF = longword($0001); //Wakeup Flag
  1485. PWR_CSR_SBF = longword($0002); //Standby Flag
  1486. PWR_CSR_PVDO = longword($0004); //PVD Output
  1487. PWR_CSR_VREFINTRDYF = longword($0008); //Internal voltage reference (VREFINT) ready flag
  1488. PWR_CSR_EWUP1 = longword($0100); //Enable WKUP pin 1
  1489. PWR_CSR_EWUP2 = longword($0200); //Enable WKUP pin 2
  1490. //****************************************************************************
  1491. //Reset and Clock Control
  1492. //****************************************************************************
  1493. //******************* Bit definition for RCC_CR register *******************
  1494. RCC_CR_HSION = longword($00000001); //Internal High Speed clock enable
  1495. RCC_CR_HSIRDY = longword($00000002); //Internal High Speed clock ready flag
  1496. RCC_CR_HSITRIM = longword($000000F8); //Internal High Speed clock trimming
  1497. RCC_CR_HSICAL = longword($0000FF00); //Internal High Speed clock Calibration
  1498. RCC_CR_HSEON = longword($00010000); //External High Speed clock enable
  1499. RCC_CR_HSERDY = longword($00020000); //External High Speed clock ready flag
  1500. RCC_CR_HSEBYP = longword($00040000); //External High Speed clock Bypass
  1501. RCC_CR_CSSON = longword($00080000); //Clock Security System enable
  1502. RCC_CR_PLLON = longword($01000000); //PLL enable
  1503. RCC_CR_PLLRDY = longword($02000000); //PLL clock ready flag
  1504. //****************** Bit definition for RCC_CFGR register ******************
  1505. //SW configuration
  1506. RCC_CFGR_SW = longword($00000003); //SW[1:0] bits (System clock Switch)
  1507. RCC_CFGR_SW_0 = longword($00000001); //Bit 0
  1508. RCC_CFGR_SW_1 = longword($00000002); //Bit 1
  1509. RCC_CFGR_SW_HSI = longword($00000000); //HSI selected as system clock
  1510. RCC_CFGR_SW_HSE = longword($00000001); //HSE selected as system clock
  1511. RCC_CFGR_SW_PLL = longword($00000002); //PLL selected as system clock
  1512. //SWS configuration
  1513. RCC_CFGR_SWS = longword($0000000C); //SWS[1:0] bits (System Clock Switch Status)
  1514. RCC_CFGR_SWS_0 = longword($00000004); //Bit 0
  1515. RCC_CFGR_SWS_1 = longword($00000008); //Bit 1
  1516. RCC_CFGR_SWS_HSI = longword($00000000); //HSI oscillator used as system clock
  1517. RCC_CFGR_SWS_HSE = longword($00000004); //HSE oscillator used as system clock
  1518. RCC_CFGR_SWS_PLL = longword($00000008); //PLL used as system clock
  1519. //HPRE configuration
  1520. RCC_CFGR_HPRE = longword($000000F0); //HPRE[3:0] bits (AHB prescaler)
  1521. RCC_CFGR_HPRE_0 = longword($00000010); //Bit 0
  1522. RCC_CFGR_HPRE_1 = longword($00000020); //Bit 1
  1523. RCC_CFGR_HPRE_2 = longword($00000040); //Bit 2
  1524. RCC_CFGR_HPRE_3 = longword($00000080); //Bit 3
  1525. RCC_CFGR_HPRE_DIV1 = longword($00000000); //SYSCLK not divided
  1526. RCC_CFGR_HPRE_DIV2 = longword($00000080); //SYSCLK divided by 2
  1527. RCC_CFGR_HPRE_DIV4 = longword($00000090); //SYSCLK divided by 4
  1528. RCC_CFGR_HPRE_DIV8 = longword($000000A0); //SYSCLK divided by 8
  1529. RCC_CFGR_HPRE_DIV16 = longword($000000B0); //SYSCLK divided by 16
  1530. RCC_CFGR_HPRE_DIV64 = longword($000000C0); //SYSCLK divided by 64
  1531. RCC_CFGR_HPRE_DIV128 = longword($000000D0); //SYSCLK divided by 128
  1532. RCC_CFGR_HPRE_DIV256 = longword($000000E0); //SYSCLK divided by 256
  1533. RCC_CFGR_HPRE_DIV512 = longword($000000F0); //SYSCLK divided by 512
  1534. //PPRE configuration
  1535. RCC_CFGR_PPRE = longword($00000700); //PRE[2:0] bits (APB prescaler)
  1536. RCC_CFGR_PPRE_0 = longword($00000100); //Bit 0
  1537. RCC_CFGR_PPRE_1 = longword($00000200); //Bit 1
  1538. RCC_CFGR_PPRE_2 = longword($00000400); //Bit 2
  1539. RCC_CFGR_PPRE_DIV1 = longword($00000000); //HCLK not divided
  1540. RCC_CFGR_PPRE_DIV2 = longword($00000400); //HCLK divided by 2
  1541. RCC_CFGR_PPRE_DIV4 = longword($00000500); //HCLK divided by 4
  1542. RCC_CFGR_PPRE_DIV8 = longword($00000600); //HCLK divided by 8
  1543. RCC_CFGR_PPRE_DIV16 = longword($00000700); //HCLK divided by 16
  1544. //ADCPPRE configuration
  1545. RCC_CFGR_ADCPRE = longword($00004000); //ADCPRE bit (ADC prescaler)
  1546. RCC_CFGR_ADCPRE_DIV2 = longword($00000000); //PCLK divided by 2
  1547. RCC_CFGR_ADCPRE_DIV4 = longword($00004000); //PCLK divided by 4
  1548. RCC_CFGR_PLLSRC = longword($00010000); //PLL entry clock source
  1549. RCC_CFGR_PLLXTPRE = longword($00020000); //HSE divider for PLL entry
  1550. //PLLMUL configuration
  1551. RCC_CFGR_PLLMULL = longword($003C0000); //PLLMUL[3:0] bits (PLL multiplication factor)
  1552. RCC_CFGR_PLLMULL_0 = longword($00040000); //Bit 0
  1553. RCC_CFGR_PLLMULL_1 = longword($00080000); //Bit 1
  1554. RCC_CFGR_PLLMULL_2 = longword($00100000); //Bit 2
  1555. RCC_CFGR_PLLMULL_3 = longword($00200000); //Bit 3
  1556. RCC_CFGR_PLLSRC_HSI_Div2 = longword($00000000); //HSI clock divided by 2 selected as PLL entry clock source
  1557. RCC_CFGR_PLLSRC_PREDIV1 = longword($00010000); //PREDIV1 clock selected as PLL entry clock source
  1558. RCC_CFGR_PLLXTPRE_PREDIV1 = longword($00000000); //PREDIV1 clock not divided for PLL entry
  1559. RCC_CFGR_PLLXTPRE_PREDIV1_Div2 = longword($00020000); //PREDIV1 clock divided by 2 for PLL entry
  1560. RCC_CFGR_PLLMULL2 = longword($00000000); //PLL input clock*2
  1561. RCC_CFGR_PLLMULL3 = longword($00040000); //PLL input clock*3
  1562. RCC_CFGR_PLLMULL4 = longword($00080000); //PLL input clock*4
  1563. RCC_CFGR_PLLMULL5 = longword($000C0000); //PLL input clock*5
  1564. RCC_CFGR_PLLMULL6 = longword($00100000); //PLL input clock*6
  1565. RCC_CFGR_PLLMULL7 = longword($00140000); //PLL input clock*7
  1566. RCC_CFGR_PLLMULL8 = longword($00180000); //PLL input clock*8
  1567. RCC_CFGR_PLLMULL9 = longword($001C0000); //PLL input clock*9
  1568. RCC_CFGR_PLLMULL10 = longword($00200000); //PLL input clock10
  1569. RCC_CFGR_PLLMULL11 = longword($00240000); //PLL input clock*11
  1570. RCC_CFGR_PLLMULL12 = longword($00280000); //PLL input clock*12
  1571. RCC_CFGR_PLLMULL13 = longword($002C0000); //PLL input clock*13
  1572. RCC_CFGR_PLLMULL14 = longword($00300000); //PLL input clock*14
  1573. RCC_CFGR_PLLMULL15 = longword($00340000); //PLL input clock*15
  1574. RCC_CFGR_PLLMULL16 = longword($00380000); //PLL input clock*16
  1575. //MCO configuration
  1576. RCC_CFGR_MCO = longword($07000000); //MCO[2:0] bits (Microcontroller Clock Output)
  1577. RCC_CFGR_MCO_0 = longword($01000000); //Bit 0
  1578. RCC_CFGR_MCO_1 = longword($02000000); //Bit 1
  1579. RCC_CFGR_MCO_2 = longword($04000000); //Bit 2
  1580. RCC_CFGR_MCO_NOCLOCK = longword($00000000); //No clock
  1581. RCC_CFGR_MCO_HSI14 = longword($01000000); //HSI14 clock selected as MCO source
  1582. RCC_CFGR_MCO_LSI = longword($02000000); //LSI clock selected as MCO source
  1583. RCC_CFGR_MCO_LSE = longword($03000000); //LSE clock selected as MCO source
  1584. RCC_CFGR_MCO_SYSCLK = longword($04000000); //System clock selected as MCO source
  1585. RCC_CFGR_MCO_HSI = longword($05000000); //HSI clock selected as MCO source
  1586. RCC_CFGR_MCO_HSE = longword($06000000); //HSE clock selected as MCO source
  1587. RCC_CFGR_MCO_PLL = longword($07000000); //PLL clock divided by 2 selected as MCO source
  1588. //***************** Bit definition for RCC_CIR register *******************
  1589. RCC_CIR_LSIRDYF = longword($00000001); //LSI Ready Interrupt flag
  1590. RCC_CIR_LSERDYF = longword($00000002); //LSE Ready Interrupt flag
  1591. RCC_CIR_HSIRDYF = longword($00000004); //HSI Ready Interrupt flag
  1592. RCC_CIR_HSERDYF = longword($00000008); //HSE Ready Interrupt flag
  1593. RCC_CIR_PLLRDYF = longword($00000010); //PLL Ready Interrupt flag
  1594. RCC_CIR_HSI14RDYF = longword($00000020); //HSI14 Ready Interrupt flag
  1595. RCC_CIR_CSSF = longword($00000080); //Clock Security System Interrupt flag
  1596. RCC_CIR_LSIRDYIE = longword($00000100); //LSI Ready Interrupt Enable
  1597. RCC_CIR_LSERDYIE = longword($00000200); //LSE Ready Interrupt Enable
  1598. RCC_CIR_HSIRDYIE = longword($00000400); //HSI Ready Interrupt Enable
  1599. RCC_CIR_HSERDYIE = longword($00000800); //HSE Ready Interrupt Enable
  1600. RCC_CIR_PLLRDYIE = longword($00001000); //PLL Ready Interrupt Enable
  1601. RCC_CIR_HSI14RDYIE = longword($00002000); //HSI14 Ready Interrupt Enable
  1602. RCC_CIR_LSIRDYC = longword($00010000); //LSI Ready Interrupt Clear
  1603. RCC_CIR_LSERDYC = longword($00020000); //LSE Ready Interrupt Clear
  1604. RCC_CIR_HSIRDYC = longword($00040000); //HSI Ready Interrupt Clear
  1605. RCC_CIR_HSERDYC = longword($00080000); //HSE Ready Interrupt Clear
  1606. RCC_CIR_PLLRDYC = longword($00100000); //PLL Ready Interrupt Clear
  1607. RCC_CIR_HSI14RDYC = longword($00200000); //HSI14 Ready Interrupt Clear
  1608. RCC_CIR_CSSC = longword($00800000); //Clock Security System Interrupt Clear
  1609. //**************** Bit definition for RCC_APB2RSTR register ****************
  1610. RCC_APB2RSTR_SYSCFGRST = longword($00000001); //SYSCFG clock reset
  1611. RCC_APB2RSTR_ADC1RST = longword($00000200); //ADC1 clock reset
  1612. RCC_APB2RSTR_TIM1RST = longword($00000800); //TIM1 clock reset
  1613. RCC_APB2RSTR_SPI1RST = longword($00001000); //SPI1 clock reset
  1614. RCC_APB2RSTR_USART1RST = longword($00004000); //USART1 clock reset
  1615. RCC_APB2RSTR_TIM15RST = longword($00010000); //TIM15 clock reset
  1616. RCC_APB2RSTR_TIM16RST = longword($00020000); //TIM16 clock reset
  1617. RCC_APB2RSTR_TIM17RST = longword($00040000); //TIM17 clock reset
  1618. RCC_APB2RSTR_DBGMCURST = longword($00400000); //DBGMCU clock reset
  1619. //**************** Bit definition for RCC_APB1RSTR register ****************
  1620. RCC_APB1RSTR_TIM2RST = longword($00000001); //Timer 2 clock reset
  1621. RCC_APB1RSTR_TIM3RST = longword($00000002); //Timer 3 clock reset
  1622. RCC_APB1RSTR_TIM6RST = longword($00000010); //Timer 6 clock reset
  1623. RCC_APB1RSTR_TIM14RST = longword($00000100); //Timer 14 clock reset
  1624. RCC_APB1RSTR_WWDGRST = longword($00000800); //Window Watchdog clock reset
  1625. RCC_APB1RSTR_SPI2RST = longword($00004000); //SPI2 clock reset
  1626. RCC_APB1RSTR_USART2RST = longword($00020000); //USART 2 clock reset
  1627. RCC_APB1RSTR_I2C1RST = longword($00200000); //I2C 1 clock reset
  1628. RCC_APB1RSTR_I2C2RST = longword($00400000); //I2C 2 clock reset
  1629. RCC_APB1RSTR_PWRRST = longword($10000000); //PWR clock reset
  1630. RCC_APB1RSTR_DACRST = longword($20000000); //DAC clock reset
  1631. RCC_APB1RSTR_CECRST = longword($40000000); //CEC clock reset
  1632. //***************** Bit definition for RCC_AHBENR register *****************
  1633. RCC_AHBENR_DMA1EN = longword($00000001); //DMA1 clock enable
  1634. RCC_AHBENR_SRAMEN = longword($00000004); //SRAM interface clock enable
  1635. RCC_AHBENR_FLITFEN = longword($00000010); //FLITF clock enable
  1636. RCC_AHBENR_CRCEN = longword($00000040); //CRC clock enable
  1637. RCC_AHBENR_GPIOAEN = longword($00020000); //GPIOA clock enable
  1638. RCC_AHBENR_GPIOBEN = longword($00040000); //GPIOB clock enable
  1639. RCC_AHBENR_GPIOCEN = longword($00080000); //GPIOC clock enable
  1640. RCC_AHBENR_GPIODEN = longword($00100000); //GPIOD clock enable
  1641. RCC_AHBENR_GPIOFEN = longword($00400000); //GPIOF clock enable
  1642. RCC_AHBENR_TSEN = longword($01000000); //TS clock enable
  1643. //**************** Bit definition for RCC_APB2ENR register *****************
  1644. RCC_APB2ENR_SYSCFGEN = longword($00000001); //SYSCFG clock enable
  1645. RCC_APB2ENR_ADC1EN = longword($00000200); //ADC1 clock enable
  1646. RCC_APB2ENR_TIM1EN = longword($00000800); //TIM1 clock enable
  1647. RCC_APB2ENR_SPI1EN = longword($00001000); //SPI1 clock enable
  1648. RCC_APB2ENR_USART1EN = longword($00004000); //USART1 clock enable
  1649. RCC_APB2ENR_TIM15EN = longword($00010000); //TIM15 clock enable
  1650. RCC_APB2ENR_TIM16EN = longword($00020000); //TIM16 clock enable
  1651. RCC_APB2ENR_TIM17EN = longword($00040000); //TIM17 clock enable
  1652. RCC_APB2ENR_DBGMCUEN = longword($00400000); //DBGMCU clock enable
  1653. //**************** Bit definition for RCC_APB1ENR register *****************
  1654. RCC_APB1ENR_TIM2EN = longword($00000001); //Timer 2 clock enable
  1655. RCC_APB1ENR_TIM3EN = longword($00000002); //Timer 3 clock enable
  1656. RCC_APB1ENR_TIM6EN = longword($00000010); //Timer 6 clock enable
  1657. RCC_APB1ENR_TIM14EN = longword($00000100); //Timer 14 clock enable
  1658. RCC_APB1ENR_WWDGEN = longword($00000800); //Window Watchdog clock enable
  1659. RCC_APB1ENR_SPI2EN = longword($00004000); //SPI2 clock enable
  1660. RCC_APB1ENR_USART2EN = longword($00020000); //USART2 clock enable
  1661. RCC_APB1ENR_I2C1EN = longword($00200000); //I2C1 clock enable
  1662. RCC_APB1ENR_I2C2EN = longword($00400000); //I2C2 clock enable
  1663. RCC_APB1ENR_PWREN = longword($10000000); //PWR clock enable
  1664. RCC_APB1ENR_DACEN = longword($20000000); //DAC clock enable
  1665. RCC_APB1ENR_CECEN = longword($40000000); //CEC clock enable
  1666. //****************** Bit definition for RCC_BDCR register ******************
  1667. RCC_BDCR_LSEON = longword($00000001); //External Low Speed oscillator enable
  1668. RCC_BDCR_LSERDY = longword($00000002); //External Low Speed oscillator Ready
  1669. RCC_BDCR_LSEBYP = longword($00000004); //External Low Speed oscillator Bypass
  1670. RCC_BDCR_LSEDRV = longword($00000018); //LSEDRV[1:0] bits (LSE Osc. drive capability)
  1671. RCC_BDCR_LSEDRV_0 = longword($00000008); //Bit 0
  1672. RCC_BDCR_LSEDRV_1 = longword($00000010); //Bit 1
  1673. RCC_BDCR_RTCSEL = longword($00000300); //RTCSEL[1:0] bits (RTC clock source selection)
  1674. RCC_BDCR_RTCSEL_0 = longword($00000100); //Bit 0
  1675. RCC_BDCR_RTCSEL_1 = longword($00000200); //Bit 1
  1676. //RTC congiguration
  1677. RCC_BDCR_RTCSEL_NOCLOCK = longword($00000000); //No clock
  1678. RCC_BDCR_RTCSEL_LSE = longword($00000100); //LSE oscillator clock used as RTC clock
  1679. RCC_BDCR_RTCSEL_LSI = longword($00000200); //LSI oscillator clock used as RTC clock
  1680. RCC_BDCR_RTCSEL_HSE = longword($00000300); //HSE oscillator clock divided by 128 used as RTC clock
  1681. RCC_BDCR_RTCEN = longword($00008000); //RTC clock enable
  1682. RCC_BDCR_BDRST = longword($00010000); //Backup domain software reset
  1683. //****************** Bit definition for RCC_CSR register *******************
  1684. RCC_CSR_LSION = longword($00000001); //Internal Low Speed oscillator enable
  1685. RCC_CSR_LSIRDY = longword($00000002); //Internal Low Speed oscillator Ready
  1686. RCC_CSR_V18PWRRSTF = longword($00800000); //V1.8 power domain reset flag
  1687. RCC_CSR_RMVF = longword($01000000); //Remove reset flag
  1688. RCC_CSR_OBL = longword($02000000); //OBL reset flag
  1689. RCC_CSR_PINRSTF = longword($04000000); //PIN reset flag
  1690. RCC_CSR_PORRSTF = longword($08000000); //POR/PDR reset flag
  1691. RCC_CSR_SFTRSTF = longword($10000000); //Software Reset flag
  1692. RCC_CSR_IWDGRSTF = longword($20000000); //Independent Watchdog reset flag
  1693. RCC_CSR_WWDGRSTF = longword($40000000); //Window watchdog reset flag
  1694. RCC_CSR_LPWRRSTF = longword($80000000); //Low-Power reset flag
  1695. //****************** Bit definition for RCC_AHBRSTR register ***************
  1696. RCC_AHBRSTR_GPIOARST = longword($00020000); //GPIOA clock reset
  1697. RCC_AHBRSTR_GPIOBRST = longword($00040000); //GPIOB clock reset
  1698. RCC_AHBRSTR_GPIOCRST = longword($00080000); //GPIOC clock reset
  1699. RCC_AHBRSTR_GPIODRST = longword($00010000); //GPIOD clock reset
  1700. RCC_AHBRSTR_GPIOFRST = longword($00040000); //GPIOF clock reset
  1701. RCC_AHBRSTR_TSRST = longword($00100000); //TS clock reset
  1702. //****************** Bit definition for RCC_CFGR2 register *****************
  1703. //PREDIV1 configuration
  1704. RCC_CFGR2_PREDIV1 = longword($0000000F); //PREDIV1[3:0] bits
  1705. RCC_CFGR2_PREDIV1_0 = longword($00000001); //Bit 0
  1706. RCC_CFGR2_PREDIV1_1 = longword($00000002); //Bit 1
  1707. RCC_CFGR2_PREDIV1_2 = longword($00000004); //Bit 2
  1708. RCC_CFGR2_PREDIV1_3 = longword($00000008); //Bit 3
  1709. RCC_CFGR2_PREDIV1_DIV1 = longword($00000000); //PREDIV1 input clock not divided
  1710. RCC_CFGR2_PREDIV1_DIV2 = longword($00000001); //PREDIV1 input clock divided by 2
  1711. RCC_CFGR2_PREDIV1_DIV3 = longword($00000002); //PREDIV1 input clock divided by 3
  1712. RCC_CFGR2_PREDIV1_DIV4 = longword($00000003); //PREDIV1 input clock divided by 4
  1713. RCC_CFGR2_PREDIV1_DIV5 = longword($00000004); //PREDIV1 input clock divided by 5
  1714. RCC_CFGR2_PREDIV1_DIV6 = longword($00000005); //PREDIV1 input clock divided by 6
  1715. RCC_CFGR2_PREDIV1_DIV7 = longword($00000006); //PREDIV1 input clock divided by 7
  1716. RCC_CFGR2_PREDIV1_DIV8 = longword($00000007); //PREDIV1 input clock divided by 8
  1717. RCC_CFGR2_PREDIV1_DIV9 = longword($00000008); //PREDIV1 input clock divided by 9
  1718. RCC_CFGR2_PREDIV1_DIV10 = longword($00000009); //PREDIV1 input clock divided by 10
  1719. RCC_CFGR2_PREDIV1_DIV11 = longword($0000000A); //PREDIV1 input clock divided by 11
  1720. RCC_CFGR2_PREDIV1_DIV12 = longword($0000000B); //PREDIV1 input clock divided by 12
  1721. RCC_CFGR2_PREDIV1_DIV13 = longword($0000000C); //PREDIV1 input clock divided by 13
  1722. RCC_CFGR2_PREDIV1_DIV14 = longword($0000000D); //PREDIV1 input clock divided by 14
  1723. RCC_CFGR2_PREDIV1_DIV15 = longword($0000000E); //PREDIV1 input clock divided by 15
  1724. RCC_CFGR2_PREDIV1_DIV16 = longword($0000000F); //PREDIV1 input clock divided by 16
  1725. //****************** Bit definition for RCC_CFGR3 register *****************
  1726. //USART1 Clock source selection
  1727. RCC_CFGR3_USART1SW = longword($00000003); //USART1SW[1:0] bits
  1728. RCC_CFGR3_USART1SW_0 = longword($00000001); //Bit 0
  1729. RCC_CFGR3_USART1SW_1 = longword($00000002); //Bit 1
  1730. //I2C1 Clock source selection
  1731. RCC_CFGR3_I2C1SW = longword($00000010); //I2C1SW bits
  1732. RCC_CFGR3_CECSW = longword($00000040); //CECSW bits
  1733. RCC_CFGR3_ADCSW = longword($00000100); //ADCSW bits
  1734. //****************** Bit definition for RCC_CR2 register *******************
  1735. RCC_CR2_HSI14ON = longword($00000001); //Internal High Speed 14MHz clock enable
  1736. RCC_CR2_HSI14RDY = longword($00000002); //Internal High Speed 14MHz clock ready flag
  1737. RCC_CR2_HSI14DIS = longword($00000004); //Internal High Speed 14MHz clock disable
  1738. RCC_CR2_HSI14TRIM = longword($000000F8); //Internal High Speed 14MHz clock trimming
  1739. RCC_CR2_HSI14CAL = longword($0000FF00); //Internal High Speed 14MHz clock Calibration
  1740. //****************************************************************************
  1741. //Real-Time Clock (RTC)
  1742. //****************************************************************************
  1743. //******************* Bits definition for RTC_TR register ******************
  1744. RTC_TR_PM = longword($00400000);
  1745. RTC_TR_HT = longword($00300000);
  1746. RTC_TR_HT_0 = longword($00100000);
  1747. RTC_TR_HT_1 = longword($00200000);
  1748. RTC_TR_HU = longword($000F0000);
  1749. RTC_TR_HU_0 = longword($00010000);
  1750. RTC_TR_HU_1 = longword($00020000);
  1751. RTC_TR_HU_2 = longword($00040000);
  1752. RTC_TR_HU_3 = longword($00080000);
  1753. RTC_TR_MNT = longword($00007000);
  1754. RTC_TR_MNT_0 = longword($00001000);
  1755. RTC_TR_MNT_1 = longword($00002000);
  1756. RTC_TR_MNT_2 = longword($00004000);
  1757. RTC_TR_MNU = longword($00000F00);
  1758. RTC_TR_MNU_0 = longword($00000100);
  1759. RTC_TR_MNU_1 = longword($00000200);
  1760. RTC_TR_MNU_2 = longword($00000400);
  1761. RTC_TR_MNU_3 = longword($00000800);
  1762. RTC_TR_ST = longword($00000070);
  1763. RTC_TR_ST_0 = longword($00000010);
  1764. RTC_TR_ST_1 = longword($00000020);
  1765. RTC_TR_ST_2 = longword($00000040);
  1766. RTC_TR_SU = longword($0000000F);
  1767. RTC_TR_SU_0 = longword($00000001);
  1768. RTC_TR_SU_1 = longword($00000002);
  1769. RTC_TR_SU_2 = longword($00000004);
  1770. RTC_TR_SU_3 = longword($00000008);
  1771. //******************* Bits definition for RTC_DR register ******************
  1772. RTC_DR_YT = longword($00F00000);
  1773. RTC_DR_YT_0 = longword($00100000);
  1774. RTC_DR_YT_1 = longword($00200000);
  1775. RTC_DR_YT_2 = longword($00400000);
  1776. RTC_DR_YT_3 = longword($00800000);
  1777. RTC_DR_YU = longword($000F0000);
  1778. RTC_DR_YU_0 = longword($00010000);
  1779. RTC_DR_YU_1 = longword($00020000);
  1780. RTC_DR_YU_2 = longword($00040000);
  1781. RTC_DR_YU_3 = longword($00080000);
  1782. RTC_DR_WDU = longword($0000E000);
  1783. RTC_DR_WDU_0 = longword($00002000);
  1784. RTC_DR_WDU_1 = longword($00004000);
  1785. RTC_DR_WDU_2 = longword($00008000);
  1786. RTC_DR_MT = longword($00001000);
  1787. RTC_DR_MU = longword($00000F00);
  1788. RTC_DR_MU_0 = longword($00000100);
  1789. RTC_DR_MU_1 = longword($00000200);
  1790. RTC_DR_MU_2 = longword($00000400);
  1791. RTC_DR_MU_3 = longword($00000800);
  1792. RTC_DR_DT = longword($00000030);
  1793. RTC_DR_DT_0 = longword($00000010);
  1794. RTC_DR_DT_1 = longword($00000020);
  1795. RTC_DR_DU = longword($0000000F);
  1796. RTC_DR_DU_0 = longword($00000001);
  1797. RTC_DR_DU_1 = longword($00000002);
  1798. RTC_DR_DU_2 = longword($00000004);
  1799. RTC_DR_DU_3 = longword($00000008);
  1800. //******************* Bits definition for RTC_CR register ******************
  1801. RTC_CR_COE = longword($00800000);
  1802. RTC_CR_OSEL = longword($00600000);
  1803. RTC_CR_OSEL_0 = longword($00200000);
  1804. RTC_CR_OSEL_1 = longword($00400000);
  1805. RTC_CR_POL = longword($00100000);
  1806. RTC_CR_CALSEL = longword($00080000);
  1807. RTC_CR_BCK = longword($00040000);
  1808. RTC_CR_SUB1H = longword($00020000);
  1809. RTC_CR_ADD1H = longword($00010000);
  1810. RTC_CR_TSIE = longword($00008000);
  1811. RTC_CR_ALRAIE = longword($00001000);
  1812. RTC_CR_TSE = longword($00000800);
  1813. RTC_CR_ALRAE = longword($00000100);
  1814. RTC_CR_DCE = longword($00000080);
  1815. RTC_CR_FMT = longword($00000040);
  1816. RTC_CR_BYPSHAD = longword($00000020);
  1817. RTC_CR_REFCKON = longword($00000010);
  1818. RTC_CR_TSEDGE = longword($00000008);
  1819. //******************* Bits definition for RTC_ISR register *****************
  1820. RTC_ISR_RECALPF = longword($00010000);
  1821. RTC_ISR_TAMP2F = longword($00004000);
  1822. RTC_ISR_TAMP1F = longword($00002000);
  1823. RTC_ISR_TSOVF = longword($00001000);
  1824. RTC_ISR_TSF = longword($00000800);
  1825. RTC_ISR_ALRAF = longword($00000100);
  1826. RTC_ISR_INIT = longword($00000080);
  1827. RTC_ISR_INITF = longword($00000040);
  1828. RTC_ISR_RSF = longword($00000020);
  1829. RTC_ISR_INITS = longword($00000010);
  1830. RTC_ISR_SHPF = longword($00000008);
  1831. RTC_ISR_ALRAWF = longword($00000001);
  1832. //******************* Bits definition for RTC_PRER register ****************
  1833. RTC_PRER_PREDIV_A = longword($007F0000);
  1834. RTC_PRER_PREDIV_S = longword($00007FFF);
  1835. //******************* Bits definition for RTC_ALRMAR register **************
  1836. RTC_ALRMAR_MSK4 = longword($80000000);
  1837. RTC_ALRMAR_WDSEL = longword($40000000);
  1838. RTC_ALRMAR_DT = longword($30000000);
  1839. RTC_ALRMAR_DT_0 = longword($10000000);
  1840. RTC_ALRMAR_DT_1 = longword($20000000);
  1841. RTC_ALRMAR_DU = longword($0F000000);
  1842. RTC_ALRMAR_DU_0 = longword($01000000);
  1843. RTC_ALRMAR_DU_1 = longword($02000000);
  1844. RTC_ALRMAR_DU_2 = longword($04000000);
  1845. RTC_ALRMAR_DU_3 = longword($08000000);
  1846. RTC_ALRMAR_MSK3 = longword($00800000);
  1847. RTC_ALRMAR_PM = longword($00400000);
  1848. RTC_ALRMAR_HT = longword($00300000);
  1849. RTC_ALRMAR_HT_0 = longword($00100000);
  1850. RTC_ALRMAR_HT_1 = longword($00200000);
  1851. RTC_ALRMAR_HU = longword($000F0000);
  1852. RTC_ALRMAR_HU_0 = longword($00010000);
  1853. RTC_ALRMAR_HU_1 = longword($00020000);
  1854. RTC_ALRMAR_HU_2 = longword($00040000);
  1855. RTC_ALRMAR_HU_3 = longword($00080000);
  1856. RTC_ALRMAR_MSK2 = longword($00008000);
  1857. RTC_ALRMAR_MNT = longword($00007000);
  1858. RTC_ALRMAR_MNT_0 = longword($00001000);
  1859. RTC_ALRMAR_MNT_1 = longword($00002000);
  1860. RTC_ALRMAR_MNT_2 = longword($00004000);
  1861. RTC_ALRMAR_MNU = longword($00000F00);
  1862. RTC_ALRMAR_MNU_0 = longword($00000100);
  1863. RTC_ALRMAR_MNU_1 = longword($00000200);
  1864. RTC_ALRMAR_MNU_2 = longword($00000400);
  1865. RTC_ALRMAR_MNU_3 = longword($00000800);
  1866. RTC_ALRMAR_MSK1 = longword($00000080);
  1867. RTC_ALRMAR_ST = longword($00000070);
  1868. RTC_ALRMAR_ST_0 = longword($00000010);
  1869. RTC_ALRMAR_ST_1 = longword($00000020);
  1870. RTC_ALRMAR_ST_2 = longword($00000040);
  1871. RTC_ALRMAR_SU = longword($0000000F);
  1872. RTC_ALRMAR_SU_0 = longword($00000001);
  1873. RTC_ALRMAR_SU_1 = longword($00000002);
  1874. RTC_ALRMAR_SU_2 = longword($00000004);
  1875. RTC_ALRMAR_SU_3 = longword($00000008);
  1876. //******************* Bits definition for RTC_WPR register *****************
  1877. RTC_WPR_KEY = longword($000000FF);
  1878. //******************* Bits definition for RTC_SSR register *****************
  1879. RTC_SSR_SS = longword($0003FFFF);
  1880. //******************* Bits definition for RTC_SHIFTR register **************
  1881. RTC_SHIFTR_SUBFS = longword($00007FFF);
  1882. RTC_SHIFTR_ADD1S = longword($80000000);
  1883. //******************* Bits definition for RTC_TSTR register ****************
  1884. RTC_TSTR_PM = longword($00400000);
  1885. RTC_TSTR_HT = longword($00300000);
  1886. RTC_TSTR_HT_0 = longword($00100000);
  1887. RTC_TSTR_HT_1 = longword($00200000);
  1888. RTC_TSTR_HU = longword($000F0000);
  1889. RTC_TSTR_HU_0 = longword($00010000);
  1890. RTC_TSTR_HU_1 = longword($00020000);
  1891. RTC_TSTR_HU_2 = longword($00040000);
  1892. RTC_TSTR_HU_3 = longword($00080000);
  1893. RTC_TSTR_MNT = longword($00007000);
  1894. RTC_TSTR_MNT_0 = longword($00001000);
  1895. RTC_TSTR_MNT_1 = longword($00002000);
  1896. RTC_TSTR_MNT_2 = longword($00004000);
  1897. RTC_TSTR_MNU = longword($00000F00);
  1898. RTC_TSTR_MNU_0 = longword($00000100);
  1899. RTC_TSTR_MNU_1 = longword($00000200);
  1900. RTC_TSTR_MNU_2 = longword($00000400);
  1901. RTC_TSTR_MNU_3 = longword($00000800);
  1902. RTC_TSTR_ST = longword($00000070);
  1903. RTC_TSTR_ST_0 = longword($00000010);
  1904. RTC_TSTR_ST_1 = longword($00000020);
  1905. RTC_TSTR_ST_2 = longword($00000040);
  1906. RTC_TSTR_SU = longword($0000000F);
  1907. RTC_TSTR_SU_0 = longword($00000001);
  1908. RTC_TSTR_SU_1 = longword($00000002);
  1909. RTC_TSTR_SU_2 = longword($00000004);
  1910. RTC_TSTR_SU_3 = longword($00000008);
  1911. //******************* Bits definition for RTC_TSDR register ****************
  1912. RTC_TSDR_WDU = longword($0000E000);
  1913. RTC_TSDR_WDU_0 = longword($00002000);
  1914. RTC_TSDR_WDU_1 = longword($00004000);
  1915. RTC_TSDR_WDU_2 = longword($00008000);
  1916. RTC_TSDR_MT = longword($00001000);
  1917. RTC_TSDR_MU = longword($00000F00);
  1918. RTC_TSDR_MU_0 = longword($00000100);
  1919. RTC_TSDR_MU_1 = longword($00000200);
  1920. RTC_TSDR_MU_2 = longword($00000400);
  1921. RTC_TSDR_MU_3 = longword($00000800);
  1922. RTC_TSDR_DT = longword($00000030);
  1923. RTC_TSDR_DT_0 = longword($00000010);
  1924. RTC_TSDR_DT_1 = longword($00000020);
  1925. RTC_TSDR_DU = longword($0000000F);
  1926. RTC_TSDR_DU_0 = longword($00000001);
  1927. RTC_TSDR_DU_1 = longword($00000002);
  1928. RTC_TSDR_DU_2 = longword($00000004);
  1929. RTC_TSDR_DU_3 = longword($00000008);
  1930. //******************* Bits definition for RTC_TSSSR register ***************
  1931. RTC_TSSSR_SS = longword($0003FFFF);
  1932. //******************* Bits definition for RTC_CAL register ****************
  1933. RTC_CAL_CALP = longword($00008000);
  1934. RTC_CAL_CALW8 = longword($00004000);
  1935. RTC_CAL_CALW16 = longword($00002000);
  1936. RTC_CAL_CALM = longword($000001FF);
  1937. RTC_CAL_CALM_0 = longword($00000001);
  1938. RTC_CAL_CALM_1 = longword($00000002);
  1939. RTC_CAL_CALM_2 = longword($00000004);
  1940. RTC_CAL_CALM_3 = longword($00000008);
  1941. RTC_CAL_CALM_4 = longword($00000010);
  1942. RTC_CAL_CALM_5 = longword($00000020);
  1943. RTC_CAL_CALM_6 = longword($00000040);
  1944. RTC_CAL_CALM_7 = longword($00000080);
  1945. RTC_CAL_CALM_8 = longword($00000100);
  1946. //******************* Bits definition for RTC_TAFCR register ***************
  1947. RTC_TAFCR_ALARMOUTTYPE = longword($00040000);
  1948. RTC_TAFCR_TAMPPUDIS = longword($00008000);
  1949. RTC_TAFCR_TAMPPRCH = longword($00006000);
  1950. RTC_TAFCR_TAMPPRCH_0 = longword($00002000);
  1951. RTC_TAFCR_TAMPPRCH_1 = longword($00004000);
  1952. RTC_TAFCR_TAMPFLT = longword($00001800);
  1953. RTC_TAFCR_TAMPFLT_0 = longword($00000800);
  1954. RTC_TAFCR_TAMPFLT_1 = longword($00001000);
  1955. RTC_TAFCR_TAMPFREQ = longword($00000700);
  1956. RTC_TAFCR_TAMPFREQ_0 = longword($00000100);
  1957. RTC_TAFCR_TAMPFREQ_1 = longword($00000200);
  1958. RTC_TAFCR_TAMPFREQ_2 = longword($00000400);
  1959. RTC_TAFCR_TAMPTS = longword($00000080);
  1960. RTC_TAFCR_TAMP2EDGE = longword($00000010);
  1961. RTC_TAFCR_TAMP2E = longword($00000008);
  1962. RTC_TAFCR_TAMPIE = longword($00000004);
  1963. RTC_TAFCR_TAMP1TRG = longword($00000002);
  1964. RTC_TAFCR_TAMP1E = longword($00000001);
  1965. //******************* Bits definition for RTC_ALRMASSR register ************
  1966. RTC_ALRMASSR_MASKSS = longword($0F000000);
  1967. RTC_ALRMASSR_MASKSS_0 = longword($01000000);
  1968. RTC_ALRMASSR_MASKSS_1 = longword($02000000);
  1969. RTC_ALRMASSR_MASKSS_2 = longword($04000000);
  1970. RTC_ALRMASSR_MASKSS_3 = longword($08000000);
  1971. RTC_ALRMASSR_SS = longword($00007FFF);
  1972. //******************* Bits definition for RTC_BKP0R register ***************
  1973. RTC_BKP0R = longword($FFFFFFFF);
  1974. //******************* Bits definition for RTC_BKP1R register ***************
  1975. RTC_BKP1R = longword($FFFFFFFF);
  1976. //******************* Bits definition for RTC_BKP2R register ***************
  1977. RTC_BKP2R = longword($FFFFFFFF);
  1978. //******************* Bits definition for RTC_BKP3R register ***************
  1979. RTC_BKP3R = longword($FFFFFFFF);
  1980. //******************* Bits definition for RTC_BKP4R register ***************
  1981. RTC_BKP4R = longword($FFFFFFFF);
  1982. //****************************************************************************
  1983. //Serial Peripheral Interface (SPI)
  1984. //****************************************************************************
  1985. //****************** Bit definition for SPI_CR1 register *******************
  1986. SPI_CR1_CPHA = longword($0001); //Clock Phase
  1987. SPI_CR1_CPOL = longword($0002); //Clock Polarity
  1988. SPI_CR1_MSTR = longword($0004); //Master Selection
  1989. SPI_CR1_BR = longword($0038); //BR[2:0] bits (Baud Rate Control)
  1990. SPI_CR1_BR_0 = longword($0008); //Bit 0
  1991. SPI_CR1_BR_1 = longword($0010); //Bit 1
  1992. SPI_CR1_BR_2 = longword($0020); //Bit 2
  1993. SPI_CR1_SPE = longword($0040); //SPI Enable
  1994. SPI_CR1_LSBFIRST = longword($0080); //Frame Format
  1995. SPI_CR1_SSI = longword($0100); //Internal slave select
  1996. SPI_CR1_SSM = longword($0200); //Software slave management
  1997. SPI_CR1_RXONLY = longword($0400); //Receive only
  1998. SPI_CR1_CRCL = longword($0800); //CRC Length
  1999. SPI_CR1_CRCNEXT = longword($1000); //Transmit CRC next
  2000. SPI_CR1_CRCEN = longword($2000); //Hardware CRC calculation enable
  2001. SPI_CR1_BIDIOE = longword($4000); //Output enable in bidirectional mode
  2002. SPI_CR1_BIDIMODE = longword($8000); //Bidirectional data mode enable
  2003. //****************** Bit definition for SPI_CR2 register *******************
  2004. SPI_CR2_RXDMAEN = longword($0001); //Rx Buffer DMA Enable
  2005. SPI_CR2_TXDMAEN = longword($0002); //Tx Buffer DMA Enable
  2006. SPI_CR2_SSOE = longword($0004); //SS Output Enable
  2007. SPI_CR2_NSSP = longword($0008); //NSS pulse management Enable
  2008. SPI_CR2_FRF = longword($0010); //Frame Format Enable
  2009. SPI_CR2_ERRIE = longword($0020); //Error Interrupt Enable
  2010. SPI_CR2_RXNEIE = longword($0040); //RX buffer Not Empty Interrupt Enable
  2011. SPI_CR2_TXEIE = longword($0080); //Tx buffer Empty Interrupt Enable
  2012. SPI_CR2_DS = longword($0F00); //DS[3:0] Data Size
  2013. SPI_CR2_DS_0 = longword($0100); //Bit 0
  2014. SPI_CR2_DS_1 = longword($0200); //Bit 1
  2015. SPI_CR2_DS_2 = longword($0400); //Bit 2
  2016. SPI_CR2_DS_3 = longword($0800); //Bit 3
  2017. SPI_CR2_FRXTH = longword($1000); //FIFO reception Threshold
  2018. SPI_CR2_LDMARX = longword($2000); //Last DMA transfer for reception
  2019. SPI_CR2_LDMATX = longword($4000); //Last DMA transfer for transmission
  2020. //******************* Bit definition for SPI_SR register *******************
  2021. SPI_SR_RXNE = longword($0001); //Receive buffer Not Empty
  2022. SPI_SR_TXE = longword($0002); //Transmit buffer Empty
  2023. SPI_SR_CHSIDE = longword($0004); //Channel side
  2024. SPI_SR_UDR = longword($0008); //Underrun flag
  2025. SPI_SR_CRCERR = longword($0010); //CRC Error flag
  2026. SPI_SR_MODF = longword($0020); //Mode fault
  2027. SPI_SR_OVR = longword($0040); //Overrun flag
  2028. SPI_SR_BSY = longword($0080); //Busy flag
  2029. SPI_SR_FRE = longword($0100); //TI frame format error
  2030. SPI_SR_FRLVL = longword($0600); //FIFO Reception Level
  2031. SPI_SR_FRLVL_0 = longword($0200); //Bit 0
  2032. SPI_SR_FRLVL_1 = longword($0400); //Bit 1
  2033. SPI_SR_FTLVL = longword($1800); //FIFO Transmission Level
  2034. SPI_SR_FTLVL_0 = longword($0800); //Bit 0
  2035. SPI_SR_FTLVL_1 = longword($1000); //Bit 1
  2036. //******************* Bit definition for SPI_DR register *******************
  2037. SPI_DR_DR = longword($FFFF); //Data Register
  2038. //****************** Bit definition for SPI_CRCPR register *****************
  2039. SPI_CRCPR_CRCPOLY = longword($FFFF); //CRC polynomial register
  2040. //***************** Bit definition for SPI_RXCRCR register *****************
  2041. SPI_RXCRCR_RXCRC = longword($FFFF); //Rx CRC Register
  2042. //***************** Bit definition for SPI_TXCRCR register *****************
  2043. SPI_TXCRCR_TXCRC = longword($FFFF); //Tx CRC Register
  2044. //***************** Bit definition for SPI_I2SCFGR register ****************
  2045. SPI_I2SCFGR_CHLEN = longword($0001); //hannel length (number of bits per audio channel)
  2046. SPI_I2SCFGR_DATLEN = longword($0006); //ATLEN[1:0] bits (Data length to be transferred)
  2047. SPI_I2SCFGR_DATLEN_0 = longword($0002); //it 0
  2048. SPI_I2SCFGR_DATLEN_1 = longword($0004); //it 1
  2049. SPI_I2SCFGR_CKPOL = longword($0008); //teady state clock polarity
  2050. SPI_I2SCFGR_I2SSTD = longword($0030); //2SSTD[1:0] bits (I2S standard selection)
  2051. SPI_I2SCFGR_I2SSTD_0 = longword($0010); //it 0
  2052. SPI_I2SCFGR_I2SSTD_1 = longword($0020); //it 1
  2053. SPI_I2SCFGR_PCMSYNC = longword($0080); //CM frame synchronization
  2054. SPI_I2SCFGR_I2SCFG = longword($0300); //2SCFG[1:0] bits (I2S configuration mode)
  2055. SPI_I2SCFGR_I2SCFG_0 = longword($0100); //it 0
  2056. SPI_I2SCFGR_I2SCFG_1 = longword($0200); //it 1
  2057. SPI_I2SCFGR_I2SE = longword($0400); //2S Enable
  2058. SPI_I2SCFGR_I2SMOD = longword($0800); //2S mode selection
  2059. //***************** Bit definition for SPI_I2SPR register ******************
  2060. SPI_I2SPR_I2SDIV = longword($00FF); //2S Linear prescaler
  2061. SPI_I2SPR_ODD = longword($0100); //dd factor for the prescaler
  2062. SPI_I2SPR_MCKOE = longword($0200); //aster Clock Output Enable
  2063. //****************************************************************************
  2064. //System Configuration (SYSCFG)
  2065. //****************************************************************************
  2066. //**************** Bit definition for SYSCFG_CFGR1 register ***************
  2067. SYSCFG_CFGR1_MEM_MODE = longword($00000003); //SYSCFG_Memory Remap Config
  2068. SYSCFG_CFGR1_MEM_MODE_0 = longword($00000001); //SYSCFG_Memory Remap Config Bit 0
  2069. SYSCFG_CFGR1_MEM_MODE_1 = longword($00000002); //SYSCFG_Memory Remap Config Bit 1
  2070. SYSCFG_CFGR1_ADC_DMA_RMP = longword($00000100); //ADC DMA remap
  2071. SYSCFG_CFGR1_USART1TX_DMA_RMP = longword($00000200); //USART1 TX DMA remap
  2072. SYSCFG_CFGR1_USART1RX_DMA_RMP = longword($00000400); //USART1 RX DMA remap
  2073. SYSCFG_CFGR1_TIM16_DMA_RMP = longword($00000800); //Timer 16 DMA remap
  2074. SYSCFG_CFGR1_TIM17_DMA_RMP = longword($00001000); //Timer 17 DMA remap
  2075. SYSCFG_CFGR1_I2C_FMP_PB6 = longword($00010000); //I2C PB6 Fast mode plus
  2076. SYSCFG_CFGR1_I2C_FMP_PB7 = longword($00020000); //I2C PB7 Fast mode plus
  2077. SYSCFG_CFGR1_I2C_FMP_PB8 = longword($00040000); //I2C PB8 Fast mode plus
  2078. SYSCFG_CFGR1_I2C_FMP_PB9 = longword($00080000); //I2C PB9 Fast mode plus
  2079. //**************** Bit definition for SYSCFG_EXTICR1 register **************
  2080. SYSCFG_EXTICR1_EXTI0 = longword($000F); //EXTI 0 configuration
  2081. SYSCFG_EXTICR1_EXTI1 = longword($00F0); //EXTI 1 configuration
  2082. SYSCFG_EXTICR1_EXTI2 = longword($0F00); //EXTI 2 configuration
  2083. SYSCFG_EXTICR1_EXTI3 = longword($F000); //EXTI 3 configuration
  2084. // EXTI0 configuration
  2085. SYSCFG_EXTICR1_EXTI0_PA = longword($0000); //PA[0] pin
  2086. SYSCFG_EXTICR1_EXTI0_PB = longword($0001); //PB[0] pin
  2087. SYSCFG_EXTICR1_EXTI0_PC = longword($0002); //PC[0] pin
  2088. SYSCFG_EXTICR1_EXTI0_PF = longword($0003); //PF[0] pin
  2089. // EXTI1 configuration
  2090. SYSCFG_EXTICR1_EXTI1_PA = longword($0000); //PA[1] pin
  2091. SYSCFG_EXTICR1_EXTI1_PB = longword($0010); //PB[1] pin
  2092. SYSCFG_EXTICR1_EXTI1_PC = longword($0020); //PC[1] pin
  2093. SYSCFG_EXTICR1_EXTI1_PF = longword($0030); //PF[1] pin
  2094. // EXTI2 configuration
  2095. SYSCFG_EXTICR1_EXTI2_PA = longword($0000); //PA[2] pin
  2096. SYSCFG_EXTICR1_EXTI2_PB = longword($0100); //PB[2] pin
  2097. SYSCFG_EXTICR1_EXTI2_PC = longword($0200); //PC[2] pin
  2098. SYSCFG_EXTICR1_EXTI2_PD = longword($0300); //PD[2] pin
  2099. // EXTI3 configuration
  2100. SYSCFG_EXTICR1_EXTI3_PA = longword($0000); //PA[3] pin
  2101. SYSCFG_EXTICR1_EXTI3_PB = longword($1000); //PB[3] pin
  2102. SYSCFG_EXTICR1_EXTI3_PC = longword($2000); //PC[3] pin
  2103. //**************** Bit definition for SYSCFG_EXTICR2 register ****************
  2104. SYSCFG_EXTICR2_EXTI4 = longword($000F); //EXTI 4 configuration
  2105. SYSCFG_EXTICR2_EXTI5 = longword($00F0); //EXTI 5 configuration
  2106. SYSCFG_EXTICR2_EXTI6 = longword($0F00); //EXTI 6 configuration
  2107. SYSCFG_EXTICR2_EXTI7 = longword($F000); //EXTI 7 configuration
  2108. // EXTI4 configuration
  2109. SYSCFG_EXTICR2_EXTI4_PA = longword($0000); //PA[4] pin
  2110. SYSCFG_EXTICR2_EXTI4_PB = longword($0001); //PB[4] pin
  2111. SYSCFG_EXTICR2_EXTI4_PC = longword($0002); //PC[4] pin
  2112. SYSCFG_EXTICR2_EXTI4_PF = longword($0003); //PF[4] pin
  2113. // EXTI5 configuration
  2114. SYSCFG_EXTICR2_EXTI5_PA = longword($0000); //PA[5] pin
  2115. SYSCFG_EXTICR2_EXTI5_PB = longword($0010); //PB[5] pin
  2116. SYSCFG_EXTICR2_EXTI5_PC = longword($0020); //PC[5] pin
  2117. SYSCFG_EXTICR2_EXTI5_PF = longword($0030); //PF[5] pin
  2118. // EXTI6 configuration
  2119. SYSCFG_EXTICR2_EXTI6_PA = longword($0000); //PA[6] pin
  2120. SYSCFG_EXTICR2_EXTI6_PB = longword($0100); //PB[6] pin
  2121. SYSCFG_EXTICR2_EXTI6_PC = longword($0200); //PC[6] pin
  2122. SYSCFG_EXTICR2_EXTI6_PF = longword($0300); //PF[6] pin
  2123. // EXTI7 configuration
  2124. SYSCFG_EXTICR2_EXTI7_PA = longword($0000); //PA[7] pin
  2125. SYSCFG_EXTICR2_EXTI7_PB = longword($1000); //PB[7] pin
  2126. SYSCFG_EXTICR2_EXTI7_PC = longword($2000); //PC[7] pin
  2127. SYSCFG_EXTICR2_EXTI7_PF = longword($3000); //PF[7] pin
  2128. //**************** Bit definition for SYSCFG_EXTICR3 register ****************
  2129. SYSCFG_EXTICR3_EXTI8 = longword($000F); //EXTI 8 configuration
  2130. SYSCFG_EXTICR3_EXTI9 = longword($00F0); //EXTI 9 configuration
  2131. SYSCFG_EXTICR3_EXTI10 = longword($0F00); //EXTI 10 configuration
  2132. SYSCFG_EXTICR3_EXTI11 = longword($F000); //EXTI 11 configuration
  2133. // EXTI8 configuration
  2134. SYSCFG_EXTICR3_EXTI8_PA = longword($0000); //PA[8] pin
  2135. SYSCFG_EXTICR3_EXTI8_PB = longword($0001); //PB[8] pin
  2136. SYSCFG_EXTICR3_EXTI8_PC = longword($0002); //PC[8] pin
  2137. // EXTI9 configuration
  2138. SYSCFG_EXTICR3_EXTI9_PA = longword($0000); //PA[9] pin
  2139. SYSCFG_EXTICR3_EXTI9_PB = longword($0010); //PB[9] pin
  2140. SYSCFG_EXTICR3_EXTI9_PC = longword($0020); //PC[9] pin
  2141. // EXTI10 configuration
  2142. SYSCFG_EXTICR3_EXTI10_PA = longword($0000); //PA[10] pin
  2143. SYSCFG_EXTICR3_EXTI10_PB = longword($0100); //PB[10] pin
  2144. SYSCFG_EXTICR3_EXTI10_PC = longword($0200); //PC[10] pin
  2145. // EXTI11 configuration
  2146. SYSCFG_EXTICR3_EXTI11_PA = longword($0000); //PA[11] pin
  2147. SYSCFG_EXTICR3_EXTI11_PB = longword($1000); //PB[11] pin
  2148. SYSCFG_EXTICR3_EXTI11_PC = longword($2000); //PC[11] pin
  2149. //**************** Bit definition for SYSCFG_EXTICR4 register ****************
  2150. SYSCFG_EXTICR4_EXTI12 = longword($000F); //EXTI 12 configuration
  2151. SYSCFG_EXTICR4_EXTI13 = longword($00F0); //EXTI 13 configuration
  2152. SYSCFG_EXTICR4_EXTI14 = longword($0F00); //EXTI 14 configuration
  2153. SYSCFG_EXTICR4_EXTI15 = longword($F000); //EXTI 15 configuration
  2154. // EXTI12 configuration
  2155. SYSCFG_EXTICR4_EXTI12_PA = longword($0000); //PA[12] pin
  2156. SYSCFG_EXTICR4_EXTI12_PB = longword($0001); //PB[12] pin
  2157. SYSCFG_EXTICR4_EXTI12_PC = longword($0002); //PC[12] pin
  2158. // EXTI13 configuration
  2159. SYSCFG_EXTICR4_EXTI13_PA = longword($0000); //PA[13] pin
  2160. SYSCFG_EXTICR4_EXTI13_PB = longword($0010); //PB[13] pin
  2161. SYSCFG_EXTICR4_EXTI13_PC = longword($0020); //PC[13] pin
  2162. // EXTI14 configuration
  2163. SYSCFG_EXTICR4_EXTI14_PA = longword($0000); //PA[14] pin
  2164. SYSCFG_EXTICR4_EXTI14_PB = longword($0100); //PB[14] pin
  2165. SYSCFG_EXTICR4_EXTI14_PC = longword($0200); //PC[14] pin
  2166. // EXTI15 configuration
  2167. SYSCFG_EXTICR4_EXTI15_PA = longword($0000); //PA[15] pin
  2168. SYSCFG_EXTICR4_EXTI15_PB = longword($1000); //PB[15] pin
  2169. SYSCFG_EXTICR4_EXTI15_PC = longword($2000); //PC[15] pin
  2170. //**************** Bit definition for SYSCFG_CFGR2 register ***************
  2171. SYSCFG_CFGR2_LOCKUP_LOCK = longword($00000001); //Enables and locks the PVD connection with Timer1 Break Input and also the PVD_EN and PVDSEL[2:0] bits of the Power Control Interface
  2172. SYSCFG_CFGR2_SRAM_PARITY_LOCK = longword($00000002); //Enables and locks the SRAM_PARITY error signal with Break Input of TIMER1
  2173. SYSCFG_CFGR2_PVD_LOCK = longword($00000004); //Enables and locks the LOCKUP (Hardfault) output of CortexM0 with Break Input of TIMER1
  2174. SYSCFG_CFGR2_SRAM_PE = longword($00000100); //SRAM Parity error flag
  2175. //****************************************************************************
  2176. //Timers (TIM)
  2177. //****************************************************************************
  2178. //****************** Bit definition for TIM_CR1 register *******************
  2179. TIM_CR1_CEN = longword($0001); //ounter enable
  2180. TIM_CR1_UDIS = longword($0002); //pdate disable
  2181. TIM_CR1_URS = longword($0004); //pdate request source
  2182. TIM_CR1_OPM = longword($0008); //ne pulse mode
  2183. TIM_CR1_DIR = longword($0010); //irection
  2184. TIM_CR1_CMS = longword($0060); //MS[1:0] bits (Center-aligned mode selection)
  2185. TIM_CR1_CMS_0 = longword($0020); //it 0
  2186. TIM_CR1_CMS_1 = longword($0040); //it 1
  2187. TIM_CR1_ARPE = longword($0080); //uto-reload preload enable
  2188. TIM_CR1_CKD = longword($0300); //KD[1:0] bits (clock division)
  2189. TIM_CR1_CKD_0 = longword($0100); //it 0
  2190. TIM_CR1_CKD_1 = longword($0200); //it 1
  2191. //****************** Bit definition for TIM_CR2 register *******************
  2192. TIM_CR2_CCPC = longword($0001); //apture/Compare Preloaded Control
  2193. TIM_CR2_CCUS = longword($0004); //apture/Compare Control Update Selection
  2194. TIM_CR2_CCDS = longword($0008); //apture/Compare DMA Selection
  2195. TIM_CR2_MMS = longword($0070); //MS[2:0] bits (Master Mode Selection)
  2196. TIM_CR2_MMS_0 = longword($0010); //it 0
  2197. TIM_CR2_MMS_1 = longword($0020); //it 1
  2198. TIM_CR2_MMS_2 = longword($0040); //it 2
  2199. TIM_CR2_TI1S = longword($0080); //I1 Selection
  2200. TIM_CR2_OIS1 = longword($0100); //utput Idle state 1 (OC1 output)
  2201. TIM_CR2_OIS1N = longword($0200); //utput Idle state 1 (OC1N output)
  2202. TIM_CR2_OIS2 = longword($0400); //utput Idle state 2 (OC2 output)
  2203. TIM_CR2_OIS2N = longword($0800); //utput Idle state 2 (OC2N output)
  2204. TIM_CR2_OIS3 = longword($1000); //utput Idle state 3 (OC3 output)
  2205. TIM_CR2_OIS3N = longword($2000); //utput Idle state 3 (OC3N output)
  2206. TIM_CR2_OIS4 = longword($4000); //utput Idle state 4 (OC4 output)
  2207. //****************** Bit definition for TIM_SMCR register ******************
  2208. TIM_SMCR_SMS = longword($0007); //MS[2:0] bits (Slave mode selection)
  2209. TIM_SMCR_SMS_0 = longword($0001); //it 0
  2210. TIM_SMCR_SMS_1 = longword($0002); //it 1
  2211. TIM_SMCR_SMS_2 = longword($0004); //it 2
  2212. TIM_SMCR_OCCS = longword($0008); //OCREF clear selection
  2213. TIM_SMCR_TS = longword($0070); //S[2:0] bits (Trigger selection)
  2214. TIM_SMCR_TS_0 = longword($0010); //it 0
  2215. TIM_SMCR_TS_1 = longword($0020); //it 1
  2216. TIM_SMCR_TS_2 = longword($0040); //it 2
  2217. TIM_SMCR_MSM = longword($0080); //aster/slave mode
  2218. TIM_SMCR_ETF = longword($0F00); //TF[3:0] bits (External trigger filter)
  2219. TIM_SMCR_ETF_0 = longword($0100); //it 0
  2220. TIM_SMCR_ETF_1 = longword($0200); //it 1
  2221. TIM_SMCR_ETF_2 = longword($0400); //it 2
  2222. TIM_SMCR_ETF_3 = longword($0800); //it 3
  2223. TIM_SMCR_ETPS = longword($3000); //TPS[1:0] bits (External trigger prescaler)
  2224. TIM_SMCR_ETPS_0 = longword($1000); //it 0
  2225. TIM_SMCR_ETPS_1 = longword($2000); //it 1
  2226. TIM_SMCR_ECE = longword($4000); //xternal clock enable
  2227. TIM_SMCR_ETP = longword($8000); //xternal trigger polarity
  2228. //****************** Bit definition for TIM_DIER register ******************
  2229. TIM_DIER_UIE = longword($0001); //pdate interrupt enable
  2230. TIM_DIER_CC1IE = longword($0002); //apture/Compare 1 interrupt enable
  2231. TIM_DIER_CC2IE = longword($0004); //apture/Compare 2 interrupt enable
  2232. TIM_DIER_CC3IE = longword($0008); //apture/Compare 3 interrupt enable
  2233. TIM_DIER_CC4IE = longword($0010); //apture/Compare 4 interrupt enable
  2234. TIM_DIER_COMIE = longword($0020); //OM interrupt enable
  2235. TIM_DIER_TIE = longword($0040); //rigger interrupt enable
  2236. TIM_DIER_BIE = longword($0080); //reak interrupt enable
  2237. TIM_DIER_UDE = longword($0100); //pdate DMA request enable
  2238. TIM_DIER_CC1DE = longword($0200); //apture/Compare 1 DMA request enable
  2239. TIM_DIER_CC2DE = longword($0400); //apture/Compare 2 DMA request enable
  2240. TIM_DIER_CC3DE = longword($0800); //apture/Compare 3 DMA request enable
  2241. TIM_DIER_CC4DE = longword($1000); //apture/Compare 4 DMA request enable
  2242. TIM_DIER_COMDE = longword($2000); //OM DMA request enable
  2243. TIM_DIER_TDE = longword($4000); //rigger DMA request enable
  2244. //******************* Bit definition for TIM_SR register *******************
  2245. TIM_SR_UIF = longword($0001); //pdate interrupt Flag
  2246. TIM_SR_CC1IF = longword($0002); //apture/Compare 1 interrupt Flag
  2247. TIM_SR_CC2IF = longword($0004); //apture/Compare 2 interrupt Flag
  2248. TIM_SR_CC3IF = longword($0008); //apture/Compare 3 interrupt Flag
  2249. TIM_SR_CC4IF = longword($0010); //apture/Compare 4 interrupt Flag
  2250. TIM_SR_COMIF = longword($0020); //OM interrupt Flag
  2251. TIM_SR_TIF = longword($0040); //rigger interrupt Flag
  2252. TIM_SR_BIF = longword($0080); //reak interrupt Flag
  2253. TIM_SR_CC1OF = longword($0200); //apture/Compare 1 Overcapture Flag
  2254. TIM_SR_CC2OF = longword($0400); //apture/Compare 2 Overcapture Flag
  2255. TIM_SR_CC3OF = longword($0800); //apture/Compare 3 Overcapture Flag
  2256. TIM_SR_CC4OF = longword($1000); //apture/Compare 4 Overcapture Flag
  2257. //****************** Bit definition for TIM_EGR register *******************
  2258. TIM_EGR_UG = longword($01); //pdate Generation
  2259. TIM_EGR_CC1G = longword($02); //apture/Compare 1 Generation
  2260. TIM_EGR_CC2G = longword($04); //apture/Compare 2 Generation
  2261. TIM_EGR_CC3G = longword($08); //apture/Compare 3 Generation
  2262. TIM_EGR_CC4G = longword($10); //apture/Compare 4 Generation
  2263. TIM_EGR_COMG = longword($20); //apture/Compare Control Update Generation
  2264. TIM_EGR_TG = longword($40); //rigger Generation
  2265. TIM_EGR_BG = longword($80); //reak Generation
  2266. //***************** Bit definition for TIM_CCMR1 register ******************
  2267. TIM_CCMR1_CC1S = longword($0003); //C1S[1:0] bits (Capture/Compare 1 Selection)
  2268. TIM_CCMR1_CC1S_0 = longword($0001); //it 0
  2269. TIM_CCMR1_CC1S_1 = longword($0002); //it 1
  2270. TIM_CCMR1_OC1FE = longword($0004); //utput Compare 1 Fast enable
  2271. TIM_CCMR1_OC1PE = longword($0008); //utput Compare 1 Preload enable
  2272. TIM_CCMR1_OC1M = longword($0070); //C1M[2:0] bits (Output Compare 1 Mode)
  2273. TIM_CCMR1_OC1M_0 = longword($0010); //it 0
  2274. TIM_CCMR1_OC1M_1 = longword($0020); //it 1
  2275. TIM_CCMR1_OC1M_2 = longword($0040); //it 2
  2276. TIM_CCMR1_OC1CE = longword($0080); //utput Compare 1Clear Enable
  2277. TIM_CCMR1_CC2S = longword($0300); //C2S[1:0] bits (Capture/Compare 2 Selection)
  2278. TIM_CCMR1_CC2S_0 = longword($0100); //it 0
  2279. TIM_CCMR1_CC2S_1 = longword($0200); //it 1
  2280. TIM_CCMR1_OC2FE = longword($0400); //utput Compare 2 Fast enable
  2281. TIM_CCMR1_OC2PE = longword($0800); //utput Compare 2 Preload enable
  2282. TIM_CCMR1_OC2M = longword($7000); //C2M[2:0] bits (Output Compare 2 Mode)
  2283. TIM_CCMR1_OC2M_0 = longword($1000); //it 0
  2284. TIM_CCMR1_OC2M_1 = longword($2000); //it 1
  2285. TIM_CCMR1_OC2M_2 = longword($4000); //it 2
  2286. TIM_CCMR1_OC2CE = longword($8000); //utput Compare 2 Clear Enable
  2287. //----------------------------------------------------------------------------
  2288. TIM_CCMR1_IC1PSC = longword($000C); //C1PSC[1:0] bits (Input Capture 1 Prescaler)
  2289. TIM_CCMR1_IC1PSC_0 = longword($0004); //it 0
  2290. TIM_CCMR1_IC1PSC_1 = longword($0008); //it 1
  2291. TIM_CCMR1_IC1F = longword($00F0); //C1F[3:0] bits (Input Capture 1 Filter)
  2292. TIM_CCMR1_IC1F_0 = longword($0010); //it 0
  2293. TIM_CCMR1_IC1F_1 = longword($0020); //it 1
  2294. TIM_CCMR1_IC1F_2 = longword($0040); //it 2
  2295. TIM_CCMR1_IC1F_3 = longword($0080); //it 3
  2296. TIM_CCMR1_IC2PSC = longword($0C00); //C2PSC[1:0] bits (Input Capture 2 Prescaler)
  2297. TIM_CCMR1_IC2PSC_0 = longword($0400); //it 0
  2298. TIM_CCMR1_IC2PSC_1 = longword($0800); //it 1
  2299. TIM_CCMR1_IC2F = longword($F000); //C2F[3:0] bits (Input Capture 2 Filter)
  2300. TIM_CCMR1_IC2F_0 = longword($1000); //it 0
  2301. TIM_CCMR1_IC2F_1 = longword($2000); //it 1
  2302. TIM_CCMR1_IC2F_2 = longword($4000); //it 2
  2303. TIM_CCMR1_IC2F_3 = longword($8000); //it 3
  2304. //***************** Bit definition for TIM_CCMR2 register ******************
  2305. TIM_CCMR2_CC3S = longword($0003); //C3S[1:0] bits (Capture/Compare 3 Selection)
  2306. TIM_CCMR2_CC3S_0 = longword($0001); //it 0
  2307. TIM_CCMR2_CC3S_1 = longword($0002); //it 1
  2308. TIM_CCMR2_OC3FE = longword($0004); //utput Compare 3 Fast enable
  2309. TIM_CCMR2_OC3PE = longword($0008); //utput Compare 3 Preload enable
  2310. TIM_CCMR2_OC3M = longword($0070); //C3M[2:0] bits (Output Compare 3 Mode)
  2311. TIM_CCMR2_OC3M_0 = longword($0010); //it 0
  2312. TIM_CCMR2_OC3M_1 = longword($0020); //it 1
  2313. TIM_CCMR2_OC3M_2 = longword($0040); //it 2
  2314. TIM_CCMR2_OC3CE = longword($0080); //utput Compare 3 Clear Enable
  2315. TIM_CCMR2_CC4S = longword($0300); //C4S[1:0] bits (Capture/Compare 4 Selection)
  2316. TIM_CCMR2_CC4S_0 = longword($0100); //it 0
  2317. TIM_CCMR2_CC4S_1 = longword($0200); //it 1
  2318. TIM_CCMR2_OC4FE = longword($0400); //utput Compare 4 Fast enable
  2319. TIM_CCMR2_OC4PE = longword($0800); //utput Compare 4 Preload enable
  2320. TIM_CCMR2_OC4M = longword($7000); //C4M[2:0] bits (Output Compare 4 Mode)
  2321. TIM_CCMR2_OC4M_0 = longword($1000); //it 0
  2322. TIM_CCMR2_OC4M_1 = longword($2000); //it 1
  2323. TIM_CCMR2_OC4M_2 = longword($4000); //it 2
  2324. TIM_CCMR2_OC4CE = longword($8000); //utput Compare 4 Clear Enable
  2325. //----------------------------------------------------------------------------
  2326. TIM_CCMR2_IC3PSC = longword($000C); //C3PSC[1:0] bits (Input Capture 3 Prescaler)
  2327. TIM_CCMR2_IC3PSC_0 = longword($0004); //it 0
  2328. TIM_CCMR2_IC3PSC_1 = longword($0008); //it 1
  2329. TIM_CCMR2_IC3F = longword($00F0); //C3F[3:0] bits (Input Capture 3 Filter)
  2330. TIM_CCMR2_IC3F_0 = longword($0010); //it 0
  2331. TIM_CCMR2_IC3F_1 = longword($0020); //it 1
  2332. TIM_CCMR2_IC3F_2 = longword($0040); //it 2
  2333. TIM_CCMR2_IC3F_3 = longword($0080); //it 3
  2334. TIM_CCMR2_IC4PSC = longword($0C00); //C4PSC[1:0] bits (Input Capture 4 Prescaler)
  2335. TIM_CCMR2_IC4PSC_0 = longword($0400); //it 0
  2336. TIM_CCMR2_IC4PSC_1 = longword($0800); //it 1
  2337. TIM_CCMR2_IC4F = longword($F000); //C4F[3:0] bits (Input Capture 4 Filter)
  2338. TIM_CCMR2_IC4F_0 = longword($1000); //it 0
  2339. TIM_CCMR2_IC4F_1 = longword($2000); //it 1
  2340. TIM_CCMR2_IC4F_2 = longword($4000); //it 2
  2341. TIM_CCMR2_IC4F_3 = longword($8000); //it 3
  2342. //****************** Bit definition for TIM_CCER register ******************
  2343. TIM_CCER_CC1E = longword($0001); //apture/Compare 1 output enable
  2344. TIM_CCER_CC1P = longword($0002); //apture/Compare 1 output Polarity
  2345. TIM_CCER_CC1NE = longword($0004); //apture/Compare 1 Complementary output enable
  2346. TIM_CCER_CC1NP = longword($0008); //apture/Compare 1 Complementary output Polarity
  2347. TIM_CCER_CC2E = longword($0010); //apture/Compare 2 output enable
  2348. TIM_CCER_CC2P = longword($0020); //apture/Compare 2 output Polarity
  2349. TIM_CCER_CC2NE = longword($0040); //apture/Compare 2 Complementary output enable
  2350. TIM_CCER_CC2NP = longword($0080); //apture/Compare 2 Complementary output Polarity
  2351. TIM_CCER_CC3E = longword($0100); //apture/Compare 3 output enable
  2352. TIM_CCER_CC3P = longword($0200); //apture/Compare 3 output Polarity
  2353. TIM_CCER_CC3NE = longword($0400); //apture/Compare 3 Complementary output enable
  2354. TIM_CCER_CC3NP = longword($0800); //apture/Compare 3 Complementary output Polarity
  2355. TIM_CCER_CC4E = longword($1000); //apture/Compare 4 output enable
  2356. TIM_CCER_CC4P = longword($2000); //apture/Compare 4 output Polarity
  2357. TIM_CCER_CC4NP = longword($8000); //apture/Compare 4 Complementary output Polarity
  2358. //****************** Bit definition for TIM_CNT register *******************
  2359. TIM_CNT_CNT = longword($FFFF); //ounter Value
  2360. //****************** Bit definition for TIM_PSC register *******************
  2361. TIM_PSC_PSC = longword($FFFF); //rescaler Value
  2362. //****************** Bit definition for TIM_ARR register *******************
  2363. TIM_ARR_ARR = longword($FFFF); //ctual auto-reload Value
  2364. //****************** Bit definition for TIM_RCR register *******************
  2365. TIM_RCR_REP = longword($FF); //epetition Counter Value
  2366. //****************** Bit definition for TIM_CCR1 register ******************
  2367. TIM_CCR1_CCR1 = longword($FFFF); //apture/Compare 1 Value
  2368. //****************** Bit definition for TIM_CCR2 register ******************
  2369. TIM_CCR2_CCR2 = longword($FFFF); //apture/Compare 2 Value
  2370. //****************** Bit definition for TIM_CCR3 register ******************
  2371. TIM_CCR3_CCR3 = longword($FFFF); //apture/Compare 3 Value
  2372. //****************** Bit definition for TIM_CCR4 register ******************
  2373. TIM_CCR4_CCR4 = longword($FFFF); //apture/Compare 4 Value
  2374. //****************** Bit definition for TIM_BDTR register ******************
  2375. TIM_BDTR_DTG = longword($00FF); //TG[0:7] bits (Dead-Time Generator set-up)
  2376. TIM_BDTR_DTG_0 = longword($0001); //it 0
  2377. TIM_BDTR_DTG_1 = longword($0002); //it 1
  2378. TIM_BDTR_DTG_2 = longword($0004); //it 2
  2379. TIM_BDTR_DTG_3 = longword($0008); //it 3
  2380. TIM_BDTR_DTG_4 = longword($0010); //it 4
  2381. TIM_BDTR_DTG_5 = longword($0020); //it 5
  2382. TIM_BDTR_DTG_6 = longword($0040); //it 6
  2383. TIM_BDTR_DTG_7 = longword($0080); //it 7
  2384. TIM_BDTR_LOCK = longword($0300); //OCK[1:0] bits (Lock Configuration)
  2385. TIM_BDTR_LOCK_0 = longword($0100); //it 0
  2386. TIM_BDTR_LOCK_1 = longword($0200); //it 1
  2387. TIM_BDTR_OSSI = longword($0400); //ff-State Selection for Idle mode
  2388. TIM_BDTR_OSSR = longword($0800); //ff-State Selection for Run mode
  2389. TIM_BDTR_BKE = longword($1000); //reak enable
  2390. TIM_BDTR_BKP = longword($2000); //reak Polarity
  2391. TIM_BDTR_AOE = longword($4000); //utomatic Output enable
  2392. TIM_BDTR_MOE = longword($8000); //ain Output enable
  2393. //****************** Bit definition for TIM_DCR register *******************
  2394. TIM_DCR_DBA = longword($001F); //BA[4:0] bits (DMA Base Address)
  2395. TIM_DCR_DBA_0 = longword($0001); //it 0
  2396. TIM_DCR_DBA_1 = longword($0002); //it 1
  2397. TIM_DCR_DBA_2 = longword($0004); //it 2
  2398. TIM_DCR_DBA_3 = longword($0008); //it 3
  2399. TIM_DCR_DBA_4 = longword($0010); //it 4
  2400. TIM_DCR_DBL = longword($1F00); //BL[4:0] bits (DMA Burst Length)
  2401. TIM_DCR_DBL_0 = longword($0100); //it 0
  2402. TIM_DCR_DBL_1 = longword($0200); //it 1
  2403. TIM_DCR_DBL_2 = longword($0400); //it 2
  2404. TIM_DCR_DBL_3 = longword($0800); //it 3
  2405. TIM_DCR_DBL_4 = longword($1000); //it 4
  2406. //****************** Bit definition for TIM_DMAR register ******************
  2407. TIM_DMAR_DMAB = longword($FFFF); //MA register for burst accesses
  2408. //****************** Bit definition for TIM_OR register ********************
  2409. TIM14_OR_TI1_RMP = longword($0003); //I1_RMP[1:0] bits (TIM14 Input 4 remap)
  2410. TIM14_OR_TI1_RMP_0 = longword($0001); //it 0
  2411. TIM14_OR_TI1_RMP_1 = longword($0002); //it 1
  2412. //****************************************************************************
  2413. //Universal Synchronous Asynchronous Receiver Transmitter (USART)
  2414. //****************************************************************************
  2415. //***************** Bit definition for USART_CR1 register ******************
  2416. USART_CR1_UE = longword($00000001); //USART Enable
  2417. USART_CR1_UESM = longword($00000002); //USART Enable in STOP Mode
  2418. USART_CR1_RE = longword($00000004); //Receiver Enable
  2419. USART_CR1_TE = longword($00000008); //Transmitter Enable
  2420. USART_CR1_IDLEIE = longword($00000010); //IDLE Interrupt Enable
  2421. USART_CR1_RXNEIE = longword($00000020); //RXNE Interrupt Enable
  2422. USART_CR1_TCIE = longword($00000040); //Transmission Complete Interrupt Enable
  2423. USART_CR1_TXEIE = longword($00000080); //TXE Interrupt Enable
  2424. USART_CR1_PEIE = longword($00000100); //PE Interrupt Enable
  2425. USART_CR1_PS = longword($00000200); //Parity Selection
  2426. USART_CR1_PCE = longword($00000400); //Parity Control Enable
  2427. USART_CR1_WAKE = longword($00000800); //Receiver Wakeup method
  2428. USART_CR1_M = longword($00001000); //Word length
  2429. USART_CR1_MME = longword($00002000); //Mute Mode Enable
  2430. USART_CR1_CMIE = longword($00004000); //Character match interrupt enable
  2431. USART_CR1_OVER8 = longword($00008000); //Oversampling by 8-bit or 16-bit mode
  2432. USART_CR1_DEDT = longword($001F0000); //DEDT[4:0] bits (Driver Enable Deassertion Time)
  2433. USART_CR1_DEDT_0 = longword($00010000); //Bit 0
  2434. USART_CR1_DEDT_1 = longword($00020000); //Bit 1
  2435. USART_CR1_DEDT_2 = longword($00040000); //Bit 2
  2436. USART_CR1_DEDT_3 = longword($00080000); //Bit 3
  2437. USART_CR1_DEDT_4 = longword($00100000); //Bit 4
  2438. USART_CR1_DEAT = longword($03E00000); //DEAT[4:0] bits (Driver Enable Assertion Time)
  2439. USART_CR1_DEAT_0 = longword($00200000); //Bit 0
  2440. USART_CR1_DEAT_1 = longword($00400000); //Bit 1
  2441. USART_CR1_DEAT_2 = longword($00800000); //Bit 2
  2442. USART_CR1_DEAT_3 = longword($01000000); //Bit 3
  2443. USART_CR1_DEAT_4 = longword($02000000); //Bit 4
  2444. USART_CR1_RTOIE = longword($04000000); //Receive Time Out interrupt enable
  2445. USART_CR1_EOBIE = longword($08000000); //End of Block interrupt enable
  2446. //***************** Bit definition for USART_CR2 register ******************
  2447. USART_CR2_ADDM7 = longword($00000010); //7-bit or 4-bit Address Detection
  2448. USART_CR2_LBDL = longword($00000020); //LIN Break Detection Length
  2449. USART_CR2_LBDIE = longword($00000040); //LIN Break Detection Interrupt Enable
  2450. USART_CR2_LBCL = longword($00000100); //Last Bit Clock pulse
  2451. USART_CR2_CPHA = longword($00000200); //Clock Phase
  2452. USART_CR2_CPOL = longword($00000400); //Clock Polarity
  2453. USART_CR2_CLKEN = longword($00000800); //Clock Enable
  2454. USART_CR2_STOP = longword($00003000); //STOP[1:0] bits (STOP bits)
  2455. USART_CR2_STOP_0 = longword($00001000); //Bit 0
  2456. USART_CR2_STOP_1 = longword($00002000); //Bit 1
  2457. USART_CR2_LINEN = longword($00004000); //LIN mode enable
  2458. USART_CR2_SWAP = longword($00008000); //SWAP TX/RX pins
  2459. USART_CR2_RXINV = longword($00010000); //RX pin active level inversion
  2460. USART_CR2_TXINV = longword($00020000); //TX pin active level inversion
  2461. USART_CR2_DATAINV = longword($00040000); //Binary data inversion
  2462. USART_CR2_MSBFIRST = longword($00080000); //Most Significant Bit First
  2463. USART_CR2_ABREN = longword($00100000); //Auto Baud-Rate Enable
  2464. USART_CR2_ABRMODE = longword($00600000); //ABRMOD[1:0] bits (Auto Baud-Rate Mode)
  2465. USART_CR2_ABRMODE_0 = longword($00200000); //Bit 0
  2466. USART_CR2_ABRMODE_1 = longword($00400000); //Bit 1
  2467. USART_CR2_RTOEN = longword($00800000); //Receiver Time-Out enable
  2468. USART_CR2_ADD = longword($FF000000); //Address of the USART node
  2469. //***************** Bit definition for USART_CR3 register ******************
  2470. USART_CR3_EIE = longword($00000001); //Error Interrupt Enable
  2471. USART_CR3_IREN = longword($00000002); //IrDA mode Enable
  2472. USART_CR3_IRLP = longword($00000004); //IrDA Low-Power
  2473. USART_CR3_HDSEL = longword($00000008); //Half-Duplex Selection
  2474. USART_CR3_NACK = longword($00000010); //SmartCard NACK enable
  2475. USART_CR3_SCEN = longword($00000020); //SmartCard mode enable
  2476. USART_CR3_DMAR = longword($00000040); //DMA Enable Receiver
  2477. USART_CR3_DMAT = longword($00000080); //DMA Enable Transmitter
  2478. USART_CR3_RTSE = longword($00000100); //RTS Enable
  2479. USART_CR3_CTSE = longword($00000200); //CTS Enable
  2480. USART_CR3_CTSIE = longword($00000400); //CTS Interrupt Enable
  2481. USART_CR3_ONEBIT = longword($00000800); //One sample bit method enable
  2482. USART_CR3_OVRDIS = longword($00001000); //Overrun Disable
  2483. USART_CR3_DDRE = longword($00002000); //DMA Disable on Reception Error
  2484. USART_CR3_DEM = longword($00004000); //Driver Enable Mode
  2485. USART_CR3_DEP = longword($00008000); //Driver Enable Polarity Selection
  2486. USART_CR3_SCARCNT = longword($000E0000); //SCARCNT[2:0] bits (SmartCard Auto-Retry Count)
  2487. USART_CR3_SCARCNT_0 = longword($00020000); //Bit 0
  2488. USART_CR3_SCARCNT_1 = longword($00040000); //Bit 1
  2489. USART_CR3_SCARCNT_2 = longword($00080000); //Bit 2
  2490. USART_CR3_WUS = longword($00300000); //WUS[1:0] bits (Wake UP Interrupt Flag Selection)
  2491. USART_CR3_WUS_0 = longword($00100000); //Bit 0
  2492. USART_CR3_WUS_1 = longword($00200000); //Bit 1
  2493. USART_CR3_WUFIE = longword($00400000); //Wake Up Interrupt Enable
  2494. //***************** Bit definition for USART_BRR register ******************
  2495. USART_BRR_DIV_FRACTION = longword($000F); //Fraction of USARTDIV
  2496. USART_BRR_DIV_MANTISSA = longword($FFF0); //Mantissa of USARTDIV
  2497. //***************** Bit definition for USART_GTPR register *****************
  2498. USART_GTPR_PSC = longword($00FF); //PSC[7:0] bits (Prescaler value)
  2499. USART_GTPR_GT = longword($FF00); //GT[7:0] bits (Guard time value)
  2500. //****************** Bit definition for USART_RTOR register ****************
  2501. USART_RTOR_RTO = longword($00FFFFFF); //Receiver Time Out Value
  2502. USART_RTOR_BLEN = longword($FF000000); //Block Length
  2503. //****************** Bit definition for USART_RQR register *****************
  2504. USART_RQR_ABRRQ = longword($0001); //Auto-Baud Rate Request
  2505. USART_RQR_SBKRQ = longword($0002); //Send Break Request
  2506. USART_RQR_MMRQ = longword($0004); //Mute Mode Request
  2507. USART_RQR_RXFRQ = longword($0008); //Receive Data flush Request
  2508. USART_RQR_TXFRQ = longword($0010); //Transmit data flush Request
  2509. //****************** Bit definition for USART_ISR register *****************
  2510. USART_ISR_PE = longword($00000001); //Parity Error
  2511. USART_ISR_FE = longword($00000002); //Framing Error
  2512. USART_ISR_NE = longword($00000004); //Noise detected Flag
  2513. USART_ISR_ORE = longword($00000008); //OverRun Error
  2514. USART_ISR_IDLE = longword($00000010); //IDLE line detected
  2515. USART_ISR_RXNE = longword($00000020); //Read Data Register Not Empty
  2516. USART_ISR_TC = longword($00000040); //Transmission Complete
  2517. USART_ISR_TXE = longword($00000080); //Transmit Data Register Empty
  2518. USART_ISR_LBD = longword($00000100); //LIN Break Detection Flag
  2519. USART_ISR_CTSIF = longword($00000200); //CTS interrupt flag
  2520. USART_ISR_CTS = longword($00000400); //CTS flag
  2521. USART_ISR_RTOF = longword($00000800); //Receiver Time Out
  2522. USART_ISR_EOBF = longword($00001000); //End Of Block Flag
  2523. USART_ISR_ABRE = longword($00004000); //Auto-Baud Rate Error
  2524. USART_ISR_ABRF = longword($00008000); //Auto-Baud Rate Flag
  2525. USART_ISR_BUSY = longword($00010000); //Busy Flag
  2526. USART_ISR_CMF = longword($00020000); //Character Match Flag
  2527. USART_ISR_SBKF = longword($00040000); //Send Break Flag
  2528. USART_ISR_RWU = longword($00080000); //Receive Wake Up from mute mode Flag
  2529. USART_ISR_WUF = longword($00100000); //Wake Up from stop mode Flag
  2530. USART_ISR_TEACK = longword($00200000); //Transmit Enable Acknowledge Flag
  2531. USART_ISR_REACK = longword($00400000); //Receive Enable Acknowledge Flag
  2532. //****************** Bit definition for USART_ICR register *****************
  2533. USART_ICR_PECF = longword($00000001); //Parity Error Clear Flag
  2534. USART_ICR_FECF = longword($00000002); //Framing Error Clear Flag
  2535. USART_ICR_NCF = longword($00000004); //Noise detected Clear Flag
  2536. USART_ICR_ORECF = longword($00000008); //OverRun Error Clear Flag
  2537. USART_ICR_IDLECF = longword($00000010); //IDLE line detected Clear Flag
  2538. USART_ICR_TCCF = longword($00000040); //Transmission Complete Clear Flag
  2539. USART_ICR_LBDCF = longword($00000100); //LIN Break Detection Clear Flag
  2540. USART_ICR_CTSCF = longword($00000200); //CTS Interrupt Clear Flag
  2541. USART_ICR_RTOCF = longword($00000800); //Receiver Time Out Clear Flag
  2542. USART_ICR_EOBCF = longword($00001000); //End Of Block Clear Flag
  2543. USART_ICR_CMCF = longword($00020000); //Character Match Clear Flag
  2544. USART_ICR_WUCF = longword($00100000); //Wake Up from stop mode Clear Flag
  2545. //****************** Bit definition for USART_RDR register *****************
  2546. USART_RDR_RDR = longword($01FF); //RDR[8:0] bits (Receive Data value)
  2547. //****************** Bit definition for USART_TDR register *****************
  2548. USART_TDR_TDR = longword($01FF); //TDR[8:0] bits (Transmit Data value)
  2549. //****************************************************************************
  2550. //Window WATCHDOG (WWDG)
  2551. //****************************************************************************
  2552. //****************** Bit definition for WWDG_CR register *******************
  2553. WWDG_CR_T = longword($7F); //T[6:0] bits (7-Bit counter (MSB to LSB))
  2554. WWDG_CR_T0 = longword($01); //Bit 0
  2555. WWDG_CR_T1 = longword($02); //Bit 1
  2556. WWDG_CR_T2 = longword($04); //Bit 2
  2557. WWDG_CR_T3 = longword($08); //Bit 3
  2558. WWDG_CR_T4 = longword($10); //Bit 4
  2559. WWDG_CR_T5 = longword($20); //Bit 5
  2560. WWDG_CR_T6 = longword($40); //Bit 6
  2561. WWDG_CR_WDGA = longword($80); //Activation bit
  2562. //****************** Bit definition for WWDG_CFR register ******************
  2563. WWDG_CFR_W = longword($007F); //W[6:0] bits (7-bit window value)
  2564. WWDG_CFR_W0 = longword($0001); //Bit 0
  2565. WWDG_CFR_W1 = longword($0002); //Bit 1
  2566. WWDG_CFR_W2 = longword($0004); //Bit 2
  2567. WWDG_CFR_W3 = longword($0008); //Bit 3
  2568. WWDG_CFR_W4 = longword($0010); //Bit 4
  2569. WWDG_CFR_W5 = longword($0020); //Bit 5
  2570. WWDG_CFR_W6 = longword($0040); //Bit 6
  2571. WWDG_CFR_WDGTB = longword($0180); //WDGTB[1:0] bits (Timer Base)
  2572. WWDG_CFR_WDGTB0 = longword($0080); //Bit 0
  2573. WWDG_CFR_WDGTB1 = longword($0100); //Bit 1
  2574. WWDG_CFR_EWI = longword($0200); //Early Wakeup Interrupt
  2575. //****************** Bit definition for WWDG_SR register *******************
  2576. WWDG_SR_EWIF = longword($01); //Early Wakeup Interrupt Flag
  2577. //*********************** (C) COPYRIGHT STMicroelectronics *****END OF FILE***
  2578. implementation
  2579. procedure NonMaskableInt_interrupt; external name 'NonMaskableInt_interrupt';
  2580. procedure HardFault_interrupt; external name 'HardFault_interrupt';
  2581. procedure SVC_interrupt; external name 'SVC_interrupt';
  2582. procedure PendSV_interrupt; external name 'PendSV_interrupt';
  2583. procedure SysTick_interrupt; external name 'SysTick_interrupt';
  2584. procedure WWDG_interrupt; external name 'WWDG_interrupt';
  2585. procedure PVD_interrupt; external name 'PVD_interrupt';
  2586. procedure RTC_interrupt; external name 'RTC_interrupt';
  2587. procedure FLASH_interrupt; external name 'FLASH_interrupt';
  2588. procedure RCC_interrupt; external name 'RCC_interrupt';
  2589. procedure EXTI0_1_interrupt; external name 'EXTI0_1_interrupt';
  2590. procedure EXTI2_3_interrupt; external name 'EXTI2_3_interrupt';
  2591. procedure EXTI4_15_interrupt; external name 'EXTI4_15_interrupt';
  2592. procedure TS_interrupt; external name 'TS_interrupt';
  2593. procedure DMA1_Channel1_interrupt; external name 'DMA1_Channel1_interrupt';
  2594. procedure DMA1_Channel2_3_interrupt; external name 'DMA1_Channel2_3_interrupt';
  2595. procedure DMA1_Channel4_5_interrupt; external name 'DMA1_Channel4_5_interrupt';
  2596. procedure ADC1_COMP_interrupt; external name 'ADC1_COMP_interrupt';
  2597. procedure TIM1_BRK_UP_TRG_COM_interrupt; external name 'TIM1_BRK_UP_TRG_COM_interrupt';
  2598. procedure TIM1_CC_interrupt; external name 'TIM1_CC_interrupt';
  2599. procedure TIM2_interrupt; external name 'TIM2_interrupt';
  2600. procedure TIM3_interrupt; external name 'TIM3_interrupt';
  2601. procedure TIM6_DAC_interrupt; external name 'TIM6_DAC_interrupt';
  2602. procedure TIM14_interrupt; external name 'TIM14_interrupt';
  2603. procedure TIM15_interrupt; external name 'TIM15_interrupt';
  2604. procedure TIM16_interrupt; external name 'TIM16_interrupt';
  2605. procedure TIM17_interrupt; external name 'TIM17_interrupt';
  2606. procedure I2C1_interrupt; external name 'I2C1_interrupt';
  2607. procedure I2C2_interrupt; external name 'I2C2_interrupt';
  2608. procedure SPI1_interrupt; external name 'SPI1_interrupt';
  2609. procedure SPI2_interrupt; external name 'SPI2_interrupt';
  2610. procedure USART1_interrupt; external name 'USART1_interrupt';
  2611. procedure USART2_interrupt; external name 'USART2_interrupt';
  2612. procedure CEC_interrupt; external name 'CEC_interrupt';
  2613. {$i cortexm0_start.inc}
  2614. procedure Vectors; assembler; nostackframe;
  2615. label interrupt_vectors;
  2616. asm
  2617. .section ".init.interrupt_vectors"
  2618. interrupt_vectors:
  2619. .long _stack_top
  2620. .long Startup
  2621. .long NonMaskableInt_interrupt
  2622. .long HardFault_interrupt
  2623. .long 0
  2624. .long 0
  2625. .long 0
  2626. .long 0
  2627. .long 0
  2628. .long 0
  2629. .long 0
  2630. .long SVC_interrupt
  2631. .long 0
  2632. .long 0
  2633. .long PendSV_interrupt
  2634. .long SysTick_interrupt
  2635. .long WWDG_interrupt
  2636. .long PVD_interrupt
  2637. .long RTC_interrupt
  2638. .long FLASH_interrupt
  2639. .long RCC_interrupt
  2640. .long EXTI0_1_interrupt
  2641. .long EXTI2_3_interrupt
  2642. .long EXTI4_15_interrupt
  2643. .long TS_interrupt
  2644. .long DMA1_Channel1_interrupt
  2645. .long DMA1_Channel2_3_interrupt
  2646. .long DMA1_Channel4_5_interrupt
  2647. .long ADC1_COMP_interrupt
  2648. .long TIM1_BRK_UP_TRG_COM_interrupt
  2649. .long TIM1_CC_interrupt
  2650. .long TIM2_interrupt
  2651. .long TIM3_interrupt
  2652. .long TIM6_DAC_interrupt
  2653. .long 0
  2654. .long TIM14_interrupt
  2655. .long TIM15_interrupt
  2656. .long TIM16_interrupt
  2657. .long TIM17_interrupt
  2658. .long I2C1_interrupt
  2659. .long I2C2_interrupt
  2660. .long SPI1_interrupt
  2661. .long SPI2_interrupt
  2662. .long USART1_interrupt
  2663. .long USART2_interrupt
  2664. .long 0
  2665. .long CEC_interrupt
  2666. .long 0
  2667. .weak NonMaskableInt_interrupt
  2668. .weak HardFault_interrupt
  2669. .weak SVC_interrupt
  2670. .weak PendSV_interrupt
  2671. .weak SysTick_interrupt
  2672. .weak WWDG_interrupt
  2673. .weak PVD_interrupt
  2674. .weak RTC_interrupt
  2675. .weak FLASH_interrupt
  2676. .weak RCC_interrupt
  2677. .weak EXTI0_1_interrupt
  2678. .weak EXTI2_3_interrupt
  2679. .weak EXTI4_15_interrupt
  2680. .weak TS_interrupt
  2681. .weak DMA1_Channel1_interrupt
  2682. .weak DMA1_Channel2_3_interrupt
  2683. .weak DMA1_Channel4_5_interrupt
  2684. .weak ADC1_COMP_interrupt
  2685. .weak TIM1_BRK_UP_TRG_COM_interrupt
  2686. .weak TIM1_CC_interrupt
  2687. .weak TIM2_interrupt
  2688. .weak TIM3_interrupt
  2689. .weak TIM6_DAC_interrupt
  2690. .weak TIM14_interrupt
  2691. .weak TIM15_interrupt
  2692. .weak TIM16_interrupt
  2693. .weak TIM17_interrupt
  2694. .weak I2C1_interrupt
  2695. .weak I2C2_interrupt
  2696. .weak SPI1_interrupt
  2697. .weak SPI2_interrupt
  2698. .weak USART1_interrupt
  2699. .weak USART2_interrupt
  2700. .weak CEC_interrupt
  2701. .set NonMaskableInt_interrupt, HaltProc
  2702. .set HardFault_interrupt, HaltProc
  2703. .set SVC_interrupt, HaltProc
  2704. .set PendSV_interrupt, HaltProc
  2705. .set SysTick_interrupt, HaltProc
  2706. .set WWDG_interrupt, HaltProc
  2707. .set PVD_interrupt, HaltProc
  2708. .set RTC_interrupt, HaltProc
  2709. .set FLASH_interrupt, HaltProc
  2710. .set RCC_interrupt, HaltProc
  2711. .set EXTI0_1_interrupt, HaltProc
  2712. .set EXTI2_3_interrupt, HaltProc
  2713. .set EXTI4_15_interrupt, HaltProc
  2714. .set TS_interrupt, HaltProc
  2715. .set DMA1_Channel1_interrupt, HaltProc
  2716. .set DMA1_Channel2_3_interrupt, HaltProc
  2717. .set DMA1_Channel4_5_interrupt, HaltProc
  2718. .set ADC1_COMP_interrupt, HaltProc
  2719. .set TIM1_BRK_UP_TRG_COM_interrupt, HaltProc
  2720. .set TIM1_CC_interrupt, HaltProc
  2721. .set TIM2_interrupt, HaltProc
  2722. .set TIM3_interrupt, HaltProc
  2723. .set TIM6_DAC_interrupt, HaltProc
  2724. .set TIM14_interrupt, HaltProc
  2725. .set TIM15_interrupt, HaltProc
  2726. .set TIM16_interrupt, HaltProc
  2727. .set TIM17_interrupt, HaltProc
  2728. .set I2C1_interrupt, HaltProc
  2729. .set I2C2_interrupt, HaltProc
  2730. .set SPI1_interrupt, HaltProc
  2731. .set SPI2_interrupt, HaltProc
  2732. .set USART1_interrupt, HaltProc
  2733. .set USART2_interrupt, HaltProc
  2734. .set CEC_interrupt, HaltProc
  2735. .text
  2736. end;
  2737. end.