stm32h7xx_ll_dma.h 122 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282
  1. /**
  2. ******************************************************************************
  3. * @file stm32h7xx_ll_dma.h
  4. * @author MCD Application Team
  5. * @brief Header file of DMA LL module.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) 2017 STMicroelectronics.
  10. * All rights reserved.
  11. *
  12. * This software is licensed under terms that can be found in the LICENSE file
  13. * in the root directory of this software component.
  14. * If no LICENSE file comes with this software, it is provided AS-IS.
  15. *
  16. ******************************************************************************
  17. */
  18. /* Define to prevent recursive inclusion -------------------------------------*/
  19. #ifndef STM32H7xx_LL_DMA_H
  20. #define STM32H7xx_LL_DMA_H
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. /* Includes ------------------------------------------------------------------*/
  25. #include "stm32h7xx.h"
  26. #include "stm32h7xx_ll_dmamux.h"
  27. /** @addtogroup STM32H7xx_LL_Driver
  28. * @{
  29. */
  30. #if defined (DMA1) || defined (DMA2)
  31. /** @defgroup DMA_LL DMA
  32. * @{
  33. */
  34. /* Private types -------------------------------------------------------------*/
  35. /* Private variables ---------------------------------------------------------*/
  36. /** @defgroup DMA_LL_Private_Variables DMA Private Variables
  37. * @{
  38. */
  39. /* Array used to get the DMA stream register offset versus stream index LL_DMA_STREAM_x */
  40. static const uint8_t LL_DMA_STR_OFFSET_TAB[] =
  41. {
  42. (uint8_t)(DMA1_Stream0_BASE - DMA1_BASE),
  43. (uint8_t)(DMA1_Stream1_BASE - DMA1_BASE),
  44. (uint8_t)(DMA1_Stream2_BASE - DMA1_BASE),
  45. (uint8_t)(DMA1_Stream3_BASE - DMA1_BASE),
  46. (uint8_t)(DMA1_Stream4_BASE - DMA1_BASE),
  47. (uint8_t)(DMA1_Stream5_BASE - DMA1_BASE),
  48. (uint8_t)(DMA1_Stream6_BASE - DMA1_BASE),
  49. (uint8_t)(DMA1_Stream7_BASE - DMA1_BASE)
  50. };
  51. /**
  52. * @}
  53. */
  54. /* Private macros ------------------------------------------------------------*/
  55. /**
  56. * @brief Helper macro to convert DMA Instance DMAx into DMAMUX channel
  57. * @note DMAMUX channel 0 to 7 are mapped to DMA1 stream 0 to 7.
  58. * DMAMUX channel 8 to 15 are mapped to DMA2 stream 0 to 7.
  59. * @param __DMA_INSTANCE__ DMAx
  60. * @retval Channel_Offset (LL_DMAMUX_CHANNEL_8 or 0).
  61. */
  62. #define LL_DMA_INSTANCE_TO_DMAMUX_CHANNEL(__DMA_INSTANCE__) \
  63. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) ? 0UL : 8UL)
  64. /* Exported types ------------------------------------------------------------*/
  65. #if defined(USE_FULL_LL_DRIVER)
  66. /** @defgroup DMA_LL_ES_INIT DMA Exported Init structure
  67. * @{
  68. */
  69. typedef struct
  70. {
  71. uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for DMA transfer
  72. or as Source base address in case of memory to memory transfer direction.
  73. This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */
  74. uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer
  75. or as Destination base address in case of memory to memory transfer direction.
  76. This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */
  77. uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral,
  78. from memory to memory or from peripheral to memory.
  79. This parameter can be a value of @ref DMA_LL_EC_DIRECTION
  80. This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataTransferDirection(). */
  81. uint32_t Mode; /*!< Specifies the normal or circular operation mode.
  82. This parameter can be a value of @ref DMA_LL_EC_MODE
  83. @note The circular buffer mode cannot be used if the memory to memory
  84. data transfer direction is configured on the selected Stream
  85. This feature can be modified afterwards using unitary function @ref LL_DMA_SetMode(). */
  86. uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address in case of memory to memory transfer direction
  87. is incremented or not.
  88. This parameter can be a value of @ref DMA_LL_EC_PERIPH
  89. This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphIncMode(). */
  90. uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address in case of memory to memory transfer direction
  91. is incremented or not.
  92. This parameter can be a value of @ref DMA_LL_EC_MEMORY
  93. This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryIncMode(). */
  94. uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data size alignment (byte, half word, word)
  95. in case of memory to memory transfer direction.
  96. This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN
  97. This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphSize(). */
  98. uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination data size alignment (byte, half word, word)
  99. in case of memory to memory transfer direction.
  100. This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN
  101. This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemorySize(). */
  102. uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit.
  103. The data unit is equal to the source buffer configuration set in PeripheralSize
  104. or MemorySize parameters depending in the transfer direction.
  105. This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF
  106. This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataLength(). */
  107. uint32_t PeriphRequest; /*!< Specifies the peripheral request.
  108. This parameter can be a value of @ref DMAMUX1_Request_selection
  109. This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphRequest(). */
  110. uint32_t Priority; /*!< Specifies the channel priority level.
  111. This parameter can be a value of @ref DMA_LL_EC_PRIORITY
  112. This feature can be modified afterwards using unitary function @ref LL_DMA_SetStreamPriorityLevel(). */
  113. uint32_t FIFOMode; /*!< Specifies if the FIFO mode or Direct mode will be used for the specified stream.
  114. This parameter can be a value of @ref DMA_LL_FIFOMODE
  115. @note The Direct mode (FIFO mode disabled) cannot be used if the
  116. memory-to-memory data transfer is configured on the selected stream
  117. This feature can be modified afterwards using unitary functions @ref LL_DMA_EnableFifoMode() or @ref LL_DMA_EnableFifoMode() . */
  118. uint32_t FIFOThreshold; /*!< Specifies the FIFO threshold level.
  119. This parameter can be a value of @ref DMA_LL_EC_FIFOTHRESHOLD
  120. This feature can be modified afterwards using unitary function @ref LL_DMA_SetFIFOThreshold(). */
  121. uint32_t MemBurst; /*!< Specifies the Burst transfer configuration for the memory transfers.
  122. It specifies the amount of data to be transferred in a single non interruptible
  123. transaction.
  124. This parameter can be a value of @ref DMA_LL_EC_MBURST
  125. @note The burst mode is possible only if the address Increment mode is enabled.
  126. This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryBurstxfer(). */
  127. uint32_t PeriphBurst; /*!< Specifies the Burst transfer configuration for the peripheral transfers.
  128. It specifies the amount of data to be transferred in a single non interruptible
  129. transaction.
  130. This parameter can be a value of @ref DMA_LL_EC_PBURST
  131. @note The burst mode is possible only if the address Increment mode is enabled.
  132. This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphBurstxfer(). */
  133. } LL_DMA_InitTypeDef;
  134. /**
  135. * @}
  136. */
  137. #endif /*USE_FULL_LL_DRIVER*/
  138. /* Exported constants --------------------------------------------------------*/
  139. /** @defgroup DMA_LL_Exported_Constants DMA Exported Constants
  140. * @{
  141. */
  142. /** @defgroup DMA_LL_EC_STREAM STREAM
  143. * @{
  144. */
  145. #define LL_DMA_STREAM_0 0x00000000U
  146. #define LL_DMA_STREAM_1 0x00000001U
  147. #define LL_DMA_STREAM_2 0x00000002U
  148. #define LL_DMA_STREAM_3 0x00000003U
  149. #define LL_DMA_STREAM_4 0x00000004U
  150. #define LL_DMA_STREAM_5 0x00000005U
  151. #define LL_DMA_STREAM_6 0x00000006U
  152. #define LL_DMA_STREAM_7 0x00000007U
  153. #define LL_DMA_STREAM_ALL 0xFFFF0000U
  154. /**
  155. * @}
  156. */
  157. /** @defgroup DMA_LL_EC_DIRECTION DIRECTION
  158. * @{
  159. */
  160. #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */
  161. #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_SxCR_DIR_0 /*!< Memory to peripheral direction */
  162. #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_SxCR_DIR_1 /*!< Memory to memory direction */
  163. /**
  164. * @}
  165. */
  166. /** @defgroup DMA_LL_EC_MODE MODE
  167. * @{
  168. */
  169. #define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode */
  170. #define LL_DMA_MODE_CIRCULAR DMA_SxCR_CIRC /*!< Circular Mode */
  171. #define LL_DMA_MODE_PFCTRL DMA_SxCR_PFCTRL /*!< Peripheral flow control mode */
  172. /**
  173. * @}
  174. */
  175. /** @defgroup DMA_LL_EC_DOUBLEBUFFER_MODE DOUBLE BUFFER MODE
  176. * @{
  177. */
  178. #define LL_DMA_DOUBLEBUFFER_MODE_DISABLE 0x00000000U /*!< Disable double buffering mode */
  179. #define LL_DMA_DOUBLEBUFFER_MODE_ENABLE DMA_SxCR_DBM /*!< Enable double buffering mode */
  180. /**
  181. * @}
  182. */
  183. /** @defgroup DMA_LL_EC_PERIPH PERIPH
  184. * @{
  185. */
  186. #define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode Disable */
  187. #define LL_DMA_PERIPH_INCREMENT DMA_SxCR_PINC /*!< Peripheral increment mode Enable */
  188. /**
  189. * @}
  190. */
  191. /** @defgroup DMA_LL_EC_MEMORY MEMORY
  192. * @{
  193. */
  194. #define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disable */
  195. #define LL_DMA_MEMORY_INCREMENT DMA_SxCR_MINC /*!< Memory increment mode Enable */
  196. /**
  197. * @}
  198. */
  199. /** @defgroup DMA_LL_EC_PDATAALIGN PDATAALIGN
  200. * @{
  201. */
  202. #define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */
  203. #define LL_DMA_PDATAALIGN_HALFWORD DMA_SxCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */
  204. #define LL_DMA_PDATAALIGN_WORD DMA_SxCR_PSIZE_1 /*!< Peripheral data alignment : Word */
  205. /**
  206. * @}
  207. */
  208. /** @defgroup DMA_LL_EC_MDATAALIGN MDATAALIGN
  209. * @{
  210. */
  211. #define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */
  212. #define LL_DMA_MDATAALIGN_HALFWORD DMA_SxCR_MSIZE_0 /*!< Memory data alignment : HalfWord */
  213. #define LL_DMA_MDATAALIGN_WORD DMA_SxCR_MSIZE_1 /*!< Memory data alignment : Word */
  214. /**
  215. * @}
  216. */
  217. /** @defgroup DMA_LL_EC_OFFSETSIZE OFFSETSIZE
  218. * @{
  219. */
  220. #define LL_DMA_OFFSETSIZE_PSIZE 0x00000000U /*!< Peripheral increment offset size is linked to the PSIZE */
  221. #define LL_DMA_OFFSETSIZE_FIXEDTO4 DMA_SxCR_PINCOS /*!< Peripheral increment offset size is fixed to 4 (32-bit alignment) */
  222. /**
  223. * @}
  224. */
  225. /** @defgroup DMA_LL_EC_PRIORITY PRIORITY
  226. * @{
  227. */
  228. #define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */
  229. #define LL_DMA_PRIORITY_MEDIUM DMA_SxCR_PL_0 /*!< Priority level : Medium */
  230. #define LL_DMA_PRIORITY_HIGH DMA_SxCR_PL_1 /*!< Priority level : High */
  231. #define LL_DMA_PRIORITY_VERYHIGH DMA_SxCR_PL /*!< Priority level : Very_High */
  232. /**
  233. * @}
  234. */
  235. /** @defgroup DMA_LL_EC_MBURST MBURST
  236. * @{
  237. */
  238. #define LL_DMA_MBURST_SINGLE 0x00000000U /*!< Memory burst single transfer configuration */
  239. #define LL_DMA_MBURST_INC4 DMA_SxCR_MBURST_0 /*!< Memory burst of 4 beats transfer configuration */
  240. #define LL_DMA_MBURST_INC8 DMA_SxCR_MBURST_1 /*!< Memory burst of 8 beats transfer configuration */
  241. #define LL_DMA_MBURST_INC16 (DMA_SxCR_MBURST_0 | DMA_SxCR_MBURST_1) /*!< Memory burst of 16 beats transfer configuration */
  242. /**
  243. * @}
  244. */
  245. /** @defgroup DMA_LL_EC_PBURST PBURST
  246. * @{
  247. */
  248. #define LL_DMA_PBURST_SINGLE 0x00000000U /*!< Peripheral burst single transfer configuration */
  249. #define LL_DMA_PBURST_INC4 DMA_SxCR_PBURST_0 /*!< Peripheral burst of 4 beats transfer configuration */
  250. #define LL_DMA_PBURST_INC8 DMA_SxCR_PBURST_1 /*!< Peripheral burst of 8 beats transfer configuration */
  251. #define LL_DMA_PBURST_INC16 (DMA_SxCR_PBURST_0 | DMA_SxCR_PBURST_1) /*!< Peripheral burst of 16 beats transfer configuration */
  252. /**
  253. * @}
  254. */
  255. /** @defgroup DMA_LL_FIFOMODE DMA_LL_FIFOMODE
  256. * @{
  257. */
  258. #define LL_DMA_FIFOMODE_DISABLE 0x00000000U /*!< FIFO mode disable (direct mode is enabled) */
  259. #define LL_DMA_FIFOMODE_ENABLE DMA_SxFCR_DMDIS /*!< FIFO mode enable */
  260. /**
  261. * @}
  262. */
  263. /** @defgroup DMA_LL_EC_FIFOSTATUS_0 FIFOSTATUS 0
  264. * @{
  265. */
  266. #define LL_DMA_FIFOSTATUS_0_25 0x00000000U /*!< 0 < fifo_level < 1/4 */
  267. #define LL_DMA_FIFOSTATUS_25_50 DMA_SxFCR_FS_0 /*!< 1/4 < fifo_level < 1/2 */
  268. #define LL_DMA_FIFOSTATUS_50_75 DMA_SxFCR_FS_1 /*!< 1/2 < fifo_level < 3/4 */
  269. #define LL_DMA_FIFOSTATUS_75_100 (DMA_SxFCR_FS_1 | DMA_SxFCR_FS_0) /*!< 3/4 < fifo_level < full */
  270. #define LL_DMA_FIFOSTATUS_EMPTY DMA_SxFCR_FS_2 /*!< FIFO is empty */
  271. #define LL_DMA_FIFOSTATUS_FULL (DMA_SxFCR_FS_2 | DMA_SxFCR_FS_0) /*!< FIFO is full */
  272. /**
  273. * @}
  274. */
  275. /** @defgroup DMA_LL_EC_FIFOTHRESHOLD FIFOTHRESHOLD
  276. * @{
  277. */
  278. #define LL_DMA_FIFOTHRESHOLD_1_4 0x00000000U /*!< FIFO threshold 1 quart full configuration */
  279. #define LL_DMA_FIFOTHRESHOLD_1_2 DMA_SxFCR_FTH_0 /*!< FIFO threshold half full configuration */
  280. #define LL_DMA_FIFOTHRESHOLD_3_4 DMA_SxFCR_FTH_1 /*!< FIFO threshold 3 quarts full configuration */
  281. #define LL_DMA_FIFOTHRESHOLD_FULL DMA_SxFCR_FTH /*!< FIFO threshold full configuration */
  282. /**
  283. * @}
  284. */
  285. /** @defgroup DMA_LL_EC_CURRENTTARGETMEM CURRENTTARGETMEM
  286. * @{
  287. */
  288. #define LL_DMA_CURRENTTARGETMEM0 0x00000000U /*!< Set CurrentTarget Memory to Memory 0 */
  289. #define LL_DMA_CURRENTTARGETMEM1 DMA_SxCR_CT /*!< Set CurrentTarget Memory to Memory 1 */
  290. /**
  291. * @}
  292. */
  293. /**
  294. * @}
  295. */
  296. /* Exported macro ------------------------------------------------------------*/
  297. /** @defgroup DMA_LL_Exported_Macros DMA Exported Macros
  298. * @{
  299. */
  300. /** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros
  301. * @{
  302. */
  303. /**
  304. * @brief Write a value in DMA register
  305. * @param __INSTANCE__ DMA Instance
  306. * @param __REG__ Register to be written
  307. * @param __VALUE__ Value to be written in the register
  308. * @retval None
  309. */
  310. #define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__))
  311. /**
  312. * @brief Read a value in DMA register
  313. * @param __INSTANCE__ DMA Instance
  314. * @param __REG__ Register to be read
  315. * @retval Register value
  316. */
  317. #define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
  318. /**
  319. * @}
  320. */
  321. /** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxStreamy
  322. * @{
  323. */
  324. /**
  325. * @brief Convert DMAx_Streamy into DMAx
  326. * @param __STREAM_INSTANCE__ DMAx_Streamy
  327. * @retval DMAx
  328. */
  329. #define __LL_DMA_GET_INSTANCE(__STREAM_INSTANCE__) \
  330. (((uint32_t)(__STREAM_INSTANCE__) > ((uint32_t)DMA1_Stream7)) ? DMA2 : DMA1)
  331. /**
  332. * @brief Convert DMAx_Streamy into LL_DMA_STREAM_y
  333. * @param __STREAM_INSTANCE__ DMAx_Streamy
  334. * @retval LL_DMA_STREAM_y
  335. */
  336. #define __LL_DMA_GET_STREAM(__STREAM_INSTANCE__) \
  337. (((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream0)) ? LL_DMA_STREAM_0 : \
  338. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream0)) ? LL_DMA_STREAM_0 : \
  339. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream1)) ? LL_DMA_STREAM_1 : \
  340. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream1)) ? LL_DMA_STREAM_1 : \
  341. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream2)) ? LL_DMA_STREAM_2 : \
  342. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream2)) ? LL_DMA_STREAM_2 : \
  343. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream3)) ? LL_DMA_STREAM_3 : \
  344. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream3)) ? LL_DMA_STREAM_3 : \
  345. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream4)) ? LL_DMA_STREAM_4 : \
  346. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream4)) ? LL_DMA_STREAM_4 : \
  347. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream5)) ? LL_DMA_STREAM_5 : \
  348. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream5)) ? LL_DMA_STREAM_5 : \
  349. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream6)) ? LL_DMA_STREAM_6 : \
  350. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream6)) ? LL_DMA_STREAM_6 : \
  351. LL_DMA_STREAM_7)
  352. /**
  353. * @brief Convert DMA Instance DMAx and LL_DMA_STREAM_y into DMAx_Streamy
  354. * @param __DMA_INSTANCE__ DMAx
  355. * @param __STREAM__ LL_DMA_STREAM_y
  356. * @retval DMAx_Streamy
  357. */
  358. #define __LL_DMA_GET_STREAM_INSTANCE(__DMA_INSTANCE__, __STREAM__) \
  359. ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_0))) ? DMA1_Stream0 : \
  360. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_0))) ? DMA2_Stream0 : \
  361. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_1))) ? DMA1_Stream1 : \
  362. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_1))) ? DMA2_Stream1 : \
  363. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_2))) ? DMA1_Stream2 : \
  364. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_2))) ? DMA2_Stream2 : \
  365. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_3))) ? DMA1_Stream3 : \
  366. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_3))) ? DMA2_Stream3 : \
  367. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_4))) ? DMA1_Stream4 : \
  368. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_4))) ? DMA2_Stream4 : \
  369. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_5))) ? DMA1_Stream5 : \
  370. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_5))) ? DMA2_Stream5 : \
  371. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_6))) ? DMA1_Stream6 : \
  372. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_6))) ? DMA2_Stream6 : \
  373. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_7))) ? DMA1_Stream7 : \
  374. DMA2_Stream7)
  375. /**
  376. * @}
  377. */
  378. /**
  379. * @}
  380. */
  381. /* Exported functions --------------------------------------------------------*/
  382. /** @defgroup DMA_LL_Exported_Functions DMA Exported Functions
  383. * @{
  384. */
  385. /** @defgroup DMA_LL_EF_Configuration Configuration
  386. * @{
  387. */
  388. /**
  389. * @brief Enable DMA stream.
  390. * @rmtoll CR EN LL_DMA_EnableStream
  391. * @param DMAx DMAx Instance
  392. * @param Stream This parameter can be one of the following values:
  393. * @arg @ref LL_DMA_STREAM_0
  394. * @arg @ref LL_DMA_STREAM_1
  395. * @arg @ref LL_DMA_STREAM_2
  396. * @arg @ref LL_DMA_STREAM_3
  397. * @arg @ref LL_DMA_STREAM_4
  398. * @arg @ref LL_DMA_STREAM_5
  399. * @arg @ref LL_DMA_STREAM_6
  400. * @arg @ref LL_DMA_STREAM_7
  401. * @retval None
  402. */
  403. __STATIC_INLINE void LL_DMA_EnableStream(DMA_TypeDef *DMAx, uint32_t Stream)
  404. {
  405. uint32_t dma_base_addr = (uint32_t)DMAx;
  406. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_EN);
  407. }
  408. /**
  409. * @brief Disable DMA stream.
  410. * @rmtoll CR EN LL_DMA_DisableStream
  411. * @param DMAx DMAx Instance
  412. * @param Stream This parameter can be one of the following values:
  413. * @arg @ref LL_DMA_STREAM_0
  414. * @arg @ref LL_DMA_STREAM_1
  415. * @arg @ref LL_DMA_STREAM_2
  416. * @arg @ref LL_DMA_STREAM_3
  417. * @arg @ref LL_DMA_STREAM_4
  418. * @arg @ref LL_DMA_STREAM_5
  419. * @arg @ref LL_DMA_STREAM_6
  420. * @arg @ref LL_DMA_STREAM_7
  421. * @retval None
  422. */
  423. __STATIC_INLINE void LL_DMA_DisableStream(DMA_TypeDef *DMAx, uint32_t Stream)
  424. {
  425. uint32_t dma_base_addr = (uint32_t)DMAx;
  426. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_EN);
  427. }
  428. /**
  429. * @brief Check if DMA stream is enabled or disabled.
  430. * @rmtoll CR EN LL_DMA_IsEnabledStream
  431. * @param DMAx DMAx Instance
  432. * @param Stream This parameter can be one of the following values:
  433. * @arg @ref LL_DMA_STREAM_0
  434. * @arg @ref LL_DMA_STREAM_1
  435. * @arg @ref LL_DMA_STREAM_2
  436. * @arg @ref LL_DMA_STREAM_3
  437. * @arg @ref LL_DMA_STREAM_4
  438. * @arg @ref LL_DMA_STREAM_5
  439. * @arg @ref LL_DMA_STREAM_6
  440. * @arg @ref LL_DMA_STREAM_7
  441. * @retval State of bit (1 or 0).
  442. */
  443. __STATIC_INLINE uint32_t LL_DMA_IsEnabledStream(DMA_TypeDef *DMAx, uint32_t Stream)
  444. {
  445. uint32_t dma_base_addr = (uint32_t)DMAx;
  446. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_EN) == (DMA_SxCR_EN)) ? 1UL : 0UL);
  447. }
  448. /**
  449. * @brief Configure all parameters linked to DMA transfer.
  450. * @rmtoll CR DIR LL_DMA_ConfigTransfer\n
  451. * CR CIRC LL_DMA_ConfigTransfer\n
  452. * CR PINC LL_DMA_ConfigTransfer\n
  453. * CR MINC LL_DMA_ConfigTransfer\n
  454. * CR PSIZE LL_DMA_ConfigTransfer\n
  455. * CR MSIZE LL_DMA_ConfigTransfer\n
  456. * CR PL LL_DMA_ConfigTransfer\n
  457. * CR PFCTRL LL_DMA_ConfigTransfer
  458. * @param DMAx DMAx Instance
  459. * @param Stream This parameter can be one of the following values:
  460. * @arg @ref LL_DMA_STREAM_0
  461. * @arg @ref LL_DMA_STREAM_1
  462. * @arg @ref LL_DMA_STREAM_2
  463. * @arg @ref LL_DMA_STREAM_3
  464. * @arg @ref LL_DMA_STREAM_4
  465. * @arg @ref LL_DMA_STREAM_5
  466. * @arg @ref LL_DMA_STREAM_6
  467. * @arg @ref LL_DMA_STREAM_7
  468. * @param Configuration This parameter must be a combination of all the following values:
  469. * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
  470. * @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR or @ref LL_DMA_MODE_PFCTRL
  471. * @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT
  472. * @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT
  473. * @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDATAALIGN_WORD
  474. * @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDATAALIGN_WORD
  475. * @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HIGH or @ref LL_DMA_PRIORITY_VERYHIGH
  476. *@retval None
  477. */
  478. __STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Configuration)
  479. {
  480. uint32_t dma_base_addr = (uint32_t)DMAx;
  481. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR,
  482. DMA_SxCR_DIR | DMA_SxCR_CIRC | DMA_SxCR_PINC | DMA_SxCR_MINC | DMA_SxCR_PSIZE | DMA_SxCR_MSIZE | DMA_SxCR_PL | DMA_SxCR_PFCTRL,
  483. Configuration);
  484. }
  485. /**
  486. * @brief Set Data transfer direction (read from peripheral or from memory).
  487. * @rmtoll CR DIR LL_DMA_SetDataTransferDirection
  488. * @param DMAx DMAx Instance
  489. * @param Stream This parameter can be one of the following values:
  490. * @arg @ref LL_DMA_STREAM_0
  491. * @arg @ref LL_DMA_STREAM_1
  492. * @arg @ref LL_DMA_STREAM_2
  493. * @arg @ref LL_DMA_STREAM_3
  494. * @arg @ref LL_DMA_STREAM_4
  495. * @arg @ref LL_DMA_STREAM_5
  496. * @arg @ref LL_DMA_STREAM_6
  497. * @arg @ref LL_DMA_STREAM_7
  498. * @param Direction This parameter can be one of the following values:
  499. * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
  500. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
  501. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
  502. * @retval None
  503. */
  504. __STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Direction)
  505. {
  506. uint32_t dma_base_addr = (uint32_t)DMAx;
  507. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DIR, Direction);
  508. }
  509. /**
  510. * @brief Get Data transfer direction (read from peripheral or from memory).
  511. * @rmtoll CR DIR LL_DMA_GetDataTransferDirection
  512. * @param DMAx DMAx Instance
  513. * @param Stream This parameter can be one of the following values:
  514. * @arg @ref LL_DMA_STREAM_0
  515. * @arg @ref LL_DMA_STREAM_1
  516. * @arg @ref LL_DMA_STREAM_2
  517. * @arg @ref LL_DMA_STREAM_3
  518. * @arg @ref LL_DMA_STREAM_4
  519. * @arg @ref LL_DMA_STREAM_5
  520. * @arg @ref LL_DMA_STREAM_6
  521. * @arg @ref LL_DMA_STREAM_7
  522. * @retval Returned value can be one of the following values:
  523. * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
  524. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
  525. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
  526. */
  527. __STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream)
  528. {
  529. uint32_t dma_base_addr = (uint32_t)DMAx;
  530. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DIR));
  531. }
  532. /**
  533. * @brief Set DMA mode normal, circular or peripheral flow control.
  534. * @rmtoll CR CIRC LL_DMA_SetMode\n
  535. * CR PFCTRL LL_DMA_SetMode
  536. * @param DMAx DMAx Instance
  537. * @param Stream This parameter can be one of the following values:
  538. * @arg @ref LL_DMA_STREAM_0
  539. * @arg @ref LL_DMA_STREAM_1
  540. * @arg @ref LL_DMA_STREAM_2
  541. * @arg @ref LL_DMA_STREAM_3
  542. * @arg @ref LL_DMA_STREAM_4
  543. * @arg @ref LL_DMA_STREAM_5
  544. * @arg @ref LL_DMA_STREAM_6
  545. * @arg @ref LL_DMA_STREAM_7
  546. * @param Mode This parameter can be one of the following values:
  547. * @arg @ref LL_DMA_MODE_NORMAL
  548. * @arg @ref LL_DMA_MODE_CIRCULAR
  549. * @arg @ref LL_DMA_MODE_PFCTRL
  550. * @retval None
  551. */
  552. __STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mode)
  553. {
  554. uint32_t dma_base_addr = (uint32_t)DMAx;
  555. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_CIRC | DMA_SxCR_PFCTRL, Mode);
  556. }
  557. /**
  558. * @brief Get DMA mode normal, circular or peripheral flow control.
  559. * @rmtoll CR CIRC LL_DMA_GetMode\n
  560. * CR PFCTRL LL_DMA_GetMode
  561. * @param DMAx DMAx Instance
  562. * @param Stream This parameter can be one of the following values:
  563. * @arg @ref LL_DMA_STREAM_0
  564. * @arg @ref LL_DMA_STREAM_1
  565. * @arg @ref LL_DMA_STREAM_2
  566. * @arg @ref LL_DMA_STREAM_3
  567. * @arg @ref LL_DMA_STREAM_4
  568. * @arg @ref LL_DMA_STREAM_5
  569. * @arg @ref LL_DMA_STREAM_6
  570. * @arg @ref LL_DMA_STREAM_7
  571. * @retval Returned value can be one of the following values:
  572. * @arg @ref LL_DMA_MODE_NORMAL
  573. * @arg @ref LL_DMA_MODE_CIRCULAR
  574. * @arg @ref LL_DMA_MODE_PFCTRL
  575. */
  576. __STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Stream)
  577. {
  578. uint32_t dma_base_addr = (uint32_t)DMAx;
  579. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_CIRC | DMA_SxCR_PFCTRL));
  580. }
  581. /**
  582. * @brief Set Peripheral increment mode.
  583. * @rmtoll CR PINC LL_DMA_SetPeriphIncMode
  584. * @param DMAx DMAx Instance
  585. * @param Stream This parameter can be one of the following values:
  586. * @arg @ref LL_DMA_STREAM_0
  587. * @arg @ref LL_DMA_STREAM_1
  588. * @arg @ref LL_DMA_STREAM_2
  589. * @arg @ref LL_DMA_STREAM_3
  590. * @arg @ref LL_DMA_STREAM_4
  591. * @arg @ref LL_DMA_STREAM_5
  592. * @arg @ref LL_DMA_STREAM_6
  593. * @arg @ref LL_DMA_STREAM_7
  594. * @param IncrementMode This parameter can be one of the following values:
  595. * @arg @ref LL_DMA_PERIPH_NOINCREMENT
  596. * @arg @ref LL_DMA_PERIPH_INCREMENT
  597. * @retval None
  598. */
  599. __STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t IncrementMode)
  600. {
  601. uint32_t dma_base_addr = (uint32_t)DMAx;
  602. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PINC, IncrementMode);
  603. }
  604. /**
  605. * @brief Get Peripheral increment mode.
  606. * @rmtoll CR PINC LL_DMA_GetPeriphIncMode
  607. * @param DMAx DMAx Instance
  608. * @param Stream This parameter can be one of the following values:
  609. * @arg @ref LL_DMA_STREAM_0
  610. * @arg @ref LL_DMA_STREAM_1
  611. * @arg @ref LL_DMA_STREAM_2
  612. * @arg @ref LL_DMA_STREAM_3
  613. * @arg @ref LL_DMA_STREAM_4
  614. * @arg @ref LL_DMA_STREAM_5
  615. * @arg @ref LL_DMA_STREAM_6
  616. * @arg @ref LL_DMA_STREAM_7
  617. * @retval Returned value can be one of the following values:
  618. * @arg @ref LL_DMA_PERIPH_NOINCREMENT
  619. * @arg @ref LL_DMA_PERIPH_INCREMENT
  620. */
  621. __STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream)
  622. {
  623. uint32_t dma_base_addr = (uint32_t)DMAx;
  624. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PINC));
  625. }
  626. /**
  627. * @brief Set Memory increment mode.
  628. * @rmtoll CR MINC LL_DMA_SetMemoryIncMode
  629. * @param DMAx DMAx Instance
  630. * @param Stream This parameter can be one of the following values:
  631. * @arg @ref LL_DMA_STREAM_0
  632. * @arg @ref LL_DMA_STREAM_1
  633. * @arg @ref LL_DMA_STREAM_2
  634. * @arg @ref LL_DMA_STREAM_3
  635. * @arg @ref LL_DMA_STREAM_4
  636. * @arg @ref LL_DMA_STREAM_5
  637. * @arg @ref LL_DMA_STREAM_6
  638. * @arg @ref LL_DMA_STREAM_7
  639. * @param IncrementMode This parameter can be one of the following values:
  640. * @arg @ref LL_DMA_MEMORY_NOINCREMENT
  641. * @arg @ref LL_DMA_MEMORY_INCREMENT
  642. * @retval None
  643. */
  644. __STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t IncrementMode)
  645. {
  646. uint32_t dma_base_addr = (uint32_t)DMAx;
  647. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MINC, IncrementMode);
  648. }
  649. /**
  650. * @brief Get Memory increment mode.
  651. * @rmtoll CR MINC LL_DMA_GetMemoryIncMode
  652. * @param DMAx DMAx Instance
  653. * @param Stream This parameter can be one of the following values:
  654. * @arg @ref LL_DMA_STREAM_0
  655. * @arg @ref LL_DMA_STREAM_1
  656. * @arg @ref LL_DMA_STREAM_2
  657. * @arg @ref LL_DMA_STREAM_3
  658. * @arg @ref LL_DMA_STREAM_4
  659. * @arg @ref LL_DMA_STREAM_5
  660. * @arg @ref LL_DMA_STREAM_6
  661. * @arg @ref LL_DMA_STREAM_7
  662. * @retval Returned value can be one of the following values:
  663. * @arg @ref LL_DMA_MEMORY_NOINCREMENT
  664. * @arg @ref LL_DMA_MEMORY_INCREMENT
  665. */
  666. __STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream)
  667. {
  668. uint32_t dma_base_addr = (uint32_t)DMAx;
  669. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MINC));
  670. }
  671. /**
  672. * @brief Set Peripheral size.
  673. * @rmtoll CR PSIZE LL_DMA_SetPeriphSize
  674. * @param DMAx DMAx Instance
  675. * @param Stream This parameter can be one of the following values:
  676. * @arg @ref LL_DMA_STREAM_0
  677. * @arg @ref LL_DMA_STREAM_1
  678. * @arg @ref LL_DMA_STREAM_2
  679. * @arg @ref LL_DMA_STREAM_3
  680. * @arg @ref LL_DMA_STREAM_4
  681. * @arg @ref LL_DMA_STREAM_5
  682. * @arg @ref LL_DMA_STREAM_6
  683. * @arg @ref LL_DMA_STREAM_7
  684. * @param Size This parameter can be one of the following values:
  685. * @arg @ref LL_DMA_PDATAALIGN_BYTE
  686. * @arg @ref LL_DMA_PDATAALIGN_HALFWORD
  687. * @arg @ref LL_DMA_PDATAALIGN_WORD
  688. * @retval None
  689. */
  690. __STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size)
  691. {
  692. uint32_t dma_base_addr = (uint32_t)DMAx;
  693. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PSIZE, Size);
  694. }
  695. /**
  696. * @brief Get Peripheral size.
  697. * @rmtoll CR PSIZE LL_DMA_GetPeriphSize
  698. * @param DMAx DMAx Instance
  699. * @param Stream This parameter can be one of the following values:
  700. * @arg @ref LL_DMA_STREAM_0
  701. * @arg @ref LL_DMA_STREAM_1
  702. * @arg @ref LL_DMA_STREAM_2
  703. * @arg @ref LL_DMA_STREAM_3
  704. * @arg @ref LL_DMA_STREAM_4
  705. * @arg @ref LL_DMA_STREAM_5
  706. * @arg @ref LL_DMA_STREAM_6
  707. * @arg @ref LL_DMA_STREAM_7
  708. * @retval Returned value can be one of the following values:
  709. * @arg @ref LL_DMA_PDATAALIGN_BYTE
  710. * @arg @ref LL_DMA_PDATAALIGN_HALFWORD
  711. * @arg @ref LL_DMA_PDATAALIGN_WORD
  712. */
  713. __STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream)
  714. {
  715. uint32_t dma_base_addr = (uint32_t)DMAx;
  716. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PSIZE));
  717. }
  718. /**
  719. * @brief Set Memory size.
  720. * @rmtoll CR MSIZE LL_DMA_SetMemorySize
  721. * @param DMAx DMAx Instance
  722. * @param Stream This parameter can be one of the following values:
  723. * @arg @ref LL_DMA_STREAM_0
  724. * @arg @ref LL_DMA_STREAM_1
  725. * @arg @ref LL_DMA_STREAM_2
  726. * @arg @ref LL_DMA_STREAM_3
  727. * @arg @ref LL_DMA_STREAM_4
  728. * @arg @ref LL_DMA_STREAM_5
  729. * @arg @ref LL_DMA_STREAM_6
  730. * @arg @ref LL_DMA_STREAM_7
  731. * @param Size This parameter can be one of the following values:
  732. * @arg @ref LL_DMA_MDATAALIGN_BYTE
  733. * @arg @ref LL_DMA_MDATAALIGN_HALFWORD
  734. * @arg @ref LL_DMA_MDATAALIGN_WORD
  735. * @retval None
  736. */
  737. __STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size)
  738. {
  739. uint32_t dma_base_addr = (uint32_t)DMAx;
  740. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MSIZE, Size);
  741. }
  742. /**
  743. * @brief Get Memory size.
  744. * @rmtoll CR MSIZE LL_DMA_GetMemorySize
  745. * @param DMAx DMAx Instance
  746. * @param Stream This parameter can be one of the following values:
  747. * @arg @ref LL_DMA_STREAM_0
  748. * @arg @ref LL_DMA_STREAM_1
  749. * @arg @ref LL_DMA_STREAM_2
  750. * @arg @ref LL_DMA_STREAM_3
  751. * @arg @ref LL_DMA_STREAM_4
  752. * @arg @ref LL_DMA_STREAM_5
  753. * @arg @ref LL_DMA_STREAM_6
  754. * @arg @ref LL_DMA_STREAM_7
  755. * @retval Returned value can be one of the following values:
  756. * @arg @ref LL_DMA_MDATAALIGN_BYTE
  757. * @arg @ref LL_DMA_MDATAALIGN_HALFWORD
  758. * @arg @ref LL_DMA_MDATAALIGN_WORD
  759. */
  760. __STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream)
  761. {
  762. uint32_t dma_base_addr = (uint32_t)DMAx;
  763. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MSIZE));
  764. }
  765. /**
  766. * @brief Set Peripheral increment offset size.
  767. * @rmtoll CR PINCOS LL_DMA_SetIncOffsetSize
  768. * @param DMAx DMAx Instance
  769. * @param Stream This parameter can be one of the following values:
  770. * @arg @ref LL_DMA_STREAM_0
  771. * @arg @ref LL_DMA_STREAM_1
  772. * @arg @ref LL_DMA_STREAM_2
  773. * @arg @ref LL_DMA_STREAM_3
  774. * @arg @ref LL_DMA_STREAM_4
  775. * @arg @ref LL_DMA_STREAM_5
  776. * @arg @ref LL_DMA_STREAM_6
  777. * @arg @ref LL_DMA_STREAM_7
  778. * @param OffsetSize This parameter can be one of the following values:
  779. * @arg @ref LL_DMA_OFFSETSIZE_PSIZE
  780. * @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4
  781. * @retval None
  782. */
  783. __STATIC_INLINE void LL_DMA_SetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t OffsetSize)
  784. {
  785. uint32_t dma_base_addr = (uint32_t)DMAx;
  786. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PINCOS, OffsetSize);
  787. }
  788. /**
  789. * @brief Get Peripheral increment offset size.
  790. * @rmtoll CR PINCOS LL_DMA_GetIncOffsetSize
  791. * @param DMAx DMAx Instance
  792. * @param Stream This parameter can be one of the following values:
  793. * @arg @ref LL_DMA_STREAM_0
  794. * @arg @ref LL_DMA_STREAM_1
  795. * @arg @ref LL_DMA_STREAM_2
  796. * @arg @ref LL_DMA_STREAM_3
  797. * @arg @ref LL_DMA_STREAM_4
  798. * @arg @ref LL_DMA_STREAM_5
  799. * @arg @ref LL_DMA_STREAM_6
  800. * @arg @ref LL_DMA_STREAM_7
  801. * @retval Returned value can be one of the following values:
  802. * @arg @ref LL_DMA_OFFSETSIZE_PSIZE
  803. * @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4
  804. */
  805. __STATIC_INLINE uint32_t LL_DMA_GetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream)
  806. {
  807. uint32_t dma_base_addr = (uint32_t)DMAx;
  808. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PINCOS));
  809. }
  810. /**
  811. * @brief Set Stream priority level.
  812. * @rmtoll CR PL LL_DMA_SetStreamPriorityLevel
  813. * @param DMAx DMAx Instance
  814. * @param Stream This parameter can be one of the following values:
  815. * @arg @ref LL_DMA_STREAM_0
  816. * @arg @ref LL_DMA_STREAM_1
  817. * @arg @ref LL_DMA_STREAM_2
  818. * @arg @ref LL_DMA_STREAM_3
  819. * @arg @ref LL_DMA_STREAM_4
  820. * @arg @ref LL_DMA_STREAM_5
  821. * @arg @ref LL_DMA_STREAM_6
  822. * @arg @ref LL_DMA_STREAM_7
  823. * @param Priority This parameter can be one of the following values:
  824. * @arg @ref LL_DMA_PRIORITY_LOW
  825. * @arg @ref LL_DMA_PRIORITY_MEDIUM
  826. * @arg @ref LL_DMA_PRIORITY_HIGH
  827. * @arg @ref LL_DMA_PRIORITY_VERYHIGH
  828. * @retval None
  829. */
  830. __STATIC_INLINE void LL_DMA_SetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Priority)
  831. {
  832. uint32_t dma_base_addr = (uint32_t)DMAx;
  833. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PL, Priority);
  834. }
  835. /**
  836. * @brief Get Stream priority level.
  837. * @rmtoll CR PL LL_DMA_GetStreamPriorityLevel
  838. * @param DMAx DMAx Instance
  839. * @param Stream This parameter can be one of the following values:
  840. * @arg @ref LL_DMA_STREAM_0
  841. * @arg @ref LL_DMA_STREAM_1
  842. * @arg @ref LL_DMA_STREAM_2
  843. * @arg @ref LL_DMA_STREAM_3
  844. * @arg @ref LL_DMA_STREAM_4
  845. * @arg @ref LL_DMA_STREAM_5
  846. * @arg @ref LL_DMA_STREAM_6
  847. * @arg @ref LL_DMA_STREAM_7
  848. * @retval Returned value can be one of the following values:
  849. * @arg @ref LL_DMA_PRIORITY_LOW
  850. * @arg @ref LL_DMA_PRIORITY_MEDIUM
  851. * @arg @ref LL_DMA_PRIORITY_HIGH
  852. * @arg @ref LL_DMA_PRIORITY_VERYHIGH
  853. */
  854. __STATIC_INLINE uint32_t LL_DMA_GetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream)
  855. {
  856. uint32_t dma_base_addr = (uint32_t)DMAx;
  857. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PL));
  858. }
  859. /**
  860. * @brief Enable DMA stream bufferable transfer.
  861. * @rmtoll CR TRBUFF LL_DMA_EnableBufferableTransfer
  862. * @param DMAx DMAx Instance
  863. * @param Stream This parameter can be one of the following values:
  864. * @arg @ref LL_DMA_STREAM_0
  865. * @arg @ref LL_DMA_STREAM_1
  866. * @arg @ref LL_DMA_STREAM_2
  867. * @arg @ref LL_DMA_STREAM_3
  868. * @arg @ref LL_DMA_STREAM_4
  869. * @arg @ref LL_DMA_STREAM_5
  870. * @arg @ref LL_DMA_STREAM_6
  871. * @arg @ref LL_DMA_STREAM_7
  872. * @retval None
  873. */
  874. __STATIC_INLINE void LL_DMA_EnableBufferableTransfer(DMA_TypeDef *DMAx, uint32_t Stream)
  875. {
  876. uint32_t dma_base_addr = (uint32_t)DMAx;
  877. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TRBUFF);
  878. }
  879. /**
  880. * @brief Disable DMA stream bufferable transfer.
  881. * @rmtoll CR TRBUFF LL_DMA_DisableBufferableTransfer
  882. * @param DMAx DMAx Instance
  883. * @param Stream This parameter can be one of the following values:
  884. * @arg @ref LL_DMA_STREAM_0
  885. * @arg @ref LL_DMA_STREAM_1
  886. * @arg @ref LL_DMA_STREAM_2
  887. * @arg @ref LL_DMA_STREAM_3
  888. * @arg @ref LL_DMA_STREAM_4
  889. * @arg @ref LL_DMA_STREAM_5
  890. * @arg @ref LL_DMA_STREAM_6
  891. * @arg @ref LL_DMA_STREAM_7
  892. * @retval None
  893. */
  894. __STATIC_INLINE void LL_DMA_DisableBufferableTransfer(DMA_TypeDef *DMAx, uint32_t Stream)
  895. {
  896. uint32_t dma_base_addr = (uint32_t)DMAx;
  897. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TRBUFF);
  898. }
  899. /**
  900. * @brief Set Number of data to transfer.
  901. * @rmtoll NDTR NDT LL_DMA_SetDataLength
  902. * @note This action has no effect if
  903. * stream is enabled.
  904. * @param DMAx DMAx Instance
  905. * @param Stream This parameter can be one of the following values:
  906. * @arg @ref LL_DMA_STREAM_0
  907. * @arg @ref LL_DMA_STREAM_1
  908. * @arg @ref LL_DMA_STREAM_2
  909. * @arg @ref LL_DMA_STREAM_3
  910. * @arg @ref LL_DMA_STREAM_4
  911. * @arg @ref LL_DMA_STREAM_5
  912. * @arg @ref LL_DMA_STREAM_6
  913. * @arg @ref LL_DMA_STREAM_7
  914. * @param NbData Between 0 to 0xFFFFFFFF
  915. * @retval None
  916. */
  917. __STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t NbData)
  918. {
  919. uint32_t dma_base_addr = (uint32_t)DMAx;
  920. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->NDTR, DMA_SxNDT, NbData);
  921. }
  922. /**
  923. * @brief Get Number of data to transfer.
  924. * @rmtoll NDTR NDT LL_DMA_GetDataLength
  925. * @note Once the stream is enabled, the return value indicate the
  926. * remaining bytes to be transmitted.
  927. * @param DMAx DMAx Instance
  928. * @param Stream This parameter can be one of the following values:
  929. * @arg @ref LL_DMA_STREAM_0
  930. * @arg @ref LL_DMA_STREAM_1
  931. * @arg @ref LL_DMA_STREAM_2
  932. * @arg @ref LL_DMA_STREAM_3
  933. * @arg @ref LL_DMA_STREAM_4
  934. * @arg @ref LL_DMA_STREAM_5
  935. * @arg @ref LL_DMA_STREAM_6
  936. * @arg @ref LL_DMA_STREAM_7
  937. * @retval Between 0 to 0xFFFFFFFF
  938. */
  939. __STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef *DMAx, uint32_t Stream)
  940. {
  941. uint32_t dma_base_addr = (uint32_t)DMAx;
  942. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->NDTR, DMA_SxNDT));
  943. }
  944. /**
  945. * @brief Set DMA request for DMA Streams on DMAMUX Channel x.
  946. * @note DMAMUX channel 0 to 7 are mapped to DMA1 stream 0 to 7.
  947. * DMAMUX channel 8 to 15 are mapped to DMA2 stream 0 to 7.
  948. * @rmtoll CxCR DMAREQ_ID LL_DMA_SetPeriphRequest
  949. * @param DMAx DMAx Instance
  950. * @param Stream This parameter can be one of the following values:
  951. * @arg @ref LL_DMA_STREAM_0
  952. * @arg @ref LL_DMA_STREAM_1
  953. * @arg @ref LL_DMA_STREAM_2
  954. * @arg @ref LL_DMA_STREAM_3
  955. * @arg @ref LL_DMA_STREAM_4
  956. * @arg @ref LL_DMA_STREAM_5
  957. * @arg @ref LL_DMA_STREAM_6
  958. * @arg @ref LL_DMA_STREAM_7
  959. * @param Request This parameter can be one of the following values:
  960. * @arg @ref LL_DMAMUX1_REQ_MEM2MEM
  961. * @arg @ref LL_DMAMUX1_REQ_GENERATOR0
  962. * @arg @ref LL_DMAMUX1_REQ_GENERATOR1
  963. * @arg @ref LL_DMAMUX1_REQ_GENERATOR2
  964. * @arg @ref LL_DMAMUX1_REQ_GENERATOR3
  965. * @arg @ref LL_DMAMUX1_REQ_GENERATOR4
  966. * @arg @ref LL_DMAMUX1_REQ_GENERATOR5
  967. * @arg @ref LL_DMAMUX1_REQ_GENERATOR6
  968. * @arg @ref LL_DMAMUX1_REQ_GENERATOR7
  969. * @arg @ref LL_DMAMUX1_REQ_ADC1
  970. * @arg @ref LL_DMAMUX1_REQ_ADC2
  971. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH1
  972. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH2
  973. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH3
  974. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH4
  975. * @arg @ref LL_DMAMUX1_REQ_TIM1_UP
  976. * @arg @ref LL_DMAMUX1_REQ_TIM1_TRIG
  977. * @arg @ref LL_DMAMUX1_REQ_TIM1_COM
  978. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH1
  979. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH2
  980. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH3
  981. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH4
  982. * @arg @ref LL_DMAMUX1_REQ_TIM2_UP
  983. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH1
  984. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH2
  985. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH3
  986. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH4
  987. * @arg @ref LL_DMAMUX1_REQ_TIM3_UP
  988. * @arg @ref LL_DMAMUX1_REQ_TIM3_TRIG
  989. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH1
  990. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH2
  991. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH3
  992. * @arg @ref LL_DMAMUX1_REQ_TIM4_UP
  993. * @arg @ref LL_DMAMUX1_REQ_I2C1_RX
  994. * @arg @ref LL_DMAMUX1_REQ_I2C1_TX
  995. * @arg @ref LL_DMAMUX1_REQ_I2C2_RX
  996. * @arg @ref LL_DMAMUX1_REQ_I2C2_TX
  997. * @arg @ref LL_DMAMUX1_REQ_SPI1_RX
  998. * @arg @ref LL_DMAMUX1_REQ_SPI1_TX
  999. * @arg @ref LL_DMAMUX1_REQ_SPI2_RX
  1000. * @arg @ref LL_DMAMUX1_REQ_SPI2_TX
  1001. * @arg @ref LL_DMAMUX1_REQ_USART1_RX
  1002. * @arg @ref LL_DMAMUX1_REQ_USART1_TX
  1003. * @arg @ref LL_DMAMUX1_REQ_USART2_RX
  1004. * @arg @ref LL_DMAMUX1_REQ_USART2_TX
  1005. * @arg @ref LL_DMAMUX1_REQ_USART3_RX
  1006. * @arg @ref LL_DMAMUX1_REQ_USART3_TX
  1007. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH1
  1008. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH2
  1009. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH3
  1010. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH4
  1011. * @arg @ref LL_DMAMUX1_REQ_TIM8_UP
  1012. * @arg @ref LL_DMAMUX1_REQ_TIM8_TRIG
  1013. * @arg @ref LL_DMAMUX1_REQ_TIM8_COM
  1014. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH1
  1015. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH2
  1016. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH3
  1017. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH4
  1018. * @arg @ref LL_DMAMUX1_REQ_TIM5_UP
  1019. * @arg @ref LL_DMAMUX1_REQ_TIM5_TRIG
  1020. * @arg @ref LL_DMAMUX1_REQ_SPI3_RX
  1021. * @arg @ref LL_DMAMUX1_REQ_SPI3_TX
  1022. * @arg @ref LL_DMAMUX1_REQ_UART4_RX
  1023. * @arg @ref LL_DMAMUX1_REQ_UART4_TX
  1024. * @arg @ref LL_DMAMUX1_REQ_UART5_RX
  1025. * @arg @ref LL_DMAMUX1_REQ_UART5_TX
  1026. * @arg @ref LL_DMAMUX1_REQ_DAC1_CH1
  1027. * @arg @ref LL_DMAMUX1_REQ_DAC1_CH2
  1028. * @arg @ref LL_DMAMUX1_REQ_TIM6_UP
  1029. * @arg @ref LL_DMAMUX1_REQ_TIM7_UP
  1030. * @arg @ref LL_DMAMUX1_REQ_USART6_RX
  1031. * @arg @ref LL_DMAMUX1_REQ_USART6_TX
  1032. * @arg @ref LL_DMAMUX1_REQ_I2C3_RX
  1033. * @arg @ref LL_DMAMUX1_REQ_I2C3_TX
  1034. * @arg @ref LL_DMAMUX1_REQ_DCMI_PSSI (*)
  1035. * @arg @ref LL_DMAMUX1_REQ_CRYP_IN
  1036. * @arg @ref LL_DMAMUX1_REQ_CRYP_OUT
  1037. * @arg @ref LL_DMAMUX1_REQ_HASH_IN
  1038. * @arg @ref LL_DMAMUX1_REQ_UART7_RX
  1039. * @arg @ref LL_DMAMUX1_REQ_UART7_TX
  1040. * @arg @ref LL_DMAMUX1_REQ_UART8_RX
  1041. * @arg @ref LL_DMAMUX1_REQ_UART8_TX
  1042. * @arg @ref LL_DMAMUX1_REQ_SPI4_RX
  1043. * @arg @ref LL_DMAMUX1_REQ_SPI4_TX
  1044. * @arg @ref LL_DMAMUX1_REQ_SPI5_RX
  1045. * @arg @ref LL_DMAMUX1_REQ_SPI5_TX
  1046. * @arg @ref LL_DMAMUX1_REQ_SAI1_A
  1047. * @arg @ref LL_DMAMUX1_REQ_SAI1_B
  1048. * @arg @ref LL_DMAMUX1_REQ_SAI2_A (*)
  1049. * @arg @ref LL_DMAMUX1_REQ_SAI2_B (*)
  1050. * @arg @ref LL_DMAMUX1_REQ_SWPMI_RX
  1051. * @arg @ref LL_DMAMUX1_REQ_SWPMI_TX
  1052. * @arg @ref LL_DMAMUX1_REQ_SPDIF_RX_DT
  1053. * @arg @ref LL_DMAMUX1_REQ_SPDIF_RX_CS
  1054. * @arg @ref LL_DMAMUX1_REQ_HRTIM_MASTER (*)
  1055. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_A (*)
  1056. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_B (*)
  1057. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_C (*)
  1058. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_D (*)
  1059. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_E (*)
  1060. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT0
  1061. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT1
  1062. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT2
  1063. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT3
  1064. * @arg @ref LL_DMAMUX1_REQ_TIM15_CH1
  1065. * @arg @ref LL_DMAMUX1_REQ_TIM15_UP
  1066. * @arg @ref LL_DMAMUX1_REQ_TIM15_TRIG
  1067. * @arg @ref LL_DMAMUX1_REQ_TIM15_COM
  1068. * @arg @ref LL_DMAMUX1_REQ_TIM16_CH1
  1069. * @arg @ref LL_DMAMUX1_REQ_TIM16_UP
  1070. * @arg @ref LL_DMAMUX1_REQ_TIM17_CH1
  1071. * @arg @ref LL_DMAMUX1_REQ_TIM17_UP
  1072. * @arg @ref LL_DMAMUX1_REQ_SAI3_A (*)
  1073. * @arg @ref LL_DMAMUX1_REQ_SAI3_B (*)
  1074. * @arg @ref LL_DMAMUX1_REQ_ADC3 (*)
  1075. * @arg @ref LL_DMAMUX1_REQ_UART9_RX (*)
  1076. * @arg @ref LL_DMAMUX1_REQ_UART9_TX (*)
  1077. * @arg @ref LL_DMAMUX1_REQ_USART10_RX (*)
  1078. * @arg @ref LL_DMAMUX1_REQ_USART10_TX (*)
  1079. * @arg @ref LL_DMAMUX1_REQ_FMAC_READ (*)
  1080. * @arg @ref LL_DMAMUX1_REQ_FMAC_WRITE (*)
  1081. * @arg @ref LL_DMAMUX1_REQ_CORDIC_READ (*)
  1082. * @arg @ref LL_DMAMUX1_REQ_CORDIC_WRITE(*)
  1083. * @arg @ref LL_DMAMUX1_REQ_I2C5_RX (*)
  1084. * @arg @ref LL_DMAMUX1_REQ_I2C5_TX (*)
  1085. * @arg @ref LL_DMAMUX1_REQ_TIM23_CH1 (*)
  1086. * @arg @ref LL_DMAMUX1_REQ_TIM23_CH2 (*)
  1087. * @arg @ref LL_DMAMUX1_REQ_TIM23_CH3 (*)
  1088. * @arg @ref LL_DMAMUX1_REQ_TIM23_CH4 (*)
  1089. * @arg @ref LL_DMAMUX1_REQ_TIM23_UP (*)
  1090. * @arg @ref LL_DMAMUX1_REQ_TIM23_TRIG (*)
  1091. * @arg @ref LL_DMAMUX1_REQ_TIM24_CH1 (*)
  1092. * @arg @ref LL_DMAMUX1_REQ_TIM24_CH2 (*)
  1093. * @arg @ref LL_DMAMUX1_REQ_TIM24_CH3 (*)
  1094. * @arg @ref LL_DMAMUX1_REQ_TIM24_CH4 (*)
  1095. * @arg @ref LL_DMAMUX1_REQ_TIM24_UP (*)
  1096. * @arg @ref LL_DMAMUX1_REQ_TIM24_TRIG (*)
  1097. *
  1098. * @note (*) Availability depends on devices.
  1099. * @retval None
  1100. */
  1101. __STATIC_INLINE void LL_DMA_SetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Request)
  1102. {
  1103. MODIFY_REG(((DMAMUX_Channel_TypeDef *)(uint32_t)((uint32_t)DMAMUX1_Channel0 + (DMAMUX_CCR_SIZE * (Stream)) + (uint32_t)(DMAMUX_CCR_SIZE * LL_DMA_INSTANCE_TO_DMAMUX_CHANNEL(DMAx))))->CCR, DMAMUX_CxCR_DMAREQ_ID, Request);
  1104. }
  1105. /**
  1106. * @brief Get DMA request for DMA Channels on DMAMUX Channel x.
  1107. * @note DMAMUX channel 0 to 7 are mapped to DMA1 stream 0 to 7.
  1108. * DMAMUX channel 8 to 15 are mapped to DMA2 stream 0 to 7.
  1109. * @rmtoll CxCR DMAREQ_ID LL_DMA_GetPeriphRequest
  1110. * @param DMAx DMAx Instance
  1111. * @param Stream This parameter can be one of the following values:
  1112. * @arg @ref LL_DMA_STREAM_0
  1113. * @arg @ref LL_DMA_STREAM_1
  1114. * @arg @ref LL_DMA_STREAM_2
  1115. * @arg @ref LL_DMA_STREAM_3
  1116. * @arg @ref LL_DMA_STREAM_4
  1117. * @arg @ref LL_DMA_STREAM_5
  1118. * @arg @ref LL_DMA_STREAM_6
  1119. * @arg @ref LL_DMA_STREAM_7
  1120. * @retval Returned value can be one of the following values:
  1121. * @arg @ref LL_DMAMUX1_REQ_MEM2MEM
  1122. * @arg @ref LL_DMAMUX1_REQ_GENERATOR0
  1123. * @arg @ref LL_DMAMUX1_REQ_GENERATOR1
  1124. * @arg @ref LL_DMAMUX1_REQ_GENERATOR2
  1125. * @arg @ref LL_DMAMUX1_REQ_GENERATOR3
  1126. * @arg @ref LL_DMAMUX1_REQ_GENERATOR4
  1127. * @arg @ref LL_DMAMUX1_REQ_GENERATOR5
  1128. * @arg @ref LL_DMAMUX1_REQ_GENERATOR6
  1129. * @arg @ref LL_DMAMUX1_REQ_GENERATOR7
  1130. * @arg @ref LL_DMAMUX1_REQ_ADC1
  1131. * @arg @ref LL_DMAMUX1_REQ_ADC2
  1132. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH1
  1133. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH2
  1134. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH3
  1135. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH4
  1136. * @arg @ref LL_DMAMUX1_REQ_TIM1_UP
  1137. * @arg @ref LL_DMAMUX1_REQ_TIM1_TRIG
  1138. * @arg @ref LL_DMAMUX1_REQ_TIM1_COM
  1139. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH1
  1140. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH2
  1141. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH3
  1142. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH4
  1143. * @arg @ref LL_DMAMUX1_REQ_TIM2_UP
  1144. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH1
  1145. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH2
  1146. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH3
  1147. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH4
  1148. * @arg @ref LL_DMAMUX1_REQ_TIM3_UP
  1149. * @arg @ref LL_DMAMUX1_REQ_TIM3_TRIG
  1150. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH1
  1151. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH2
  1152. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH3
  1153. * @arg @ref LL_DMAMUX1_REQ_TIM4_UP
  1154. * @arg @ref LL_DMAMUX1_REQ_I2C1_RX
  1155. * @arg @ref LL_DMAMUX1_REQ_I2C1_TX
  1156. * @arg @ref LL_DMAMUX1_REQ_I2C2_RX
  1157. * @arg @ref LL_DMAMUX1_REQ_I2C2_TX
  1158. * @arg @ref LL_DMAMUX1_REQ_SPI1_RX
  1159. * @arg @ref LL_DMAMUX1_REQ_SPI1_TX
  1160. * @arg @ref LL_DMAMUX1_REQ_SPI2_RX
  1161. * @arg @ref LL_DMAMUX1_REQ_SPI2_TX
  1162. * @arg @ref LL_DMAMUX1_REQ_USART1_RX
  1163. * @arg @ref LL_DMAMUX1_REQ_USART1_TX
  1164. * @arg @ref LL_DMAMUX1_REQ_USART2_RX
  1165. * @arg @ref LL_DMAMUX1_REQ_USART2_TX
  1166. * @arg @ref LL_DMAMUX1_REQ_USART3_RX
  1167. * @arg @ref LL_DMAMUX1_REQ_USART3_TX
  1168. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH1
  1169. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH2
  1170. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH3
  1171. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH4
  1172. * @arg @ref LL_DMAMUX1_REQ_TIM8_UP
  1173. * @arg @ref LL_DMAMUX1_REQ_TIM8_TRIG
  1174. * @arg @ref LL_DMAMUX1_REQ_TIM8_COM
  1175. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH1
  1176. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH2
  1177. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH3
  1178. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH4
  1179. * @arg @ref LL_DMAMUX1_REQ_TIM5_UP
  1180. * @arg @ref LL_DMAMUX1_REQ_TIM5_TRIG
  1181. * @arg @ref LL_DMAMUX1_REQ_SPI3_RX
  1182. * @arg @ref LL_DMAMUX1_REQ_SPI3_TX
  1183. * @arg @ref LL_DMAMUX1_REQ_UART4_RX
  1184. * @arg @ref LL_DMAMUX1_REQ_UART4_TX
  1185. * @arg @ref LL_DMAMUX1_REQ_UART5_RX
  1186. * @arg @ref LL_DMAMUX1_REQ_UART5_TX
  1187. * @arg @ref LL_DMAMUX1_REQ_DAC1_CH1
  1188. * @arg @ref LL_DMAMUX1_REQ_DAC1_CH2
  1189. * @arg @ref LL_DMAMUX1_REQ_TIM6_UP
  1190. * @arg @ref LL_DMAMUX1_REQ_TIM7_UP
  1191. * @arg @ref LL_DMAMUX1_REQ_USART6_RX
  1192. * @arg @ref LL_DMAMUX1_REQ_USART6_TX
  1193. * @arg @ref LL_DMAMUX1_REQ_I2C3_RX
  1194. * @arg @ref LL_DMAMUX1_REQ_I2C3_TX
  1195. * @arg @ref LL_DMAMUX1_REQ_DCMI_PSSI (*)
  1196. * @arg @ref LL_DMAMUX1_REQ_CRYP_IN
  1197. * @arg @ref LL_DMAMUX1_REQ_CRYP_OUT
  1198. * @arg @ref LL_DMAMUX1_REQ_HASH_IN
  1199. * @arg @ref LL_DMAMUX1_REQ_UART7_RX
  1200. * @arg @ref LL_DMAMUX1_REQ_UART7_TX
  1201. * @arg @ref LL_DMAMUX1_REQ_UART8_RX
  1202. * @arg @ref LL_DMAMUX1_REQ_UART8_TX
  1203. * @arg @ref LL_DMAMUX1_REQ_SPI4_RX
  1204. * @arg @ref LL_DMAMUX1_REQ_SPI4_TX
  1205. * @arg @ref LL_DMAMUX1_REQ_SPI5_RX
  1206. * @arg @ref LL_DMAMUX1_REQ_SPI5_TX
  1207. * @arg @ref LL_DMAMUX1_REQ_SAI1_A
  1208. * @arg @ref LL_DMAMUX1_REQ_SAI1_B
  1209. * @arg @ref LL_DMAMUX1_REQ_SAI2_A (*)
  1210. * @arg @ref LL_DMAMUX1_REQ_SAI2_B (*)
  1211. * @arg @ref LL_DMAMUX1_REQ_SWPMI_RX
  1212. * @arg @ref LL_DMAMUX1_REQ_SWPMI_TX
  1213. * @arg @ref LL_DMAMUX1_REQ_SPDIF_RX_DT
  1214. * @arg @ref LL_DMAMUX1_REQ_SPDIF_RX_CS
  1215. * @arg @ref LL_DMAMUX1_REQ_HRTIM_MASTER (*)
  1216. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_A (*)
  1217. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_B (*)
  1218. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_C (*)
  1219. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_D (*)
  1220. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_E (*)
  1221. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT0
  1222. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT1
  1223. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT2
  1224. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT3
  1225. * @arg @ref LL_DMAMUX1_REQ_TIM15_CH1
  1226. * @arg @ref LL_DMAMUX1_REQ_TIM15_UP
  1227. * @arg @ref LL_DMAMUX1_REQ_TIM15_TRIG
  1228. * @arg @ref LL_DMAMUX1_REQ_TIM15_COM
  1229. * @arg @ref LL_DMAMUX1_REQ_TIM16_CH1
  1230. * @arg @ref LL_DMAMUX1_REQ_TIM16_UP
  1231. * @arg @ref LL_DMAMUX1_REQ_TIM17_CH1
  1232. * @arg @ref LL_DMAMUX1_REQ_TIM17_UP
  1233. * @arg @ref LL_DMAMUX1_REQ_SAI3_A (*)
  1234. * @arg @ref LL_DMAMUX1_REQ_SAI3_B (*)
  1235. * @arg @ref LL_DMAMUX1_REQ_ADC3 (*)
  1236. * @arg @ref LL_DMAMUX1_REQ_UART9_RX (*)
  1237. * @arg @ref LL_DMAMUX1_REQ_UART9_TX (*)
  1238. * @arg @ref LL_DMAMUX1_REQ_USART10_RX (*)
  1239. * @arg @ref LL_DMAMUX1_REQ_USART10_TX (*)
  1240. * @arg @ref LL_DMAMUX1_REQ_FMAC_READ (*)
  1241. * @arg @ref LL_DMAMUX1_REQ_FMAC_WRITE (*)
  1242. * @arg @ref LL_DMAMUX1_REQ_CORDIC_READ (*)
  1243. * @arg @ref LL_DMAMUX1_REQ_CORDIC_WRITE(*)
  1244. * @arg @ref LL_DMAMUX1_REQ_I2C5_RX (*)
  1245. * @arg @ref LL_DMAMUX1_REQ_I2C5_TX (*)
  1246. * @arg @ref LL_DMAMUX1_REQ_TIM23_CH1 (*)
  1247. * @arg @ref LL_DMAMUX1_REQ_TIM23_CH2 (*)
  1248. * @arg @ref LL_DMAMUX1_REQ_TIM23_CH3 (*)
  1249. * @arg @ref LL_DMAMUX1_REQ_TIM23_CH4 (*)
  1250. * @arg @ref LL_DMAMUX1_REQ_TIM23_UP (*)
  1251. * @arg @ref LL_DMAMUX1_REQ_TIM23_TRIG (*)
  1252. * @arg @ref LL_DMAMUX1_REQ_TIM24_CH1 (*)
  1253. * @arg @ref LL_DMAMUX1_REQ_TIM24_CH2 (*)
  1254. * @arg @ref LL_DMAMUX1_REQ_TIM24_CH3 (*)
  1255. * @arg @ref LL_DMAMUX1_REQ_TIM24_CH4 (*)
  1256. * @arg @ref LL_DMAMUX1_REQ_TIM24_UP (*)
  1257. * @arg @ref LL_DMAMUX1_REQ_TIM24_TRIG (*)
  1258. *
  1259. * @note (*) Availability depends on devices.
  1260. */
  1261. __STATIC_INLINE uint32_t LL_DMA_GetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Stream)
  1262. {
  1263. return (READ_BIT(((DMAMUX_Channel_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_Channel0 + (DMAMUX_CCR_SIZE * (Stream)) + (uint32_t)(DMAMUX_CCR_SIZE * LL_DMA_INSTANCE_TO_DMAMUX_CHANNEL(DMAx)))))->CCR, DMAMUX_CxCR_DMAREQ_ID));
  1264. }
  1265. /**
  1266. * @brief Set Memory burst transfer configuration.
  1267. * @rmtoll CR MBURST LL_DMA_SetMemoryBurstxfer
  1268. * @param DMAx DMAx Instance
  1269. * @param Stream This parameter can be one of the following values:
  1270. * @arg @ref LL_DMA_STREAM_0
  1271. * @arg @ref LL_DMA_STREAM_1
  1272. * @arg @ref LL_DMA_STREAM_2
  1273. * @arg @ref LL_DMA_STREAM_3
  1274. * @arg @ref LL_DMA_STREAM_4
  1275. * @arg @ref LL_DMA_STREAM_5
  1276. * @arg @ref LL_DMA_STREAM_6
  1277. * @arg @ref LL_DMA_STREAM_7
  1278. * @param Mburst This parameter can be one of the following values:
  1279. * @arg @ref LL_DMA_MBURST_SINGLE
  1280. * @arg @ref LL_DMA_MBURST_INC4
  1281. * @arg @ref LL_DMA_MBURST_INC8
  1282. * @arg @ref LL_DMA_MBURST_INC16
  1283. * @retval None
  1284. */
  1285. __STATIC_INLINE void LL_DMA_SetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mburst)
  1286. {
  1287. uint32_t dma_base_addr = (uint32_t)DMAx;
  1288. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MBURST, Mburst);
  1289. }
  1290. /**
  1291. * @brief Get Memory burst transfer configuration.
  1292. * @rmtoll CR MBURST LL_DMA_GetMemoryBurstxfer
  1293. * @param DMAx DMAx Instance
  1294. * @param Stream This parameter can be one of the following values:
  1295. * @arg @ref LL_DMA_STREAM_0
  1296. * @arg @ref LL_DMA_STREAM_1
  1297. * @arg @ref LL_DMA_STREAM_2
  1298. * @arg @ref LL_DMA_STREAM_3
  1299. * @arg @ref LL_DMA_STREAM_4
  1300. * @arg @ref LL_DMA_STREAM_5
  1301. * @arg @ref LL_DMA_STREAM_6
  1302. * @arg @ref LL_DMA_STREAM_7
  1303. * @retval Returned value can be one of the following values:
  1304. * @arg @ref LL_DMA_MBURST_SINGLE
  1305. * @arg @ref LL_DMA_MBURST_INC4
  1306. * @arg @ref LL_DMA_MBURST_INC8
  1307. * @arg @ref LL_DMA_MBURST_INC16
  1308. */
  1309. __STATIC_INLINE uint32_t LL_DMA_GetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream)
  1310. {
  1311. uint32_t dma_base_addr = (uint32_t)DMAx;
  1312. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MBURST));
  1313. }
  1314. /**
  1315. * @brief Set Peripheral burst transfer configuration.
  1316. * @rmtoll CR PBURST LL_DMA_SetPeriphBurstxfer
  1317. * @param DMAx DMAx Instance
  1318. * @param Stream This parameter can be one of the following values:
  1319. * @arg @ref LL_DMA_STREAM_0
  1320. * @arg @ref LL_DMA_STREAM_1
  1321. * @arg @ref LL_DMA_STREAM_2
  1322. * @arg @ref LL_DMA_STREAM_3
  1323. * @arg @ref LL_DMA_STREAM_4
  1324. * @arg @ref LL_DMA_STREAM_5
  1325. * @arg @ref LL_DMA_STREAM_6
  1326. * @arg @ref LL_DMA_STREAM_7
  1327. * @param Pburst This parameter can be one of the following values:
  1328. * @arg @ref LL_DMA_PBURST_SINGLE
  1329. * @arg @ref LL_DMA_PBURST_INC4
  1330. * @arg @ref LL_DMA_PBURST_INC8
  1331. * @arg @ref LL_DMA_PBURST_INC16
  1332. * @retval None
  1333. */
  1334. __STATIC_INLINE void LL_DMA_SetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Pburst)
  1335. {
  1336. uint32_t dma_base_addr = (uint32_t)DMAx;
  1337. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PBURST, Pburst);
  1338. }
  1339. /**
  1340. * @brief Get Peripheral burst transfer configuration.
  1341. * @rmtoll CR PBURST LL_DMA_GetPeriphBurstxfer
  1342. * @param DMAx DMAx Instance
  1343. * @param Stream This parameter can be one of the following values:
  1344. * @arg @ref LL_DMA_STREAM_0
  1345. * @arg @ref LL_DMA_STREAM_1
  1346. * @arg @ref LL_DMA_STREAM_2
  1347. * @arg @ref LL_DMA_STREAM_3
  1348. * @arg @ref LL_DMA_STREAM_4
  1349. * @arg @ref LL_DMA_STREAM_5
  1350. * @arg @ref LL_DMA_STREAM_6
  1351. * @arg @ref LL_DMA_STREAM_7
  1352. * @retval Returned value can be one of the following values:
  1353. * @arg @ref LL_DMA_PBURST_SINGLE
  1354. * @arg @ref LL_DMA_PBURST_INC4
  1355. * @arg @ref LL_DMA_PBURST_INC8
  1356. * @arg @ref LL_DMA_PBURST_INC16
  1357. */
  1358. __STATIC_INLINE uint32_t LL_DMA_GetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream)
  1359. {
  1360. uint32_t dma_base_addr = (uint32_t)DMAx;
  1361. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PBURST));
  1362. }
  1363. /**
  1364. * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0.
  1365. * @rmtoll CR CT LL_DMA_SetCurrentTargetMem
  1366. * @param DMAx DMAx Instance
  1367. * @param Stream This parameter can be one of the following values:
  1368. * @arg @ref LL_DMA_STREAM_0
  1369. * @arg @ref LL_DMA_STREAM_1
  1370. * @arg @ref LL_DMA_STREAM_2
  1371. * @arg @ref LL_DMA_STREAM_3
  1372. * @arg @ref LL_DMA_STREAM_4
  1373. * @arg @ref LL_DMA_STREAM_5
  1374. * @arg @ref LL_DMA_STREAM_6
  1375. * @arg @ref LL_DMA_STREAM_7
  1376. * @param CurrentMemory This parameter can be one of the following values:
  1377. * @arg @ref LL_DMA_CURRENTTARGETMEM0
  1378. * @arg @ref LL_DMA_CURRENTTARGETMEM1
  1379. * @retval None
  1380. */
  1381. __STATIC_INLINE void LL_DMA_SetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t CurrentMemory)
  1382. {
  1383. uint32_t dma_base_addr = (uint32_t)DMAx;
  1384. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_CT, CurrentMemory);
  1385. }
  1386. /**
  1387. * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0.
  1388. * @rmtoll CR CT LL_DMA_GetCurrentTargetMem
  1389. * @param DMAx DMAx Instance
  1390. * @param Stream This parameter can be one of the following values:
  1391. * @arg @ref LL_DMA_STREAM_0
  1392. * @arg @ref LL_DMA_STREAM_1
  1393. * @arg @ref LL_DMA_STREAM_2
  1394. * @arg @ref LL_DMA_STREAM_3
  1395. * @arg @ref LL_DMA_STREAM_4
  1396. * @arg @ref LL_DMA_STREAM_5
  1397. * @arg @ref LL_DMA_STREAM_6
  1398. * @arg @ref LL_DMA_STREAM_7
  1399. * @retval Returned value can be one of the following values:
  1400. * @arg @ref LL_DMA_CURRENTTARGETMEM0
  1401. * @arg @ref LL_DMA_CURRENTTARGETMEM1
  1402. */
  1403. __STATIC_INLINE uint32_t LL_DMA_GetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream)
  1404. {
  1405. uint32_t dma_base_addr = (uint32_t)DMAx;
  1406. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_CT));
  1407. }
  1408. /**
  1409. * @brief Enable the double buffer mode.
  1410. * @rmtoll CR DBM LL_DMA_EnableDoubleBufferMode
  1411. * @param DMAx DMAx Instance
  1412. * @param Stream This parameter can be one of the following values:
  1413. * @arg @ref LL_DMA_STREAM_0
  1414. * @arg @ref LL_DMA_STREAM_1
  1415. * @arg @ref LL_DMA_STREAM_2
  1416. * @arg @ref LL_DMA_STREAM_3
  1417. * @arg @ref LL_DMA_STREAM_4
  1418. * @arg @ref LL_DMA_STREAM_5
  1419. * @arg @ref LL_DMA_STREAM_6
  1420. * @arg @ref LL_DMA_STREAM_7
  1421. * @retval None
  1422. */
  1423. __STATIC_INLINE void LL_DMA_EnableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream)
  1424. {
  1425. uint32_t dma_base_addr = (uint32_t)DMAx;
  1426. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DBM);
  1427. }
  1428. /**
  1429. * @brief Disable the double buffer mode.
  1430. * @rmtoll CR DBM LL_DMA_DisableDoubleBufferMode
  1431. * @param DMAx DMAx Instance
  1432. * @param Stream This parameter can be one of the following values:
  1433. * @arg @ref LL_DMA_STREAM_0
  1434. * @arg @ref LL_DMA_STREAM_1
  1435. * @arg @ref LL_DMA_STREAM_2
  1436. * @arg @ref LL_DMA_STREAM_3
  1437. * @arg @ref LL_DMA_STREAM_4
  1438. * @arg @ref LL_DMA_STREAM_5
  1439. * @arg @ref LL_DMA_STREAM_6
  1440. * @arg @ref LL_DMA_STREAM_7
  1441. * @retval None
  1442. */
  1443. __STATIC_INLINE void LL_DMA_DisableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream)
  1444. {
  1445. uint32_t dma_base_addr = (uint32_t)DMAx;
  1446. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DBM);
  1447. }
  1448. /**
  1449. * @brief Get FIFO status.
  1450. * @rmtoll FCR FS LL_DMA_GetFIFOStatus
  1451. * @param DMAx DMAx Instance
  1452. * @param Stream This parameter can be one of the following values:
  1453. * @arg @ref LL_DMA_STREAM_0
  1454. * @arg @ref LL_DMA_STREAM_1
  1455. * @arg @ref LL_DMA_STREAM_2
  1456. * @arg @ref LL_DMA_STREAM_3
  1457. * @arg @ref LL_DMA_STREAM_4
  1458. * @arg @ref LL_DMA_STREAM_5
  1459. * @arg @ref LL_DMA_STREAM_6
  1460. * @arg @ref LL_DMA_STREAM_7
  1461. * @retval Returned value can be one of the following values:
  1462. * @arg @ref LL_DMA_FIFOSTATUS_0_25
  1463. * @arg @ref LL_DMA_FIFOSTATUS_25_50
  1464. * @arg @ref LL_DMA_FIFOSTATUS_50_75
  1465. * @arg @ref LL_DMA_FIFOSTATUS_75_100
  1466. * @arg @ref LL_DMA_FIFOSTATUS_EMPTY
  1467. * @arg @ref LL_DMA_FIFOSTATUS_FULL
  1468. */
  1469. __STATIC_INLINE uint32_t LL_DMA_GetFIFOStatus(DMA_TypeDef *DMAx, uint32_t Stream)
  1470. {
  1471. uint32_t dma_base_addr = (uint32_t)DMAx;
  1472. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FS));
  1473. }
  1474. /**
  1475. * @brief Disable Fifo mode.
  1476. * @rmtoll FCR DMDIS LL_DMA_DisableFifoMode
  1477. * @param DMAx DMAx Instance
  1478. * @param Stream This parameter can be one of the following values:
  1479. * @arg @ref LL_DMA_STREAM_0
  1480. * @arg @ref LL_DMA_STREAM_1
  1481. * @arg @ref LL_DMA_STREAM_2
  1482. * @arg @ref LL_DMA_STREAM_3
  1483. * @arg @ref LL_DMA_STREAM_4
  1484. * @arg @ref LL_DMA_STREAM_5
  1485. * @arg @ref LL_DMA_STREAM_6
  1486. * @arg @ref LL_DMA_STREAM_7
  1487. * @retval None
  1488. */
  1489. __STATIC_INLINE void LL_DMA_DisableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream)
  1490. {
  1491. uint32_t dma_base_addr = (uint32_t)DMAx;
  1492. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_DMDIS);
  1493. }
  1494. /**
  1495. * @brief Enable Fifo mode.
  1496. * @rmtoll FCR DMDIS LL_DMA_EnableFifoMode
  1497. * @param DMAx DMAx Instance
  1498. * @param Stream This parameter can be one of the following values:
  1499. * @arg @ref LL_DMA_STREAM_0
  1500. * @arg @ref LL_DMA_STREAM_1
  1501. * @arg @ref LL_DMA_STREAM_2
  1502. * @arg @ref LL_DMA_STREAM_3
  1503. * @arg @ref LL_DMA_STREAM_4
  1504. * @arg @ref LL_DMA_STREAM_5
  1505. * @arg @ref LL_DMA_STREAM_6
  1506. * @arg @ref LL_DMA_STREAM_7
  1507. * @retval None
  1508. */
  1509. __STATIC_INLINE void LL_DMA_EnableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream)
  1510. {
  1511. uint32_t dma_base_addr = (uint32_t)DMAx;
  1512. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_DMDIS);
  1513. }
  1514. /**
  1515. * @brief Select FIFO threshold.
  1516. * @rmtoll FCR FTH LL_DMA_SetFIFOThreshold
  1517. * @param DMAx DMAx Instance
  1518. * @param Stream This parameter can be one of the following values:
  1519. * @arg @ref LL_DMA_STREAM_0
  1520. * @arg @ref LL_DMA_STREAM_1
  1521. * @arg @ref LL_DMA_STREAM_2
  1522. * @arg @ref LL_DMA_STREAM_3
  1523. * @arg @ref LL_DMA_STREAM_4
  1524. * @arg @ref LL_DMA_STREAM_5
  1525. * @arg @ref LL_DMA_STREAM_6
  1526. * @arg @ref LL_DMA_STREAM_7
  1527. * @param Threshold This parameter can be one of the following values:
  1528. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4
  1529. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2
  1530. * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4
  1531. * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL
  1532. * @retval None
  1533. */
  1534. __STATIC_INLINE void LL_DMA_SetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Threshold)
  1535. {
  1536. uint32_t dma_base_addr = (uint32_t)DMAx;
  1537. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FTH, Threshold);
  1538. }
  1539. /**
  1540. * @brief Get FIFO threshold.
  1541. * @rmtoll FCR FTH LL_DMA_GetFIFOThreshold
  1542. * @param DMAx DMAx Instance
  1543. * @param Stream This parameter can be one of the following values:
  1544. * @arg @ref LL_DMA_STREAM_0
  1545. * @arg @ref LL_DMA_STREAM_1
  1546. * @arg @ref LL_DMA_STREAM_2
  1547. * @arg @ref LL_DMA_STREAM_3
  1548. * @arg @ref LL_DMA_STREAM_4
  1549. * @arg @ref LL_DMA_STREAM_5
  1550. * @arg @ref LL_DMA_STREAM_6
  1551. * @arg @ref LL_DMA_STREAM_7
  1552. * @retval Returned value can be one of the following values:
  1553. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4
  1554. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2
  1555. * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4
  1556. * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL
  1557. */
  1558. __STATIC_INLINE uint32_t LL_DMA_GetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream)
  1559. {
  1560. uint32_t dma_base_addr = (uint32_t)DMAx;
  1561. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FTH));
  1562. }
  1563. /**
  1564. * @brief Configure the FIFO .
  1565. * @rmtoll FCR FTH LL_DMA_ConfigFifo\n
  1566. * FCR DMDIS LL_DMA_ConfigFifo
  1567. * @param DMAx DMAx Instance
  1568. * @param Stream This parameter can be one of the following values:
  1569. * @arg @ref LL_DMA_STREAM_0
  1570. * @arg @ref LL_DMA_STREAM_1
  1571. * @arg @ref LL_DMA_STREAM_2
  1572. * @arg @ref LL_DMA_STREAM_3
  1573. * @arg @ref LL_DMA_STREAM_4
  1574. * @arg @ref LL_DMA_STREAM_5
  1575. * @arg @ref LL_DMA_STREAM_6
  1576. * @arg @ref LL_DMA_STREAM_7
  1577. * @param FifoMode This parameter can be one of the following values:
  1578. * @arg @ref LL_DMA_FIFOMODE_ENABLE
  1579. * @arg @ref LL_DMA_FIFOMODE_DISABLE
  1580. * @param FifoThreshold This parameter can be one of the following values:
  1581. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4
  1582. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2
  1583. * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4
  1584. * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL
  1585. * @retval None
  1586. */
  1587. __STATIC_INLINE void LL_DMA_ConfigFifo(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t FifoMode, uint32_t FifoThreshold)
  1588. {
  1589. uint32_t dma_base_addr = (uint32_t)DMAx;
  1590. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FTH | DMA_SxFCR_DMDIS, FifoMode | FifoThreshold);
  1591. }
  1592. /**
  1593. * @brief Configure the Source and Destination addresses.
  1594. * @note This API must not be called when the DMA stream is enabled.
  1595. * @rmtoll M0AR M0A LL_DMA_ConfigAddresses\n
  1596. * PAR PA LL_DMA_ConfigAddresses
  1597. * @param DMAx DMAx Instance
  1598. * @param Stream This parameter can be one of the following values:
  1599. * @arg @ref LL_DMA_STREAM_0
  1600. * @arg @ref LL_DMA_STREAM_1
  1601. * @arg @ref LL_DMA_STREAM_2
  1602. * @arg @ref LL_DMA_STREAM_3
  1603. * @arg @ref LL_DMA_STREAM_4
  1604. * @arg @ref LL_DMA_STREAM_5
  1605. * @arg @ref LL_DMA_STREAM_6
  1606. * @arg @ref LL_DMA_STREAM_7
  1607. * @param SrcAddress Between 0 to 0xFFFFFFFF
  1608. * @param DstAddress Between 0 to 0xFFFFFFFF
  1609. * @param Direction This parameter can be one of the following values:
  1610. * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
  1611. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
  1612. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
  1613. * @retval None
  1614. */
  1615. __STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t SrcAddress, uint32_t DstAddress, uint32_t Direction)
  1616. {
  1617. uint32_t dma_base_addr = (uint32_t)DMAx;
  1618. /* Direction Memory to Periph */
  1619. if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH)
  1620. {
  1621. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, SrcAddress);
  1622. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, DstAddress);
  1623. }
  1624. /* Direction Periph to Memory and Memory to Memory */
  1625. else
  1626. {
  1627. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, SrcAddress);
  1628. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, DstAddress);
  1629. }
  1630. }
  1631. /**
  1632. * @brief Set the Memory address.
  1633. * @rmtoll M0AR M0A LL_DMA_SetMemoryAddress
  1634. * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
  1635. * @note This API must not be called when the DMA stream is enabled.
  1636. * @param DMAx DMAx Instance
  1637. * @param Stream This parameter can be one of the following values:
  1638. * @arg @ref LL_DMA_STREAM_0
  1639. * @arg @ref LL_DMA_STREAM_1
  1640. * @arg @ref LL_DMA_STREAM_2
  1641. * @arg @ref LL_DMA_STREAM_3
  1642. * @arg @ref LL_DMA_STREAM_4
  1643. * @arg @ref LL_DMA_STREAM_5
  1644. * @arg @ref LL_DMA_STREAM_6
  1645. * @arg @ref LL_DMA_STREAM_7
  1646. * @param MemoryAddress Between 0 to 0xFFFFFFFF
  1647. * @retval None
  1648. */
  1649. __STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress)
  1650. {
  1651. uint32_t dma_base_addr = (uint32_t)DMAx;
  1652. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, MemoryAddress);
  1653. }
  1654. /**
  1655. * @brief Set the Peripheral address.
  1656. * @rmtoll PAR PA LL_DMA_SetPeriphAddress
  1657. * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
  1658. * @note This API must not be called when the DMA stream is enabled.
  1659. * @param DMAx DMAx Instance
  1660. * @param Stream This parameter can be one of the following values:
  1661. * @arg @ref LL_DMA_STREAM_0
  1662. * @arg @ref LL_DMA_STREAM_1
  1663. * @arg @ref LL_DMA_STREAM_2
  1664. * @arg @ref LL_DMA_STREAM_3
  1665. * @arg @ref LL_DMA_STREAM_4
  1666. * @arg @ref LL_DMA_STREAM_5
  1667. * @arg @ref LL_DMA_STREAM_6
  1668. * @arg @ref LL_DMA_STREAM_7
  1669. * @param PeriphAddress Between 0 to 0xFFFFFFFF
  1670. * @retval None
  1671. */
  1672. __STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t PeriphAddress)
  1673. {
  1674. uint32_t dma_base_addr = (uint32_t)DMAx;
  1675. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, PeriphAddress);
  1676. }
  1677. /**
  1678. * @brief Get the Memory address.
  1679. * @rmtoll M0AR M0A LL_DMA_GetMemoryAddress
  1680. * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
  1681. * @param DMAx DMAx Instance
  1682. * @param Stream This parameter can be one of the following values:
  1683. * @arg @ref LL_DMA_STREAM_0
  1684. * @arg @ref LL_DMA_STREAM_1
  1685. * @arg @ref LL_DMA_STREAM_2
  1686. * @arg @ref LL_DMA_STREAM_3
  1687. * @arg @ref LL_DMA_STREAM_4
  1688. * @arg @ref LL_DMA_STREAM_5
  1689. * @arg @ref LL_DMA_STREAM_6
  1690. * @arg @ref LL_DMA_STREAM_7
  1691. * @retval Between 0 to 0xFFFFFFFF
  1692. */
  1693. __STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Stream)
  1694. {
  1695. uint32_t dma_base_addr = (uint32_t)DMAx;
  1696. return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR));
  1697. }
  1698. /**
  1699. * @brief Get the Peripheral address.
  1700. * @rmtoll PAR PA LL_DMA_GetPeriphAddress
  1701. * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
  1702. * @param DMAx DMAx Instance
  1703. * @param Stream This parameter can be one of the following values:
  1704. * @arg @ref LL_DMA_STREAM_0
  1705. * @arg @ref LL_DMA_STREAM_1
  1706. * @arg @ref LL_DMA_STREAM_2
  1707. * @arg @ref LL_DMA_STREAM_3
  1708. * @arg @ref LL_DMA_STREAM_4
  1709. * @arg @ref LL_DMA_STREAM_5
  1710. * @arg @ref LL_DMA_STREAM_6
  1711. * @arg @ref LL_DMA_STREAM_7
  1712. * @retval Between 0 to 0xFFFFFFFF
  1713. */
  1714. __STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Stream)
  1715. {
  1716. uint32_t dma_base_addr = (uint32_t)DMAx;
  1717. return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR));
  1718. }
  1719. /**
  1720. * @brief Set the Memory to Memory Source address.
  1721. * @rmtoll PAR PA LL_DMA_SetM2MSrcAddress
  1722. * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
  1723. * @note This API must not be called when the DMA stream is enabled.
  1724. * @param DMAx DMAx Instance
  1725. * @param Stream This parameter can be one of the following values:
  1726. * @arg @ref LL_DMA_STREAM_0
  1727. * @arg @ref LL_DMA_STREAM_1
  1728. * @arg @ref LL_DMA_STREAM_2
  1729. * @arg @ref LL_DMA_STREAM_3
  1730. * @arg @ref LL_DMA_STREAM_4
  1731. * @arg @ref LL_DMA_STREAM_5
  1732. * @arg @ref LL_DMA_STREAM_6
  1733. * @arg @ref LL_DMA_STREAM_7
  1734. * @param MemoryAddress Between 0 to 0xFFFFFFFF
  1735. * @retval None
  1736. */
  1737. __STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress)
  1738. {
  1739. uint32_t dma_base_addr = (uint32_t)DMAx;
  1740. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, MemoryAddress);
  1741. }
  1742. /**
  1743. * @brief Set the Memory to Memory Destination address.
  1744. * @rmtoll M0AR M0A LL_DMA_SetM2MDstAddress
  1745. * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
  1746. * @note This API must not be called when the DMA stream is enabled.
  1747. * @param DMAx DMAx Instance
  1748. * @param Stream This parameter can be one of the following values:
  1749. * @arg @ref LL_DMA_STREAM_0
  1750. * @arg @ref LL_DMA_STREAM_1
  1751. * @arg @ref LL_DMA_STREAM_2
  1752. * @arg @ref LL_DMA_STREAM_3
  1753. * @arg @ref LL_DMA_STREAM_4
  1754. * @arg @ref LL_DMA_STREAM_5
  1755. * @arg @ref LL_DMA_STREAM_6
  1756. * @arg @ref LL_DMA_STREAM_7
  1757. * @param MemoryAddress Between 0 to 0xFFFFFFFF
  1758. * @retval None
  1759. */
  1760. __STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress)
  1761. {
  1762. uint32_t dma_base_addr = (uint32_t)DMAx;
  1763. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, MemoryAddress);
  1764. }
  1765. /**
  1766. * @brief Get the Memory to Memory Source address.
  1767. * @rmtoll PAR PA LL_DMA_GetM2MSrcAddress
  1768. * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
  1769. * @param DMAx DMAx Instance
  1770. * @param Stream This parameter can be one of the following values:
  1771. * @arg @ref LL_DMA_STREAM_0
  1772. * @arg @ref LL_DMA_STREAM_1
  1773. * @arg @ref LL_DMA_STREAM_2
  1774. * @arg @ref LL_DMA_STREAM_3
  1775. * @arg @ref LL_DMA_STREAM_4
  1776. * @arg @ref LL_DMA_STREAM_5
  1777. * @arg @ref LL_DMA_STREAM_6
  1778. * @arg @ref LL_DMA_STREAM_7
  1779. * @retval Between 0 to 0xFFFFFFFF
  1780. */
  1781. __STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Stream)
  1782. {
  1783. uint32_t dma_base_addr = (uint32_t)DMAx;
  1784. return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR));
  1785. }
  1786. /**
  1787. * @brief Get the Memory to Memory Destination address.
  1788. * @rmtoll M0AR M0A LL_DMA_GetM2MDstAddress
  1789. * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
  1790. * @param DMAx DMAx Instance
  1791. * @param Stream This parameter can be one of the following values:
  1792. * @arg @ref LL_DMA_STREAM_0
  1793. * @arg @ref LL_DMA_STREAM_1
  1794. * @arg @ref LL_DMA_STREAM_2
  1795. * @arg @ref LL_DMA_STREAM_3
  1796. * @arg @ref LL_DMA_STREAM_4
  1797. * @arg @ref LL_DMA_STREAM_5
  1798. * @arg @ref LL_DMA_STREAM_6
  1799. * @arg @ref LL_DMA_STREAM_7
  1800. * @retval Between 0 to 0xFFFFFFFF
  1801. */
  1802. __STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Stream)
  1803. {
  1804. uint32_t dma_base_addr = (uint32_t)DMAx;
  1805. return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR));
  1806. }
  1807. /**
  1808. * @brief Set Memory 1 address (used in case of Double buffer mode).
  1809. * @rmtoll M1AR M1A LL_DMA_SetMemory1Address
  1810. * @param DMAx DMAx Instance
  1811. * @param Stream This parameter can be one of the following values:
  1812. * @arg @ref LL_DMA_STREAM_0
  1813. * @arg @ref LL_DMA_STREAM_1
  1814. * @arg @ref LL_DMA_STREAM_2
  1815. * @arg @ref LL_DMA_STREAM_3
  1816. * @arg @ref LL_DMA_STREAM_4
  1817. * @arg @ref LL_DMA_STREAM_5
  1818. * @arg @ref LL_DMA_STREAM_6
  1819. * @arg @ref LL_DMA_STREAM_7
  1820. * @param Address Between 0 to 0xFFFFFFFF
  1821. * @retval None
  1822. */
  1823. __STATIC_INLINE void LL_DMA_SetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Address)
  1824. {
  1825. uint32_t dma_base_addr = (uint32_t)DMAx;
  1826. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M1AR, DMA_SxM1AR_M1A, Address);
  1827. }
  1828. /**
  1829. * @brief Get Memory 1 address (used in case of Double buffer mode).
  1830. * @rmtoll M1AR M1A LL_DMA_GetMemory1Address
  1831. * @param DMAx DMAx Instance
  1832. * @param Stream This parameter can be one of the following values:
  1833. * @arg @ref LL_DMA_STREAM_0
  1834. * @arg @ref LL_DMA_STREAM_1
  1835. * @arg @ref LL_DMA_STREAM_2
  1836. * @arg @ref LL_DMA_STREAM_3
  1837. * @arg @ref LL_DMA_STREAM_4
  1838. * @arg @ref LL_DMA_STREAM_5
  1839. * @arg @ref LL_DMA_STREAM_6
  1840. * @arg @ref LL_DMA_STREAM_7
  1841. * @retval Between 0 to 0xFFFFFFFF
  1842. */
  1843. __STATIC_INLINE uint32_t LL_DMA_GetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream)
  1844. {
  1845. uint32_t dma_base_addr = (uint32_t)DMAx;
  1846. return (((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M1AR);
  1847. }
  1848. /**
  1849. * @}
  1850. */
  1851. /** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management
  1852. * @{
  1853. */
  1854. /**
  1855. * @brief Get Stream 0 half transfer flag.
  1856. * @rmtoll LISR HTIF0 LL_DMA_IsActiveFlag_HT0
  1857. * @param DMAx DMAx Instance
  1858. * @retval State of bit (1 or 0).
  1859. */
  1860. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT0(DMA_TypeDef *DMAx)
  1861. {
  1862. return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF0) == (DMA_LISR_HTIF0)) ? 1UL : 0UL);
  1863. }
  1864. /**
  1865. * @brief Get Stream 1 half transfer flag.
  1866. * @rmtoll LISR HTIF1 LL_DMA_IsActiveFlag_HT1
  1867. * @param DMAx DMAx Instance
  1868. * @retval State of bit (1 or 0).
  1869. */
  1870. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx)
  1871. {
  1872. return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF1) == (DMA_LISR_HTIF1)) ? 1UL : 0UL);
  1873. }
  1874. /**
  1875. * @brief Get Stream 2 half transfer flag.
  1876. * @rmtoll LISR HTIF2 LL_DMA_IsActiveFlag_HT2
  1877. * @param DMAx DMAx Instance
  1878. * @retval State of bit (1 or 0).
  1879. */
  1880. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx)
  1881. {
  1882. return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF2) == (DMA_LISR_HTIF2)) ? 1UL : 0UL);
  1883. }
  1884. /**
  1885. * @brief Get Stream 3 half transfer flag.
  1886. * @rmtoll LISR HTIF3 LL_DMA_IsActiveFlag_HT3
  1887. * @param DMAx DMAx Instance
  1888. * @retval State of bit (1 or 0).
  1889. */
  1890. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx)
  1891. {
  1892. return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF3) == (DMA_LISR_HTIF3)) ? 1UL : 0UL);
  1893. }
  1894. /**
  1895. * @brief Get Stream 4 half transfer flag.
  1896. * @rmtoll HISR HTIF4 LL_DMA_IsActiveFlag_HT4
  1897. * @param DMAx DMAx Instance
  1898. * @retval State of bit (1 or 0).
  1899. */
  1900. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx)
  1901. {
  1902. return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF4) == (DMA_HISR_HTIF4)) ? 1UL : 0UL);
  1903. }
  1904. /**
  1905. * @brief Get Stream 5 half transfer flag.
  1906. * @rmtoll HISR HTIF0 LL_DMA_IsActiveFlag_HT5
  1907. * @param DMAx DMAx Instance
  1908. * @retval State of bit (1 or 0).
  1909. */
  1910. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx)
  1911. {
  1912. return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF5) == (DMA_HISR_HTIF5)) ? 1UL : 0UL);
  1913. }
  1914. /**
  1915. * @brief Get Stream 6 half transfer flag.
  1916. * @rmtoll HISR HTIF6 LL_DMA_IsActiveFlag_HT6
  1917. * @param DMAx DMAx Instance
  1918. * @retval State of bit (1 or 0).
  1919. */
  1920. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx)
  1921. {
  1922. return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF6) == (DMA_HISR_HTIF6)) ? 1UL : 0UL);
  1923. }
  1924. /**
  1925. * @brief Get Stream 7 half transfer flag.
  1926. * @rmtoll HISR HTIF7 LL_DMA_IsActiveFlag_HT7
  1927. * @param DMAx DMAx Instance
  1928. * @retval State of bit (1 or 0).
  1929. */
  1930. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx)
  1931. {
  1932. return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF7) == (DMA_HISR_HTIF7)) ? 1UL : 0UL);
  1933. }
  1934. /**
  1935. * @brief Get Stream 0 transfer complete flag.
  1936. * @rmtoll LISR TCIF0 LL_DMA_IsActiveFlag_TC0
  1937. * @param DMAx DMAx Instance
  1938. * @retval State of bit (1 or 0).
  1939. */
  1940. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC0(DMA_TypeDef *DMAx)
  1941. {
  1942. return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF0) == (DMA_LISR_TCIF0)) ? 1UL : 0UL);
  1943. }
  1944. /**
  1945. * @brief Get Stream 1 transfer complete flag.
  1946. * @rmtoll LISR TCIF1 LL_DMA_IsActiveFlag_TC1
  1947. * @param DMAx DMAx Instance
  1948. * @retval State of bit (1 or 0).
  1949. */
  1950. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx)
  1951. {
  1952. return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF1) == (DMA_LISR_TCIF1)) ? 1UL : 0UL);
  1953. }
  1954. /**
  1955. * @brief Get Stream 2 transfer complete flag.
  1956. * @rmtoll LISR TCIF2 LL_DMA_IsActiveFlag_TC2
  1957. * @param DMAx DMAx Instance
  1958. * @retval State of bit (1 or 0).
  1959. */
  1960. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx)
  1961. {
  1962. return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF2) == (DMA_LISR_TCIF2)) ? 1UL : 0UL);
  1963. }
  1964. /**
  1965. * @brief Get Stream 3 transfer complete flag.
  1966. * @rmtoll LISR TCIF3 LL_DMA_IsActiveFlag_TC3
  1967. * @param DMAx DMAx Instance
  1968. * @retval State of bit (1 or 0).
  1969. */
  1970. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx)
  1971. {
  1972. return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF3) == (DMA_LISR_TCIF3)) ? 1UL : 0UL);
  1973. }
  1974. /**
  1975. * @brief Get Stream 4 transfer complete flag.
  1976. * @rmtoll HISR TCIF4 LL_DMA_IsActiveFlag_TC4
  1977. * @param DMAx DMAx Instance
  1978. * @retval State of bit (1 or 0).
  1979. */
  1980. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx)
  1981. {
  1982. return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF4) == (DMA_HISR_TCIF4)) ? 1UL : 0UL);
  1983. }
  1984. /**
  1985. * @brief Get Stream 5 transfer complete flag.
  1986. * @rmtoll HISR TCIF0 LL_DMA_IsActiveFlag_TC5
  1987. * @param DMAx DMAx Instance
  1988. * @retval State of bit (1 or 0).
  1989. */
  1990. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx)
  1991. {
  1992. return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF5) == (DMA_HISR_TCIF5)) ? 1UL : 0UL);
  1993. }
  1994. /**
  1995. * @brief Get Stream 6 transfer complete flag.
  1996. * @rmtoll HISR TCIF6 LL_DMA_IsActiveFlag_TC6
  1997. * @param DMAx DMAx Instance
  1998. * @retval State of bit (1 or 0).
  1999. */
  2000. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx)
  2001. {
  2002. return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF6) == (DMA_HISR_TCIF6)) ? 1UL : 0UL);
  2003. }
  2004. /**
  2005. * @brief Get Stream 7 transfer complete flag.
  2006. * @rmtoll HISR TCIF7 LL_DMA_IsActiveFlag_TC7
  2007. * @param DMAx DMAx Instance
  2008. * @retval State of bit (1 or 0).
  2009. */
  2010. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx)
  2011. {
  2012. return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF7) == (DMA_HISR_TCIF7)) ? 1UL : 0UL);
  2013. }
  2014. /**
  2015. * @brief Get Stream 0 transfer error flag.
  2016. * @rmtoll LISR TEIF0 LL_DMA_IsActiveFlag_TE0
  2017. * @param DMAx DMAx Instance
  2018. * @retval State of bit (1 or 0).
  2019. */
  2020. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE0(DMA_TypeDef *DMAx)
  2021. {
  2022. return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF0) == (DMA_LISR_TEIF0)) ? 1UL : 0UL);
  2023. }
  2024. /**
  2025. * @brief Get Stream 1 transfer error flag.
  2026. * @rmtoll LISR TEIF1 LL_DMA_IsActiveFlag_TE1
  2027. * @param DMAx DMAx Instance
  2028. * @retval State of bit (1 or 0).
  2029. */
  2030. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx)
  2031. {
  2032. return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF1) == (DMA_LISR_TEIF1)) ? 1UL : 0UL);
  2033. }
  2034. /**
  2035. * @brief Get Stream 2 transfer error flag.
  2036. * @rmtoll LISR TEIF2 LL_DMA_IsActiveFlag_TE2
  2037. * @param DMAx DMAx Instance
  2038. * @retval State of bit (1 or 0).
  2039. */
  2040. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx)
  2041. {
  2042. return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF2) == (DMA_LISR_TEIF2)) ? 1UL : 0UL);
  2043. }
  2044. /**
  2045. * @brief Get Stream 3 transfer error flag.
  2046. * @rmtoll LISR TEIF3 LL_DMA_IsActiveFlag_TE3
  2047. * @param DMAx DMAx Instance
  2048. * @retval State of bit (1 or 0).
  2049. */
  2050. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx)
  2051. {
  2052. return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF3) == (DMA_LISR_TEIF3)) ? 1UL : 0UL);
  2053. }
  2054. /**
  2055. * @brief Get Stream 4 transfer error flag.
  2056. * @rmtoll HISR TEIF4 LL_DMA_IsActiveFlag_TE4
  2057. * @param DMAx DMAx Instance
  2058. * @retval State of bit (1 or 0).
  2059. */
  2060. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx)
  2061. {
  2062. return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF4) == (DMA_HISR_TEIF4)) ? 1UL : 0UL);
  2063. }
  2064. /**
  2065. * @brief Get Stream 5 transfer error flag.
  2066. * @rmtoll HISR TEIF0 LL_DMA_IsActiveFlag_TE5
  2067. * @param DMAx DMAx Instance
  2068. * @retval State of bit (1 or 0).
  2069. */
  2070. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx)
  2071. {
  2072. return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF5) == (DMA_HISR_TEIF5)) ? 1UL : 0UL);
  2073. }
  2074. /**
  2075. * @brief Get Stream 6 transfer error flag.
  2076. * @rmtoll HISR TEIF6 LL_DMA_IsActiveFlag_TE6
  2077. * @param DMAx DMAx Instance
  2078. * @retval State of bit (1 or 0).
  2079. */
  2080. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx)
  2081. {
  2082. return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF6) == (DMA_HISR_TEIF6)) ? 1UL : 0UL);
  2083. }
  2084. /**
  2085. * @brief Get Stream 7 transfer error flag.
  2086. * @rmtoll HISR TEIF7 LL_DMA_IsActiveFlag_TE7
  2087. * @param DMAx DMAx Instance
  2088. * @retval State of bit (1 or 0).
  2089. */
  2090. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx)
  2091. {
  2092. return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF7) == (DMA_HISR_TEIF7)) ? 1UL : 0UL);
  2093. }
  2094. /**
  2095. * @brief Get Stream 0 direct mode error flag.
  2096. * @rmtoll LISR DMEIF0 LL_DMA_IsActiveFlag_DME0
  2097. * @param DMAx DMAx Instance
  2098. * @retval State of bit (1 or 0).
  2099. */
  2100. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME0(DMA_TypeDef *DMAx)
  2101. {
  2102. return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF0) == (DMA_LISR_DMEIF0)) ? 1UL : 0UL);
  2103. }
  2104. /**
  2105. * @brief Get Stream 1 direct mode error flag.
  2106. * @rmtoll LISR DMEIF1 LL_DMA_IsActiveFlag_DME1
  2107. * @param DMAx DMAx Instance
  2108. * @retval State of bit (1 or 0).
  2109. */
  2110. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME1(DMA_TypeDef *DMAx)
  2111. {
  2112. return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF1) == (DMA_LISR_DMEIF1)) ? 1UL : 0UL);
  2113. }
  2114. /**
  2115. * @brief Get Stream 2 direct mode error flag.
  2116. * @rmtoll LISR DMEIF2 LL_DMA_IsActiveFlag_DME2
  2117. * @param DMAx DMAx Instance
  2118. * @retval State of bit (1 or 0).
  2119. */
  2120. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME2(DMA_TypeDef *DMAx)
  2121. {
  2122. return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF2) == (DMA_LISR_DMEIF2)) ? 1UL : 0UL);
  2123. }
  2124. /**
  2125. * @brief Get Stream 3 direct mode error flag.
  2126. * @rmtoll LISR DMEIF3 LL_DMA_IsActiveFlag_DME3
  2127. * @param DMAx DMAx Instance
  2128. * @retval State of bit (1 or 0).
  2129. */
  2130. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME3(DMA_TypeDef *DMAx)
  2131. {
  2132. return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF3) == (DMA_LISR_DMEIF3)) ? 1UL : 0UL);
  2133. }
  2134. /**
  2135. * @brief Get Stream 4 direct mode error flag.
  2136. * @rmtoll HISR DMEIF4 LL_DMA_IsActiveFlag_DME4
  2137. * @param DMAx DMAx Instance
  2138. * @retval State of bit (1 or 0).
  2139. */
  2140. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME4(DMA_TypeDef *DMAx)
  2141. {
  2142. return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF4) == (DMA_HISR_DMEIF4)) ? 1UL : 0UL);
  2143. }
  2144. /**
  2145. * @brief Get Stream 5 direct mode error flag.
  2146. * @rmtoll HISR DMEIF0 LL_DMA_IsActiveFlag_DME5
  2147. * @param DMAx DMAx Instance
  2148. * @retval State of bit (1 or 0).
  2149. */
  2150. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME5(DMA_TypeDef *DMAx)
  2151. {
  2152. return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF5) == (DMA_HISR_DMEIF5)) ? 1UL : 0UL);
  2153. }
  2154. /**
  2155. * @brief Get Stream 6 direct mode error flag.
  2156. * @rmtoll HISR DMEIF6 LL_DMA_IsActiveFlag_DME6
  2157. * @param DMAx DMAx Instance
  2158. * @retval State of bit (1 or 0).
  2159. */
  2160. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME6(DMA_TypeDef *DMAx)
  2161. {
  2162. return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF6) == (DMA_HISR_DMEIF6)) ? 1UL : 0UL);
  2163. }
  2164. /**
  2165. * @brief Get Stream 7 direct mode error flag.
  2166. * @rmtoll HISR DMEIF7 LL_DMA_IsActiveFlag_DME7
  2167. * @param DMAx DMAx Instance
  2168. * @retval State of bit (1 or 0).
  2169. */
  2170. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME7(DMA_TypeDef *DMAx)
  2171. {
  2172. return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF7) == (DMA_HISR_DMEIF7)) ? 1UL : 0UL);
  2173. }
  2174. /**
  2175. * @brief Get Stream 0 FIFO error flag.
  2176. * @rmtoll LISR FEIF0 LL_DMA_IsActiveFlag_FE0
  2177. * @param DMAx DMAx Instance
  2178. * @retval State of bit (1 or 0).
  2179. */
  2180. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE0(DMA_TypeDef *DMAx)
  2181. {
  2182. return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF0) == (DMA_LISR_FEIF0)) ? 1UL : 0UL);
  2183. }
  2184. /**
  2185. * @brief Get Stream 1 FIFO error flag.
  2186. * @rmtoll LISR FEIF1 LL_DMA_IsActiveFlag_FE1
  2187. * @param DMAx DMAx Instance
  2188. * @retval State of bit (1 or 0).
  2189. */
  2190. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE1(DMA_TypeDef *DMAx)
  2191. {
  2192. return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF1) == (DMA_LISR_FEIF1)) ? 1UL : 0UL);
  2193. }
  2194. /**
  2195. * @brief Get Stream 2 FIFO error flag.
  2196. * @rmtoll LISR FEIF2 LL_DMA_IsActiveFlag_FE2
  2197. * @param DMAx DMAx Instance
  2198. * @retval State of bit (1 or 0).
  2199. */
  2200. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE2(DMA_TypeDef *DMAx)
  2201. {
  2202. return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF2) == (DMA_LISR_FEIF2)) ? 1UL : 0UL);
  2203. }
  2204. /**
  2205. * @brief Get Stream 3 FIFO error flag.
  2206. * @rmtoll LISR FEIF3 LL_DMA_IsActiveFlag_FE3
  2207. * @param DMAx DMAx Instance
  2208. * @retval State of bit (1 or 0).
  2209. */
  2210. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE3(DMA_TypeDef *DMAx)
  2211. {
  2212. return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF3) == (DMA_LISR_FEIF3)) ? 1UL : 0UL);
  2213. }
  2214. /**
  2215. * @brief Get Stream 4 FIFO error flag.
  2216. * @rmtoll HISR FEIF4 LL_DMA_IsActiveFlag_FE4
  2217. * @param DMAx DMAx Instance
  2218. * @retval State of bit (1 or 0).
  2219. */
  2220. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE4(DMA_TypeDef *DMAx)
  2221. {
  2222. return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF4) == (DMA_HISR_FEIF4)) ? 1UL : 0UL);
  2223. }
  2224. /**
  2225. * @brief Get Stream 5 FIFO error flag.
  2226. * @rmtoll HISR FEIF0 LL_DMA_IsActiveFlag_FE5
  2227. * @param DMAx DMAx Instance
  2228. * @retval State of bit (1 or 0).
  2229. */
  2230. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE5(DMA_TypeDef *DMAx)
  2231. {
  2232. return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF5) == (DMA_HISR_FEIF5)) ? 1UL : 0UL);
  2233. }
  2234. /**
  2235. * @brief Get Stream 6 FIFO error flag.
  2236. * @rmtoll HISR FEIF6 LL_DMA_IsActiveFlag_FE6
  2237. * @param DMAx DMAx Instance
  2238. * @retval State of bit (1 or 0).
  2239. */
  2240. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE6(DMA_TypeDef *DMAx)
  2241. {
  2242. return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF6) == (DMA_HISR_FEIF6)) ? 1UL : 0UL);
  2243. }
  2244. /**
  2245. * @brief Get Stream 7 FIFO error flag.
  2246. * @rmtoll HISR FEIF7 LL_DMA_IsActiveFlag_FE7
  2247. * @param DMAx DMAx Instance
  2248. * @retval State of bit (1 or 0).
  2249. */
  2250. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE7(DMA_TypeDef *DMAx)
  2251. {
  2252. return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF7) == (DMA_HISR_FEIF7)) ? 1UL : 0UL);
  2253. }
  2254. /**
  2255. * @brief Clear Stream 0 half transfer flag.
  2256. * @rmtoll LIFCR CHTIF0 LL_DMA_ClearFlag_HT0
  2257. * @param DMAx DMAx Instance
  2258. * @retval None
  2259. */
  2260. __STATIC_INLINE void LL_DMA_ClearFlag_HT0(DMA_TypeDef *DMAx)
  2261. {
  2262. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF0);
  2263. }
  2264. /**
  2265. * @brief Clear Stream 1 half transfer flag.
  2266. * @rmtoll LIFCR CHTIF1 LL_DMA_ClearFlag_HT1
  2267. * @param DMAx DMAx Instance
  2268. * @retval None
  2269. */
  2270. __STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx)
  2271. {
  2272. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF1);
  2273. }
  2274. /**
  2275. * @brief Clear Stream 2 half transfer flag.
  2276. * @rmtoll LIFCR CHTIF2 LL_DMA_ClearFlag_HT2
  2277. * @param DMAx DMAx Instance
  2278. * @retval None
  2279. */
  2280. __STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx)
  2281. {
  2282. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF2);
  2283. }
  2284. /**
  2285. * @brief Clear Stream 3 half transfer flag.
  2286. * @rmtoll LIFCR CHTIF3 LL_DMA_ClearFlag_HT3
  2287. * @param DMAx DMAx Instance
  2288. * @retval None
  2289. */
  2290. __STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx)
  2291. {
  2292. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF3);
  2293. }
  2294. /**
  2295. * @brief Clear Stream 4 half transfer flag.
  2296. * @rmtoll HIFCR CHTIF4 LL_DMA_ClearFlag_HT4
  2297. * @param DMAx DMAx Instance
  2298. * @retval None
  2299. */
  2300. __STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx)
  2301. {
  2302. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF4);
  2303. }
  2304. /**
  2305. * @brief Clear Stream 5 half transfer flag.
  2306. * @rmtoll HIFCR CHTIF5 LL_DMA_ClearFlag_HT5
  2307. * @param DMAx DMAx Instance
  2308. * @retval None
  2309. */
  2310. __STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx)
  2311. {
  2312. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF5);
  2313. }
  2314. /**
  2315. * @brief Clear Stream 6 half transfer flag.
  2316. * @rmtoll HIFCR CHTIF6 LL_DMA_ClearFlag_HT6
  2317. * @param DMAx DMAx Instance
  2318. * @retval None
  2319. */
  2320. __STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx)
  2321. {
  2322. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF6);
  2323. }
  2324. /**
  2325. * @brief Clear Stream 7 half transfer flag.
  2326. * @rmtoll HIFCR CHTIF7 LL_DMA_ClearFlag_HT7
  2327. * @param DMAx DMAx Instance
  2328. * @retval None
  2329. */
  2330. __STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx)
  2331. {
  2332. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF7);
  2333. }
  2334. /**
  2335. * @brief Clear Stream 0 transfer complete flag.
  2336. * @rmtoll LIFCR CTCIF0 LL_DMA_ClearFlag_TC0
  2337. * @param DMAx DMAx Instance
  2338. * @retval None
  2339. */
  2340. __STATIC_INLINE void LL_DMA_ClearFlag_TC0(DMA_TypeDef *DMAx)
  2341. {
  2342. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF0);
  2343. }
  2344. /**
  2345. * @brief Clear Stream 1 transfer complete flag.
  2346. * @rmtoll LIFCR CTCIF1 LL_DMA_ClearFlag_TC1
  2347. * @param DMAx DMAx Instance
  2348. * @retval None
  2349. */
  2350. __STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx)
  2351. {
  2352. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF1);
  2353. }
  2354. /**
  2355. * @brief Clear Stream 2 transfer complete flag.
  2356. * @rmtoll LIFCR CTCIF2 LL_DMA_ClearFlag_TC2
  2357. * @param DMAx DMAx Instance
  2358. * @retval None
  2359. */
  2360. __STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx)
  2361. {
  2362. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF2);
  2363. }
  2364. /**
  2365. * @brief Clear Stream 3 transfer complete flag.
  2366. * @rmtoll LIFCR CTCIF3 LL_DMA_ClearFlag_TC3
  2367. * @param DMAx DMAx Instance
  2368. * @retval None
  2369. */
  2370. __STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx)
  2371. {
  2372. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF3);
  2373. }
  2374. /**
  2375. * @brief Clear Stream 4 transfer complete flag.
  2376. * @rmtoll HIFCR CTCIF4 LL_DMA_ClearFlag_TC4
  2377. * @param DMAx DMAx Instance
  2378. * @retval None
  2379. */
  2380. __STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx)
  2381. {
  2382. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF4);
  2383. }
  2384. /**
  2385. * @brief Clear Stream 5 transfer complete flag.
  2386. * @rmtoll HIFCR CTCIF5 LL_DMA_ClearFlag_TC5
  2387. * @param DMAx DMAx Instance
  2388. * @retval None
  2389. */
  2390. __STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx)
  2391. {
  2392. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF5);
  2393. }
  2394. /**
  2395. * @brief Clear Stream 6 transfer complete flag.
  2396. * @rmtoll HIFCR CTCIF6 LL_DMA_ClearFlag_TC6
  2397. * @param DMAx DMAx Instance
  2398. * @retval None
  2399. */
  2400. __STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx)
  2401. {
  2402. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF6);
  2403. }
  2404. /**
  2405. * @brief Clear Stream 7 transfer complete flag.
  2406. * @rmtoll HIFCR CTCIF7 LL_DMA_ClearFlag_TC7
  2407. * @param DMAx DMAx Instance
  2408. * @retval None
  2409. */
  2410. __STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx)
  2411. {
  2412. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF7);
  2413. }
  2414. /**
  2415. * @brief Clear Stream 0 transfer error flag.
  2416. * @rmtoll LIFCR CTEIF0 LL_DMA_ClearFlag_TE0
  2417. * @param DMAx DMAx Instance
  2418. * @retval None
  2419. */
  2420. __STATIC_INLINE void LL_DMA_ClearFlag_TE0(DMA_TypeDef *DMAx)
  2421. {
  2422. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF0);
  2423. }
  2424. /**
  2425. * @brief Clear Stream 1 transfer error flag.
  2426. * @rmtoll LIFCR CTEIF1 LL_DMA_ClearFlag_TE1
  2427. * @param DMAx DMAx Instance
  2428. * @retval None
  2429. */
  2430. __STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx)
  2431. {
  2432. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF1);
  2433. }
  2434. /**
  2435. * @brief Clear Stream 2 transfer error flag.
  2436. * @rmtoll LIFCR CTEIF2 LL_DMA_ClearFlag_TE2
  2437. * @param DMAx DMAx Instance
  2438. * @retval None
  2439. */
  2440. __STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx)
  2441. {
  2442. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF2);
  2443. }
  2444. /**
  2445. * @brief Clear Stream 3 transfer error flag.
  2446. * @rmtoll LIFCR CTEIF3 LL_DMA_ClearFlag_TE3
  2447. * @param DMAx DMAx Instance
  2448. * @retval None
  2449. */
  2450. __STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx)
  2451. {
  2452. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF3);
  2453. }
  2454. /**
  2455. * @brief Clear Stream 4 transfer error flag.
  2456. * @rmtoll HIFCR CTEIF4 LL_DMA_ClearFlag_TE4
  2457. * @param DMAx DMAx Instance
  2458. * @retval None
  2459. */
  2460. __STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx)
  2461. {
  2462. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF4);
  2463. }
  2464. /**
  2465. * @brief Clear Stream 5 transfer error flag.
  2466. * @rmtoll HIFCR CTEIF5 LL_DMA_ClearFlag_TE5
  2467. * @param DMAx DMAx Instance
  2468. * @retval None
  2469. */
  2470. __STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx)
  2471. {
  2472. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF5);
  2473. }
  2474. /**
  2475. * @brief Clear Stream 6 transfer error flag.
  2476. * @rmtoll HIFCR CTEIF6 LL_DMA_ClearFlag_TE6
  2477. * @param DMAx DMAx Instance
  2478. * @retval None
  2479. */
  2480. __STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx)
  2481. {
  2482. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF6);
  2483. }
  2484. /**
  2485. * @brief Clear Stream 7 transfer error flag.
  2486. * @rmtoll HIFCR CTEIF7 LL_DMA_ClearFlag_TE7
  2487. * @param DMAx DMAx Instance
  2488. * @retval None
  2489. */
  2490. __STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx)
  2491. {
  2492. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF7);
  2493. }
  2494. /**
  2495. * @brief Clear Stream 0 direct mode error flag.
  2496. * @rmtoll LIFCR CDMEIF0 LL_DMA_ClearFlag_DME0
  2497. * @param DMAx DMAx Instance
  2498. * @retval None
  2499. */
  2500. __STATIC_INLINE void LL_DMA_ClearFlag_DME0(DMA_TypeDef *DMAx)
  2501. {
  2502. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF0);
  2503. }
  2504. /**
  2505. * @brief Clear Stream 1 direct mode error flag.
  2506. * @rmtoll LIFCR CDMEIF1 LL_DMA_ClearFlag_DME1
  2507. * @param DMAx DMAx Instance
  2508. * @retval None
  2509. */
  2510. __STATIC_INLINE void LL_DMA_ClearFlag_DME1(DMA_TypeDef *DMAx)
  2511. {
  2512. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF1);
  2513. }
  2514. /**
  2515. * @brief Clear Stream 2 direct mode error flag.
  2516. * @rmtoll LIFCR CDMEIF2 LL_DMA_ClearFlag_DME2
  2517. * @param DMAx DMAx Instance
  2518. * @retval None
  2519. */
  2520. __STATIC_INLINE void LL_DMA_ClearFlag_DME2(DMA_TypeDef *DMAx)
  2521. {
  2522. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF2);
  2523. }
  2524. /**
  2525. * @brief Clear Stream 3 direct mode error flag.
  2526. * @rmtoll LIFCR CDMEIF3 LL_DMA_ClearFlag_DME3
  2527. * @param DMAx DMAx Instance
  2528. * @retval None
  2529. */
  2530. __STATIC_INLINE void LL_DMA_ClearFlag_DME3(DMA_TypeDef *DMAx)
  2531. {
  2532. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF3);
  2533. }
  2534. /**
  2535. * @brief Clear Stream 4 direct mode error flag.
  2536. * @rmtoll HIFCR CDMEIF4 LL_DMA_ClearFlag_DME4
  2537. * @param DMAx DMAx Instance
  2538. * @retval None
  2539. */
  2540. __STATIC_INLINE void LL_DMA_ClearFlag_DME4(DMA_TypeDef *DMAx)
  2541. {
  2542. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF4);
  2543. }
  2544. /**
  2545. * @brief Clear Stream 5 direct mode error flag.
  2546. * @rmtoll HIFCR CDMEIF5 LL_DMA_ClearFlag_DME5
  2547. * @param DMAx DMAx Instance
  2548. * @retval None
  2549. */
  2550. __STATIC_INLINE void LL_DMA_ClearFlag_DME5(DMA_TypeDef *DMAx)
  2551. {
  2552. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF5);
  2553. }
  2554. /**
  2555. * @brief Clear Stream 6 direct mode error flag.
  2556. * @rmtoll HIFCR CDMEIF6 LL_DMA_ClearFlag_DME6
  2557. * @param DMAx DMAx Instance
  2558. * @retval None
  2559. */
  2560. __STATIC_INLINE void LL_DMA_ClearFlag_DME6(DMA_TypeDef *DMAx)
  2561. {
  2562. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF6);
  2563. }
  2564. /**
  2565. * @brief Clear Stream 7 direct mode error flag.
  2566. * @rmtoll HIFCR CDMEIF7 LL_DMA_ClearFlag_DME7
  2567. * @param DMAx DMAx Instance
  2568. * @retval None
  2569. */
  2570. __STATIC_INLINE void LL_DMA_ClearFlag_DME7(DMA_TypeDef *DMAx)
  2571. {
  2572. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF7);
  2573. }
  2574. /**
  2575. * @brief Clear Stream 0 FIFO error flag.
  2576. * @rmtoll LIFCR CFEIF0 LL_DMA_ClearFlag_FE0
  2577. * @param DMAx DMAx Instance
  2578. * @retval None
  2579. */
  2580. __STATIC_INLINE void LL_DMA_ClearFlag_FE0(DMA_TypeDef *DMAx)
  2581. {
  2582. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF0);
  2583. }
  2584. /**
  2585. * @brief Clear Stream 1 FIFO error flag.
  2586. * @rmtoll LIFCR CFEIF1 LL_DMA_ClearFlag_FE1
  2587. * @param DMAx DMAx Instance
  2588. * @retval None
  2589. */
  2590. __STATIC_INLINE void LL_DMA_ClearFlag_FE1(DMA_TypeDef *DMAx)
  2591. {
  2592. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF1);
  2593. }
  2594. /**
  2595. * @brief Clear Stream 2 FIFO error flag.
  2596. * @rmtoll LIFCR CFEIF2 LL_DMA_ClearFlag_FE2
  2597. * @param DMAx DMAx Instance
  2598. * @retval None
  2599. */
  2600. __STATIC_INLINE void LL_DMA_ClearFlag_FE2(DMA_TypeDef *DMAx)
  2601. {
  2602. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF2);
  2603. }
  2604. /**
  2605. * @brief Clear Stream 3 FIFO error flag.
  2606. * @rmtoll LIFCR CFEIF3 LL_DMA_ClearFlag_FE3
  2607. * @param DMAx DMAx Instance
  2608. * @retval None
  2609. */
  2610. __STATIC_INLINE void LL_DMA_ClearFlag_FE3(DMA_TypeDef *DMAx)
  2611. {
  2612. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF3);
  2613. }
  2614. /**
  2615. * @brief Clear Stream 4 FIFO error flag.
  2616. * @rmtoll HIFCR CFEIF4 LL_DMA_ClearFlag_FE4
  2617. * @param DMAx DMAx Instance
  2618. * @retval None
  2619. */
  2620. __STATIC_INLINE void LL_DMA_ClearFlag_FE4(DMA_TypeDef *DMAx)
  2621. {
  2622. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF4);
  2623. }
  2624. /**
  2625. * @brief Clear Stream 5 FIFO error flag.
  2626. * @rmtoll HIFCR CFEIF5 LL_DMA_ClearFlag_FE5
  2627. * @param DMAx DMAx Instance
  2628. * @retval None
  2629. */
  2630. __STATIC_INLINE void LL_DMA_ClearFlag_FE5(DMA_TypeDef *DMAx)
  2631. {
  2632. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF5);
  2633. }
  2634. /**
  2635. * @brief Clear Stream 6 FIFO error flag.
  2636. * @rmtoll HIFCR CFEIF6 LL_DMA_ClearFlag_FE6
  2637. * @param DMAx DMAx Instance
  2638. * @retval None
  2639. */
  2640. __STATIC_INLINE void LL_DMA_ClearFlag_FE6(DMA_TypeDef *DMAx)
  2641. {
  2642. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF6);
  2643. }
  2644. /**
  2645. * @brief Clear Stream 7 FIFO error flag.
  2646. * @rmtoll HIFCR CFEIF7 LL_DMA_ClearFlag_FE7
  2647. * @param DMAx DMAx Instance
  2648. * @retval None
  2649. */
  2650. __STATIC_INLINE void LL_DMA_ClearFlag_FE7(DMA_TypeDef *DMAx)
  2651. {
  2652. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF7);
  2653. }
  2654. /**
  2655. * @}
  2656. */
  2657. /** @defgroup DMA_LL_EF_IT_Management IT_Management
  2658. * @{
  2659. */
  2660. /**
  2661. * @brief Enable Half transfer interrupt.
  2662. * @rmtoll CR HTIE LL_DMA_EnableIT_HT
  2663. * @param DMAx DMAx Instance
  2664. * @param Stream This parameter can be one of the following values:
  2665. * @arg @ref LL_DMA_STREAM_0
  2666. * @arg @ref LL_DMA_STREAM_1
  2667. * @arg @ref LL_DMA_STREAM_2
  2668. * @arg @ref LL_DMA_STREAM_3
  2669. * @arg @ref LL_DMA_STREAM_4
  2670. * @arg @ref LL_DMA_STREAM_5
  2671. * @arg @ref LL_DMA_STREAM_6
  2672. * @arg @ref LL_DMA_STREAM_7
  2673. * @retval None
  2674. */
  2675. __STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream)
  2676. {
  2677. uint32_t dma_base_addr = (uint32_t)DMAx;
  2678. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_HTIE);
  2679. }
  2680. /**
  2681. * @brief Enable Transfer error interrupt.
  2682. * @rmtoll CR TEIE LL_DMA_EnableIT_TE
  2683. * @param DMAx DMAx Instance
  2684. * @param Stream This parameter can be one of the following values:
  2685. * @arg @ref LL_DMA_STREAM_0
  2686. * @arg @ref LL_DMA_STREAM_1
  2687. * @arg @ref LL_DMA_STREAM_2
  2688. * @arg @ref LL_DMA_STREAM_3
  2689. * @arg @ref LL_DMA_STREAM_4
  2690. * @arg @ref LL_DMA_STREAM_5
  2691. * @arg @ref LL_DMA_STREAM_6
  2692. * @arg @ref LL_DMA_STREAM_7
  2693. * @retval None
  2694. */
  2695. __STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream)
  2696. {
  2697. uint32_t dma_base_addr = (uint32_t)DMAx;
  2698. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TEIE);
  2699. }
  2700. /**
  2701. * @brief Enable Transfer complete interrupt.
  2702. * @rmtoll CR TCIE LL_DMA_EnableIT_TC
  2703. * @param DMAx DMAx Instance
  2704. * @param Stream This parameter can be one of the following values:
  2705. * @arg @ref LL_DMA_STREAM_0
  2706. * @arg @ref LL_DMA_STREAM_1
  2707. * @arg @ref LL_DMA_STREAM_2
  2708. * @arg @ref LL_DMA_STREAM_3
  2709. * @arg @ref LL_DMA_STREAM_4
  2710. * @arg @ref LL_DMA_STREAM_5
  2711. * @arg @ref LL_DMA_STREAM_6
  2712. * @arg @ref LL_DMA_STREAM_7
  2713. * @retval None
  2714. */
  2715. __STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream)
  2716. {
  2717. uint32_t dma_base_addr = (uint32_t)DMAx;
  2718. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TCIE);
  2719. }
  2720. /**
  2721. * @brief Enable Direct mode error interrupt.
  2722. * @rmtoll CR DMEIE LL_DMA_EnableIT_DME
  2723. * @param DMAx DMAx Instance
  2724. * @param Stream This parameter can be one of the following values:
  2725. * @arg @ref LL_DMA_STREAM_0
  2726. * @arg @ref LL_DMA_STREAM_1
  2727. * @arg @ref LL_DMA_STREAM_2
  2728. * @arg @ref LL_DMA_STREAM_3
  2729. * @arg @ref LL_DMA_STREAM_4
  2730. * @arg @ref LL_DMA_STREAM_5
  2731. * @arg @ref LL_DMA_STREAM_6
  2732. * @arg @ref LL_DMA_STREAM_7
  2733. * @retval None
  2734. */
  2735. __STATIC_INLINE void LL_DMA_EnableIT_DME(DMA_TypeDef *DMAx, uint32_t Stream)
  2736. {
  2737. uint32_t dma_base_addr = (uint32_t)DMAx;
  2738. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DMEIE);
  2739. }
  2740. /**
  2741. * @brief Enable FIFO error interrupt.
  2742. * @rmtoll FCR FEIE LL_DMA_EnableIT_FE
  2743. * @param DMAx DMAx Instance
  2744. * @param Stream This parameter can be one of the following values:
  2745. * @arg @ref LL_DMA_STREAM_0
  2746. * @arg @ref LL_DMA_STREAM_1
  2747. * @arg @ref LL_DMA_STREAM_2
  2748. * @arg @ref LL_DMA_STREAM_3
  2749. * @arg @ref LL_DMA_STREAM_4
  2750. * @arg @ref LL_DMA_STREAM_5
  2751. * @arg @ref LL_DMA_STREAM_6
  2752. * @arg @ref LL_DMA_STREAM_7
  2753. * @retval None
  2754. */
  2755. __STATIC_INLINE void LL_DMA_EnableIT_FE(DMA_TypeDef *DMAx, uint32_t Stream)
  2756. {
  2757. uint32_t dma_base_addr = (uint32_t)DMAx;
  2758. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FEIE);
  2759. }
  2760. /**
  2761. * @brief Disable Half transfer interrupt.
  2762. * @rmtoll CR HTIE LL_DMA_DisableIT_HT
  2763. * @param DMAx DMAx Instance
  2764. * @param Stream This parameter can be one of the following values:
  2765. * @arg @ref LL_DMA_STREAM_0
  2766. * @arg @ref LL_DMA_STREAM_1
  2767. * @arg @ref LL_DMA_STREAM_2
  2768. * @arg @ref LL_DMA_STREAM_3
  2769. * @arg @ref LL_DMA_STREAM_4
  2770. * @arg @ref LL_DMA_STREAM_5
  2771. * @arg @ref LL_DMA_STREAM_6
  2772. * @arg @ref LL_DMA_STREAM_7
  2773. * @retval None
  2774. */
  2775. __STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream)
  2776. {
  2777. uint32_t dma_base_addr = (uint32_t)DMAx;
  2778. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_HTIE);
  2779. }
  2780. /**
  2781. * @brief Disable Transfer error interrupt.
  2782. * @rmtoll CR TEIE LL_DMA_DisableIT_TE
  2783. * @param DMAx DMAx Instance
  2784. * @param Stream This parameter can be one of the following values:
  2785. * @arg @ref LL_DMA_STREAM_0
  2786. * @arg @ref LL_DMA_STREAM_1
  2787. * @arg @ref LL_DMA_STREAM_2
  2788. * @arg @ref LL_DMA_STREAM_3
  2789. * @arg @ref LL_DMA_STREAM_4
  2790. * @arg @ref LL_DMA_STREAM_5
  2791. * @arg @ref LL_DMA_STREAM_6
  2792. * @arg @ref LL_DMA_STREAM_7
  2793. * @retval None
  2794. */
  2795. __STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream)
  2796. {
  2797. uint32_t dma_base_addr = (uint32_t)DMAx;
  2798. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TEIE);
  2799. }
  2800. /**
  2801. * @brief Disable Transfer complete interrupt.
  2802. * @rmtoll CR TCIE LL_DMA_DisableIT_TC
  2803. * @param DMAx DMAx Instance
  2804. * @param Stream This parameter can be one of the following values:
  2805. * @arg @ref LL_DMA_STREAM_0
  2806. * @arg @ref LL_DMA_STREAM_1
  2807. * @arg @ref LL_DMA_STREAM_2
  2808. * @arg @ref LL_DMA_STREAM_3
  2809. * @arg @ref LL_DMA_STREAM_4
  2810. * @arg @ref LL_DMA_STREAM_5
  2811. * @arg @ref LL_DMA_STREAM_6
  2812. * @arg @ref LL_DMA_STREAM_7
  2813. * @retval None
  2814. */
  2815. __STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream)
  2816. {
  2817. uint32_t dma_base_addr = (uint32_t)DMAx;
  2818. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TCIE);
  2819. }
  2820. /**
  2821. * @brief Disable Direct mode error interrupt.
  2822. * @rmtoll CR DMEIE LL_DMA_DisableIT_DME
  2823. * @param DMAx DMAx Instance
  2824. * @param Stream This parameter can be one of the following values:
  2825. * @arg @ref LL_DMA_STREAM_0
  2826. * @arg @ref LL_DMA_STREAM_1
  2827. * @arg @ref LL_DMA_STREAM_2
  2828. * @arg @ref LL_DMA_STREAM_3
  2829. * @arg @ref LL_DMA_STREAM_4
  2830. * @arg @ref LL_DMA_STREAM_5
  2831. * @arg @ref LL_DMA_STREAM_6
  2832. * @arg @ref LL_DMA_STREAM_7
  2833. * @retval None
  2834. */
  2835. __STATIC_INLINE void LL_DMA_DisableIT_DME(DMA_TypeDef *DMAx, uint32_t Stream)
  2836. {
  2837. uint32_t dma_base_addr = (uint32_t)DMAx;
  2838. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DMEIE);
  2839. }
  2840. /**
  2841. * @brief Disable FIFO error interrupt.
  2842. * @rmtoll FCR FEIE LL_DMA_DisableIT_FE
  2843. * @param DMAx DMAx Instance
  2844. * @param Stream This parameter can be one of the following values:
  2845. * @arg @ref LL_DMA_STREAM_0
  2846. * @arg @ref LL_DMA_STREAM_1
  2847. * @arg @ref LL_DMA_STREAM_2
  2848. * @arg @ref LL_DMA_STREAM_3
  2849. * @arg @ref LL_DMA_STREAM_4
  2850. * @arg @ref LL_DMA_STREAM_5
  2851. * @arg @ref LL_DMA_STREAM_6
  2852. * @arg @ref LL_DMA_STREAM_7
  2853. * @retval None
  2854. */
  2855. __STATIC_INLINE void LL_DMA_DisableIT_FE(DMA_TypeDef *DMAx, uint32_t Stream)
  2856. {
  2857. uint32_t dma_base_addr = (uint32_t)DMAx;
  2858. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FEIE);
  2859. }
  2860. /**
  2861. * @brief Check if Half transfer interrup is enabled.
  2862. * @rmtoll CR HTIE LL_DMA_IsEnabledIT_HT
  2863. * @param DMAx DMAx Instance
  2864. * @param Stream This parameter can be one of the following values:
  2865. * @arg @ref LL_DMA_STREAM_0
  2866. * @arg @ref LL_DMA_STREAM_1
  2867. * @arg @ref LL_DMA_STREAM_2
  2868. * @arg @ref LL_DMA_STREAM_3
  2869. * @arg @ref LL_DMA_STREAM_4
  2870. * @arg @ref LL_DMA_STREAM_5
  2871. * @arg @ref LL_DMA_STREAM_6
  2872. * @arg @ref LL_DMA_STREAM_7
  2873. * @retval State of bit (1 or 0).
  2874. */
  2875. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Stream)
  2876. {
  2877. uint32_t dma_base_addr = (uint32_t)DMAx;
  2878. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_HTIE) == DMA_SxCR_HTIE) ? 1UL : 0UL);
  2879. }
  2880. /**
  2881. * @brief Check if Transfer error nterrup is enabled.
  2882. * @rmtoll CR TEIE LL_DMA_IsEnabledIT_TE
  2883. * @param DMAx DMAx Instance
  2884. * @param Stream This parameter can be one of the following values:
  2885. * @arg @ref LL_DMA_STREAM_0
  2886. * @arg @ref LL_DMA_STREAM_1
  2887. * @arg @ref LL_DMA_STREAM_2
  2888. * @arg @ref LL_DMA_STREAM_3
  2889. * @arg @ref LL_DMA_STREAM_4
  2890. * @arg @ref LL_DMA_STREAM_5
  2891. * @arg @ref LL_DMA_STREAM_6
  2892. * @arg @ref LL_DMA_STREAM_7
  2893. * @retval State of bit (1 or 0).
  2894. */
  2895. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Stream)
  2896. {
  2897. uint32_t dma_base_addr = (uint32_t)DMAx;
  2898. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TEIE) == DMA_SxCR_TEIE) ? 1UL : 0UL);
  2899. }
  2900. /**
  2901. * @brief Check if Transfer complete interrup is enabled.
  2902. * @rmtoll CR TCIE LL_DMA_IsEnabledIT_TC
  2903. * @param DMAx DMAx Instance
  2904. * @param Stream This parameter can be one of the following values:
  2905. * @arg @ref LL_DMA_STREAM_0
  2906. * @arg @ref LL_DMA_STREAM_1
  2907. * @arg @ref LL_DMA_STREAM_2
  2908. * @arg @ref LL_DMA_STREAM_3
  2909. * @arg @ref LL_DMA_STREAM_4
  2910. * @arg @ref LL_DMA_STREAM_5
  2911. * @arg @ref LL_DMA_STREAM_6
  2912. * @arg @ref LL_DMA_STREAM_7
  2913. * @retval State of bit (1 or 0).
  2914. */
  2915. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Stream)
  2916. {
  2917. uint32_t dma_base_addr = (uint32_t)DMAx;
  2918. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TCIE) == DMA_SxCR_TCIE) ? 1UL : 0UL);
  2919. }
  2920. /**
  2921. * @brief Check if Direct mode error interrupt is enabled.
  2922. * @rmtoll CR DMEIE LL_DMA_IsEnabledIT_DME
  2923. * @param DMAx DMAx Instance
  2924. * @param Stream This parameter can be one of the following values:
  2925. * @arg @ref LL_DMA_STREAM_0
  2926. * @arg @ref LL_DMA_STREAM_1
  2927. * @arg @ref LL_DMA_STREAM_2
  2928. * @arg @ref LL_DMA_STREAM_3
  2929. * @arg @ref LL_DMA_STREAM_4
  2930. * @arg @ref LL_DMA_STREAM_5
  2931. * @arg @ref LL_DMA_STREAM_6
  2932. * @arg @ref LL_DMA_STREAM_7
  2933. * @retval State of bit (1 or 0).
  2934. */
  2935. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_DME(DMA_TypeDef *DMAx, uint32_t Stream)
  2936. {
  2937. uint32_t dma_base_addr = (uint32_t)DMAx;
  2938. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DMEIE) == DMA_SxCR_DMEIE) ? 1UL : 0UL);
  2939. }
  2940. /**
  2941. * @brief Check if FIFO error interrup is enabled.
  2942. * @rmtoll FCR FEIE LL_DMA_IsEnabledIT_FE
  2943. * @param DMAx DMAx Instance
  2944. * @param Stream This parameter can be one of the following values:
  2945. * @arg @ref LL_DMA_STREAM_0
  2946. * @arg @ref LL_DMA_STREAM_1
  2947. * @arg @ref LL_DMA_STREAM_2
  2948. * @arg @ref LL_DMA_STREAM_3
  2949. * @arg @ref LL_DMA_STREAM_4
  2950. * @arg @ref LL_DMA_STREAM_5
  2951. * @arg @ref LL_DMA_STREAM_6
  2952. * @arg @ref LL_DMA_STREAM_7
  2953. * @retval State of bit (1 or 0).
  2954. */
  2955. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_FE(DMA_TypeDef *DMAx, uint32_t Stream)
  2956. {
  2957. uint32_t dma_base_addr = (uint32_t)DMAx;
  2958. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FEIE) == DMA_SxFCR_FEIE) ? 1UL : 0UL);
  2959. }
  2960. /**
  2961. * @}
  2962. */
  2963. #if defined(USE_FULL_LL_DRIVER)
  2964. /** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions
  2965. * @{
  2966. */
  2967. uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Stream, LL_DMA_InitTypeDef *DMA_InitStruct);
  2968. uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Stream);
  2969. void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct);
  2970. /**
  2971. * @}
  2972. */
  2973. #endif /* USE_FULL_LL_DRIVER */
  2974. /**
  2975. * @}
  2976. */
  2977. /**
  2978. * @}
  2979. */
  2980. #endif /* DMA1 || DMA2 */
  2981. /**
  2982. * @}
  2983. */
  2984. #ifdef __cplusplus
  2985. }
  2986. #endif
  2987. #endif /* __STM32H7xx_LL_DMA_H */