stm32f0xx.pp 178 KB

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