py32f0xx_ll_system.h 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990
  1. /**
  2. ******************************************************************************
  3. * @file py32f0xx_ll_system.h
  4. * @author MCU Application Team
  5. * @brief Header file of SYSTEM LL module.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * <h2><center>&copy; Copyright (c) 2023 Puya Semiconductor Co.
  10. * All rights reserved.</center></h2>
  11. *
  12. * This software component is licensed by Puya under BSD 3-Clause license,
  13. * the "License"; You may not use this file except in compliance with the
  14. * License. You may obtain a copy of the License at:
  15. * opensource.org/licenses/BSD-3-Clause
  16. *
  17. ******************************************************************************
  18. * @attention
  19. *
  20. * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
  21. * All rights reserved.</center></h2>
  22. *
  23. * This software component is licensed by ST under BSD 3-Clause license,
  24. * the "License"; You may not use this file except in compliance with the
  25. * License. You may obtain a copy of the License at:
  26. * opensource.org/licenses/BSD-3-Clause
  27. *
  28. ******************************************************************************
  29. */
  30. /* Define to prevent recursive inclusion -------------------------------------*/
  31. #ifndef PY32F0XX_LL_SYSTEM_H
  32. #define PY32F0XX_LL_SYSTEM_H
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36. /* Includes ------------------------------------------------------------------*/
  37. #include "py32f0xx.h"
  38. /** @addtogroup PY32F0xx_LL_Driver
  39. * @{
  40. */
  41. #if defined (FLASH) || defined (SYSCFG) || defined (DBGMCU)
  42. /** @defgroup SYSTEM_LL SYSTEM
  43. * @{
  44. */
  45. /* Private types -------------------------------------------------------------*/
  46. /* Private variables ---------------------------------------------------------*/
  47. /* Private constants ---------------------------------------------------------*/
  48. /** @defgroup SYSTEM_LL_Private_Constants SYSTEM Private Constants
  49. * @{
  50. */
  51. /**
  52. * @}
  53. */
  54. /* Private macros ------------------------------------------------------------*/
  55. /* Exported types ------------------------------------------------------------*/
  56. /* Exported constants --------------------------------------------------------*/
  57. /** @defgroup SYSTEM_LL_Exported_Constants SYSTEM Exported Constants
  58. * @{
  59. */
  60. /** @defgroup SYSTEM_LL_EC_REMAP SYSCFG REMAP
  61. * @{
  62. */
  63. #define LL_SYSCFG_REMAP_FLASH 0x00000000U /*!< Main Flash memory mapped at 0x00000000 */
  64. #define LL_SYSCFG_REMAP_SYSTEMFLASH SYSCFG_CFGR1_MEM_MODE_0 /*!< System Flash memory mapped at 0x00000000 */
  65. #define LL_SYSCFG_REMAP_SRAM (SYSCFG_CFGR1_MEM_MODE_1 | SYSCFG_CFGR1_MEM_MODE_0) /*!< Embedded SRAM mapped at 0x00000000 */
  66. /**
  67. * @}
  68. */
  69. /** @defgroup SYSTEM_LL_EC_I2C_ANF I2C ANALOG FILTER ENABLE CONTORL
  70. * @{
  71. */
  72. #if defined(SYSCFG_CFGR1_I2C_PA2_ANF)
  73. #define LL_SYSCFG_I2C_ANF_PA2 SYSCFG_CFGR1_I2C_PA2_ANF
  74. #endif
  75. #if defined(SYSCFG_CFGR1_I2C_PA3_ANF)
  76. #define LL_SYSCFG_I2C_ANF_PA3 SYSCFG_CFGR1_I2C_PA3_ANF
  77. #endif
  78. #if defined(SYSCFG_CFGR1_I2C_PA7_ANF)
  79. #define LL_SYSCFG_I2C_ANF_PA7 SYSCFG_CFGR1_I2C_PA7_ANF
  80. #endif
  81. #if defined(SYSCFG_CFGR1_I2C_PA8_ANF)
  82. #define LL_SYSCFG_I2C_ANF_PA8 SYSCFG_CFGR1_I2C_PA8_ANF
  83. #endif
  84. #if defined(SYSCFG_CFGR1_I2C_PA9_ANF)
  85. #define LL_SYSCFG_I2C_ANF_PA9 SYSCFG_CFGR1_I2C_PA9_ANF
  86. #endif
  87. #if defined(SYSCFG_CFGR1_I2C_PA10_ANF)
  88. #define LL_SYSCFG_I2C_ANF_PA10 SYSCFG_CFGR1_I2C_PA10_ANF
  89. #endif
  90. #if defined(SYSCFG_CFGR1_I2C_PA11_ANF)
  91. #define LL_SYSCFG_I2C_ANF_PA11 SYSCFG_CFGR1_I2C_PA11_ANF
  92. #endif
  93. #if defined(SYSCFG_CFGR1_I2C_PA12_ANF)
  94. #define LL_SYSCFG_I2C_ANF_PA12 SYSCFG_CFGR1_I2C_PA12_ANF
  95. #endif
  96. #if defined(SYSCFG_CFGR1_I2C_PB6_ANF)
  97. #define LL_SYSCFG_I2C_ANF_PB6 SYSCFG_CFGR1_I2C_PB6_ANF
  98. #endif
  99. #if defined(SYSCFG_CFGR1_I2C_PB7_ANF)
  100. #define LL_SYSCFG_I2C_ANF_PB7 SYSCFG_CFGR1_I2C_PB7_ANF
  101. #endif
  102. #if defined(SYSCFG_CFGR1_I2C_PB8_ANF)
  103. #define LL_SYSCFG_I2C_ANF_PB8 SYSCFG_CFGR1_I2C_PB8_ANF
  104. #endif
  105. #if defined(SYSCFG_CFGR1_I2C_PF0_ANF)
  106. #define LL_SYSCFG_I2C_ANF_PF0 SYSCFG_CFGR1_I2C_PF0_ANF
  107. #endif
  108. #if defined(SYSCFG_CFGR1_I2C_PF1_ANF)
  109. #define LL_SYSCFG_I2C_ANF_PF1 SYSCFG_CFGR1_I2C_PF1_ANF
  110. #endif
  111. /**
  112. * @}
  113. */
  114. /** @defgroup SYSTEM_LL_EC_TIMBREAK TIMER BREAK INPUT
  115. * @{
  116. */
  117. #if defined(SYSCFG_CFGR2_LOCKUP_LOCK)
  118. #define LL_SYSCFG_TIMBREAK_LOCKUP_TO_ALL SYSCFG_CFGR2_LOCKUP_LOCK
  119. #endif
  120. #if defined(SYSCFG_CFGR2_PVD_LOCK)
  121. #define LL_SYSCFG_TIMBREAK_PVD_TO_ALL SYSCFG_CFGR2_PVD_LOCK
  122. #endif
  123. #if defined(SYSCFG_CFGR2_COMP1_BRK_TIM1)
  124. #define LL_SYSCFG_TIMBREAK_COMP1_TO_TIM1 SYSCFG_CFGR2_COMP1_BRK_TIM1
  125. #endif
  126. #if defined(SYSCFG_CFGR2_COMP2_BRK_TIM1)
  127. #define LL_SYSCFG_TIMBREAK_COMP2_TO_TIM1 SYSCFG_CFGR2_COMP2_BRK_TIM1
  128. #endif
  129. #if defined(SYSCFG_CFGR2_COMP1_BRK_TIM16)
  130. #define LL_SYSCFG_TIMBREAK_COMP1_TO_TIM16 SYSCFG_CFGR2_COMP1_BRK_TIM16
  131. #endif
  132. #if defined(SYSCFG_CFGR2_COMP2_BRK_TIM16)
  133. #define LL_SYSCFG_TIMBREAK_COMP2_TO_TIM16 SYSCFG_CFGR2_COMP2_BRK_TIM16
  134. #endif
  135. #if defined(SYSCFG_CFGR2_COMP1_BRK_TIM17)
  136. #define LL_SYSCFG_TIMBREAK_COMP1_TO_TIM17 SYSCFG_CFGR2_COMP1_BRK_TIM17
  137. #endif
  138. #if defined(SYSCFG_CFGR2_COMP2_BRK_TIM17)
  139. #define LL_SYSCFG_TIMBREAK_COMP2_TO_TIM17 SYSCFG_CFGR2_COMP2_BRK_TIM17
  140. #endif
  141. /**
  142. * @}
  143. */
  144. /** @defgroup SYSTEM_LL_EC_ETR_SRC ETR SOURCE
  145. * @{
  146. */
  147. #define LL_SYSCFG_ETR_SRC_TIM1_GPIO 0x00000000U
  148. #if defined(COMP1)
  149. #define LL_SYSCFG_ETR_SRC_TIM1_COMP1 SYSCFG_CFGR2_ETR_SRC_TIM1_0
  150. #endif
  151. #if defined(COMP2)
  152. #define LL_SYSCFG_ETR_SRC_TIM1_COMP2 SYSCFG_CFGR2_ETR_SRC_TIM1_1
  153. #endif
  154. #define LL_SYSCFG_ETR_SRC_TIM1_ADC (SYSCFG_CFGR2_ETR_SRC_TIM1_1 | SYSCFG_CFGR2_ETR_SRC_TIM1_0)
  155. /**
  156. * @}
  157. */
  158. #if (defined(DMA) || defined(DMA1))
  159. /** @defgroup SYSTEM_LL_EC_DMA_MAP DMA MAP
  160. * @{
  161. */
  162. #define LL_SYSCFG_DMA_MAP_ADC 0x00000000U
  163. #define LL_SYSCFG_DMA_MAP_SPI1_TX SYSCFG_CFGR3_DMA1_MAP_0
  164. #define LL_SYSCFG_DMA_MAP_SPI1_RX SYSCFG_CFGR3_DMA1_MAP_1
  165. #define LL_SYSCFG_DMA_MAP_SPI2_TX (SYSCFG_CFGR3_DMA1_MAP_1 | SYSCFG_CFGR3_DMA1_MAP_0)
  166. #define LL_SYSCFG_DMA_MAP_SPI2_RX SYSCFG_CFGR3_DMA1_MAP_2
  167. #define LL_SYSCFG_DMA_MAP_USART1_TX (SYSCFG_CFGR3_DMA1_MAP_2 | SYSCFG_CFGR3_DMA1_MAP_0)
  168. #define LL_SYSCFG_DMA_MAP_USART1_RX (SYSCFG_CFGR3_DMA1_MAP_2 | SYSCFG_CFGR3_DMA1_MAP_1)
  169. #define LL_SYSCFG_DMA_MAP_USART2_TX (SYSCFG_CFGR3_DMA1_MAP_2 | SYSCFG_CFGR3_DMA1_MAP_1 | SYSCFG_CFGR3_DMA1_MAP_0)
  170. #define LL_SYSCFG_DMA_MAP_USART2_RX SYSCFG_CFGR3_DMA1_MAP_3
  171. #define LL_SYSCFG_DMA_MAP_I2C_TX (SYSCFG_CFGR3_DMA1_MAP_3 | SYSCFG_CFGR3_DMA1_MAP_0)
  172. #define LL_SYSCFG_DMA_MAP_I2C_RX (SYSCFG_CFGR3_DMA1_MAP_3 | SYSCFG_CFGR3_DMA1_MAP_1)
  173. #define LL_SYSCFG_DMA_MAP_TIM1_CH1 (SYSCFG_CFGR3_DMA1_MAP_3 | SYSCFG_CFGR3_DMA1_MAP_1 | SYSCFG_CFGR3_DMA1_MAP_0)
  174. #define LL_SYSCFG_DMA_MAP_TIM1_CH2 (SYSCFG_CFGR3_DMA1_MAP_3 | SYSCFG_CFGR3_DMA1_MAP_2)
  175. #define LL_SYSCFG_DMA_MAP_TIM1_CH3 (SYSCFG_CFGR3_DMA1_MAP_3 | SYSCFG_CFGR3_DMA1_MAP_2 | SYSCFG_CFGR3_DMA1_MAP_0)
  176. #define LL_SYSCFG_DMA_MAP_TIM1_CH4 (SYSCFG_CFGR3_DMA1_MAP_3 | SYSCFG_CFGR3_DMA1_MAP_2 | SYSCFG_CFGR3_DMA1_MAP_1)
  177. #define LL_SYSCFG_DMA_MAP_TIM1_COM (SYSCFG_CFGR3_DMA1_MAP_3 | SYSCFG_CFGR3_DMA1_MAP_2 | SYSCFG_CFGR3_DMA1_MAP_1 | SYSCFG_CFGR3_DMA1_MAP_0)
  178. #define LL_SYSCFG_DMA_MAP_TIM1_UP SYSCFG_CFGR3_DMA1_MAP_4
  179. #define LL_SYSCFG_DMA_MAP_TIM1_TRIG (SYSCFG_CFGR3_DMA1_MAP_4 | SYSCFG_CFGR3_DMA1_MAP_0)
  180. #define LL_SYSCFG_DMA_MAP_TIM3_CH1 (SYSCFG_CFGR3_DMA1_MAP_4 | SYSCFG_CFGR3_DMA1_MAP_1)
  181. #define LL_SYSCFG_DMA_MAP_TIM3_CH3 (SYSCFG_CFGR3_DMA1_MAP_4 | SYSCFG_CFGR3_DMA1_MAP_1 | SYSCFG_CFGR3_DMA1_MAP_0)
  182. #define LL_SYSCFG_DMA_MAP_TIM3_CH4 (SYSCFG_CFGR3_DMA1_MAP_4 | SYSCFG_CFGR3_DMA1_MAP_2)
  183. #define LL_SYSCFG_DMA_MAP_TIM3_TRG (SYSCFG_CFGR3_DMA1_MAP_4 | SYSCFG_CFGR3_DMA1_MAP_2 | SYSCFG_CFGR3_DMA1_MAP_0)
  184. #define LL_SYSCFG_DMA_MAP_TIM3_UP (SYSCFG_CFGR3_DMA1_MAP_4 | SYSCFG_CFGR3_DMA1_MAP_2 | SYSCFG_CFGR3_DMA1_MAP_1)
  185. #define LL_SYSCFG_DMA_MAP_TIM16_CH1 (SYSCFG_CFGR3_DMA1_MAP_4 | SYSCFG_CFGR3_DMA1_MAP_3)
  186. #define LL_SYSCFG_DMA_MAP_TIM16_UP (SYSCFG_CFGR3_DMA1_MAP_4 | SYSCFG_CFGR3_DMA1_MAP_3 | SYSCFG_CFGR3_DMA1_MAP_0)
  187. #define LL_SYSCFG_DMA_MAP_TIM17_CH1 (SYSCFG_CFGR3_DMA1_MAP_4 | SYSCFG_CFGR3_DMA1_MAP_3 | SYSCFG_CFGR3_DMA1_MAP_1)
  188. #define LL_SYSCFG_DMA_MAP_TIM17_UP (SYSCFG_CFGR3_DMA1_MAP_4 | SYSCFG_CFGR3_DMA1_MAP_3 | SYSCFG_CFGR3_DMA1_MAP_1 | SYSCFG_CFGR3_DMA1_MAP_0)
  189. /**
  190. * @}
  191. */
  192. /** @defgroup SYSTEM_LL_EC_DMA_ACKLVL DMA SPEED ENABLE
  193. * @{
  194. */
  195. #define LL_SYSCFG_DMA_ACKLVL_NORM 0x00000000U
  196. #define LL_SYSCFG_DMA_ACKLVL_FAST SYSCFG_CFGR3_DMA1_ACKLVL
  197. /**
  198. * @}
  199. */
  200. /** @defgroup SYSTEM_LL_EC_DMA_CHNNEL_SHIFT DMA CHNNEL SHIFT ADDRESS
  201. * @{
  202. */
  203. #define LL_SYSCFG_DMA_CH2_SHIFT (8U)
  204. #define LL_SYSCFG_DMA_CH3_SHIFT (16U)
  205. /**
  206. * @}
  207. */
  208. #endif
  209. /** @defgroup SYSTEM_LL_EC_LATENCY FLASH LATENCY
  210. * @{
  211. */
  212. #define LL_FLASH_LATENCY_0 0x00000000U /*!< FLASH Zero Latency cycle */
  213. #define LL_FLASH_LATENCY_1 FLASH_ACR_LATENCY /*!< FLASH One Latency cycle */
  214. /**
  215. * @}
  216. */
  217. /** @defgroup SYSTEM_LL_EC_APB1_GRP1_STOP_IP DBGMCU APB1 GRP1 STOP IP
  218. * @{
  219. */
  220. #if defined(DBGMCU_APB_FZ1_DBG_TIM3_STOP)
  221. #define LL_DBGMCU_APB1_GRP1_TIM3_STOP DBGMCU_APB_FZ1_DBG_TIM3_STOP /*!< TIM3 counter stopped when core is halted */
  222. #endif
  223. #if defined(DBGMCU_APB_FZ1_DBG_RTC_STOP)
  224. #define LL_DBGMCU_APB1_GRP1_RTC_STOP DBGMCU_APB_FZ1_DBG_RTC_STOP /*!< RTC Calendar frozen when core is halted */
  225. #endif
  226. #if defined(DBGMCU_APB_FZ1_DBG_WWDG_STOP)
  227. #define LL_DBGMCU_APB1_GRP1_WWDG_STOP DBGMCU_APB_FZ1_DBG_WWDG_STOP /*!< Debug Window Watchdog stopped when Core is halted */
  228. #endif
  229. #if defined(DBGMCU_APB_FZ1_DBG_IWDG_STOP)
  230. #define LL_DBGMCU_APB1_GRP1_IWDG_STOP DBGMCU_APB_FZ1_DBG_IWDG_STOP /*!< Debug Independent Watchdog stopped when Core is halted */
  231. #endif
  232. #if defined(DBGMCU_APB_FZ1_DBG_LPTIM_STOP)
  233. #define LL_DBGMCU_APB1_GRP1_LPTIM1_STOP DBGMCU_APB_FZ1_DBG_LPTIM_STOP /*!< LPTIM1 counter stopped when Core is halted */
  234. #endif
  235. /**
  236. * @}
  237. */
  238. /** @defgroup SYSTEM_LL_EC_APB2_GRP1_STOP_IP DBGMCU APB2 GRP1 STOP IP
  239. * @{
  240. */
  241. #if defined(DBGMCU_APB_FZ2_DBG_TIM1_STOP)
  242. #define LL_DBGMCU_APB1_GRP2_TIM1_STOP DBGMCU_APB_FZ2_DBG_TIM1_STOP /*!< TIM1 counter stopped when core is halted */
  243. #endif
  244. #if defined(DBGMCU_APB_FZ2_DBG_TIM14_STOP)
  245. #define LL_DBGMCU_APB1_GRP2_TIM14_STOP DBGMCU_APB_FZ2_DBG_TIM14_STOP /*!< TIM14 counter stopped when core is halted */
  246. #endif
  247. #if defined(DBGMCU_APB_FZ2_DBG_TIM16_STOP)
  248. #define LL_DBGMCU_APB1_GRP2_TIM16_STOP DBGMCU_APB_FZ2_DBG_TIM16_STOP /*!< TIM16 counter stopped when core is halted */
  249. #endif
  250. #if defined(DBGMCU_APB_FZ2_DBG_TIM17_STOP)
  251. #define LL_DBGMCU_APB1_GRP2_TIM17_STOP DBGMCU_APB_FZ2_DBG_TIM17_STOP /*!< TIM17 counter stopped when core is halted */
  252. #endif
  253. /**
  254. * @}
  255. */
  256. /**
  257. * @}
  258. */
  259. /* Exported macro ------------------------------------------------------------*/
  260. /* Exported functions --------------------------------------------------------*/
  261. /** @defgroup SYSTEM_LL_Exported_Functions SYSTEM Exported Functions
  262. * @{
  263. */
  264. /** @defgroup SYSTEM_LL_EF_SYSCFG SYSCFG
  265. * @{
  266. */
  267. /**
  268. * @brief Set memory mapping at address 0x00000000
  269. * @rmtoll SYSCFG_CFGR1 MEM_MODE LL_SYSCFG_SetRemapMemory
  270. * @param Memory This parameter can be one of the following values:
  271. * @arg @ref LL_SYSCFG_REMAP_FLASH
  272. * @arg @ref LL_SYSCFG_REMAP_SYSTEMFLASH
  273. * @arg @ref LL_SYSCFG_REMAP_SRAM
  274. * @retval None
  275. */
  276. __STATIC_INLINE void LL_SYSCFG_SetRemapMemory(uint32_t Memory)
  277. {
  278. MODIFY_REG(SYSCFG->CFGR1, SYSCFG_CFGR1_MEM_MODE, Memory);
  279. }
  280. /**
  281. * @brief Get memory mapping at address 0x00000000
  282. * @rmtoll SYSCFG_CFGR1 MEM_MODE LL_SYSCFG_GetRemapMemory
  283. * @retval Returned value can be one of the following values:
  284. * @arg @ref LL_SYSCFG_REMAP_FLASH
  285. * @arg @ref LL_SYSCFG_REMAP_SYSTEMFLASH
  286. * @arg @ref LL_SYSCFG_REMAP_SRAM
  287. */
  288. __STATIC_INLINE uint32_t LL_SYSCFG_GetRemapMemory(void)
  289. {
  290. return (uint32_t)(READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_MEM_MODE));
  291. }
  292. /**
  293. * @brief Enable analog filtering of I2C related IO
  294. * @note Depending on devices and packages, some IOs may not be available.
  295. * Refer to device datasheet for IOs availability.
  296. * @param I2CAnalogFilter This parameter can be a combination of the following values:
  297. * @arg @ref LL_SYSCFG_I2C_ANF_PA2
  298. * @arg @ref LL_SYSCFG_I2C_ANF_PA3
  299. * @arg @ref LL_SYSCFG_I2C_ANF_PA7
  300. * @arg @ref LL_SYSCFG_I2C_ANF_PA8
  301. * @arg @ref LL_SYSCFG_I2C_ANF_PA9
  302. * @arg @ref LL_SYSCFG_I2C_ANF_PA10
  303. * @arg @ref LL_SYSCFG_I2C_ANF_PA11
  304. * @arg @ref LL_SYSCFG_I2C_ANF_PA12
  305. * @arg @ref LL_SYSCFG_I2C_ANF_PB6
  306. * @arg @ref LL_SYSCFG_I2C_ANF_PB7
  307. * @arg @ref LL_SYSCFG_I2C_ANF_PB8
  308. * @arg @ref LL_SYSCFG_I2C_ANF_PF0
  309. * @arg @ref LL_SYSCFG_I2C_ANF_PF1
  310. * @retval None
  311. */
  312. __STATIC_INLINE void LL_SYSCFG_EnableI2CAnalogFilter(uint32_t I2CAnalogFilter)
  313. {
  314. SET_BIT(SYSCFG->CFGR1, I2CAnalogFilter);
  315. }
  316. /**
  317. * @brief Disable analog filtering of I2C related IO
  318. * @note Depending on devices and packages, some IOs may not be available.
  319. * Refer to device datasheet for IOs availability.
  320. * @param I2CAnalogFilter This parameter can be a combination of the following values:
  321. * @arg @ref LL_SYSCFG_I2C_ANF_PA2
  322. * @arg @ref LL_SYSCFG_I2C_ANF_PA3
  323. * @arg @ref LL_SYSCFG_I2C_ANF_PA7
  324. * @arg @ref LL_SYSCFG_I2C_ANF_PA8
  325. * @arg @ref LL_SYSCFG_I2C_ANF_PA9
  326. * @arg @ref LL_SYSCFG_I2C_ANF_PA10
  327. * @arg @ref LL_SYSCFG_I2C_ANF_PA11
  328. * @arg @ref LL_SYSCFG_I2C_ANF_PA12
  329. * @arg @ref LL_SYSCFG_I2C_ANF_PB6
  330. * @arg @ref LL_SYSCFG_I2C_ANF_PB7
  331. * @arg @ref LL_SYSCFG_I2C_ANF_PB8
  332. * @arg @ref LL_SYSCFG_I2C_ANF_PF0
  333. * @arg @ref LL_SYSCFG_I2C_ANF_PF1
  334. * @retval None
  335. */
  336. __STATIC_INLINE void LL_SYSCFG_DisableI2CAnalogFilter(uint32_t I2CAnalogFilter)
  337. {
  338. CLEAR_BIT(SYSCFG->CFGR1, I2CAnalogFilter);
  339. }
  340. /**
  341. * @brief Indicate if enable analog filtering of I2C related IO
  342. * @note Depending on devices and packages, some IOs may not be available.
  343. * Refer to device datasheet for IOs availability.
  344. * @param I2CAnalogFilter This parameter can be one of the following values:
  345. * @arg @ref LL_SYSCFG_I2C_ANF_PA2
  346. * @arg @ref LL_SYSCFG_I2C_ANF_PA3
  347. * @arg @ref LL_SYSCFG_I2C_ANF_PA7
  348. * @arg @ref LL_SYSCFG_I2C_ANF_PA8
  349. * @arg @ref LL_SYSCFG_I2C_ANF_PA9
  350. * @arg @ref LL_SYSCFG_I2C_ANF_PA10
  351. * @arg @ref LL_SYSCFG_I2C_ANF_PA11
  352. * @arg @ref LL_SYSCFG_I2C_ANF_PA12
  353. * @arg @ref LL_SYSCFG_I2C_ANF_PB6
  354. * @arg @ref LL_SYSCFG_I2C_ANF_PB7
  355. * @arg @ref LL_SYSCFG_I2C_ANF_PB8
  356. * @arg @ref LL_SYSCFG_I2C_ANF_PF0
  357. * @arg @ref LL_SYSCFG_I2C_ANF_PF1
  358. * @retval State of bit (1 or 0).
  359. */
  360. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledI2CAnalogFilter(uint32_t I2CAnalogFilter)
  361. {
  362. return ((READ_BIT(SYSCFG->CFGR1, I2CAnalogFilter) == (I2CAnalogFilter)) ? 1UL : 0UL);
  363. }
  364. /**
  365. * @brief Enables COMPx as TIMx break input
  366. * @note Depending on devices and packages, some Peripherals may not be available.
  367. * Refer to device datasheet for Peripherals availability.
  368. * @param TIMBreakInputs This parameter can be a combination of the following values:
  369. * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP_TO_ALL
  370. * @arg @ref LL_SYSCFG_TIMBREAK_PVD_TO_ALL
  371. * @arg @ref LL_SYSCFG_TIMBREAK_COMP1_TO_TIM1
  372. * @arg @ref LL_SYSCFG_TIMBREAK_COMP2_TO_TIM1
  373. * @arg @ref LL_SYSCFG_TIMBREAK_COMP1_TO_TIM16
  374. * @arg @ref LL_SYSCFG_TIMBREAK_COMP2_TO_TIM16
  375. * @arg @ref LL_SYSCFG_TIMBREAK_COMP1_TO_TIM17
  376. * @arg @ref LL_SYSCFG_TIMBREAK_COMP2_TO_TIM17
  377. * @retval None
  378. */
  379. __STATIC_INLINE void LL_SYSCFG_EnableTIMBreakInputs(uint32_t TIMBreakInputs)
  380. {
  381. SET_BIT(SYSCFG->CFGR2, TIMBreakInputs);
  382. }
  383. /**
  384. * @brief Disables COMPx as TIMx break input
  385. * @note Depending on devices and packages, some Peripherals may not be available.
  386. * Refer to device datasheet for Peripherals availability.
  387. * @param TIMBreakInputs This parameter can be a combination of the following values:
  388. * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP_TO_ALL
  389. * @arg @ref LL_SYSCFG_TIMBREAK_PVD_TO_ALL
  390. * @arg @ref LL_SYSCFG_TIMBREAK_COMP1_TO_TIM1
  391. * @arg @ref LL_SYSCFG_TIMBREAK_COMP2_TO_TIM1
  392. * @arg @ref LL_SYSCFG_TIMBREAK_COMP1_TO_TIM16
  393. * @arg @ref LL_SYSCFG_TIMBREAK_COMP2_TO_TIM16
  394. * @arg @ref LL_SYSCFG_TIMBREAK_COMP1_TO_TIM17
  395. * @arg @ref LL_SYSCFG_TIMBREAK_COMP2_TO_TIM17
  396. * @retval None
  397. */
  398. __STATIC_INLINE void LL_SYSCFG_DisableTIMBreakInputs(uint32_t TIMBreakInputs)
  399. {
  400. CLEAR_BIT(SYSCFG->CFGR2, TIMBreakInputs);
  401. }
  402. /**
  403. * @brief Indicate if COMPx as TIMx break input
  404. * @note Depending on devices and packages, some Peripherals may not be available.
  405. * Refer to device datasheet for Peripherals availability.
  406. * @param TIMBreakInputs This parameter can be one of the following values:
  407. * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP_TO_ALL
  408. * @arg @ref LL_SYSCFG_TIMBREAK_PVD_TO_ALL
  409. * @arg @ref LL_SYSCFG_TIMBREAK_COMP1_TO_TIM1
  410. * @arg @ref LL_SYSCFG_TIMBREAK_COMP2_TO_TIM1
  411. * @arg @ref LL_SYSCFG_TIMBREAK_COMP1_TO_TIM16
  412. * @arg @ref LL_SYSCFG_TIMBREAK_COMP2_TO_TIM16
  413. * @arg @ref LL_SYSCFG_TIMBREAK_COMP1_TO_TIM17
  414. * @arg @ref LL_SYSCFG_TIMBREAK_COMP2_TO_TIM17
  415. * @retval State of bit (1 or 0).
  416. */
  417. __STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledTIMBreakInputs(uint32_t TIMBreakInputs)
  418. {
  419. return ((READ_BIT(SYSCFG->CFGR2, TIMBreakInputs) == (TIMBreakInputs)) ? 1UL : 0UL);
  420. }
  421. /**
  422. * @brief Set the TIMER1 ETR input source
  423. * @note Depending on devices and packages, some Peripherals may not be available.
  424. * Refer to device datasheet for Peripherals availability.
  425. * @param source This parameter can be one of the following values:
  426. * @arg @ref LL_SYSCFG_ETR_SRC_TIM1_GPIO
  427. * @arg @ref LL_SYSCFG_ETR_SRC_TIM1_COMP1
  428. * @arg @ref LL_SYSCFG_ETR_SRC_TIM1_COMP2
  429. * @arg @ref LL_SYSCFG_ETR_SRC_TIM1_ADC
  430. * @retval None
  431. */
  432. __STATIC_INLINE void LL_SYSCFG_SetTIM1ETRSource(uint32_t source)
  433. {
  434. MODIFY_REG(SYSCFG->CFGR2, SYSCFG_CFGR2_ETR_SRC_TIM1, source);
  435. }
  436. /**
  437. * @brief Get the TIMER1 ETR input source
  438. * @note Depending on devices and packages, some Peripherals may not be available.
  439. * Refer to device datasheet for Peripherals availability.
  440. * @retval Returned value can be one of the following values:
  441. * @arg @ref LL_SYSCFG_ETR_SRC_TIM1_GPIO
  442. * @arg @ref LL_SYSCFG_ETR_SRC_TIM1_COMP1
  443. * @arg @ref LL_SYSCFG_ETR_SRC_TIM1_COMP2
  444. * @arg @ref LL_SYSCFG_ETR_SRC_TIM1_ADC
  445. * @retval None
  446. */
  447. __STATIC_INLINE uint32_t LL_SYSCFG_GetTIM1ETRSource(void)
  448. {
  449. return (uint32_t)(READ_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_ETR_SRC_TIM1));
  450. }
  451. #if (defined(DMA) || defined(DMA1))
  452. /**
  453. * @brief Set the request image for DMA channel 1
  454. * @param Requset This parameter can be one of the following values:
  455. * @arg @ref LL_SYSCFG_DMA_MAP_ADC
  456. * @arg @ref LL_SYSCFG_DMA_MAP_SPI1_TX
  457. * @arg @ref LL_SYSCFG_DMA_MAP_SPI1_RX
  458. * @arg @ref LL_SYSCFG_DMA_MAP_SPI2_TX
  459. * @arg @ref LL_SYSCFG_DMA_MAP_SPI2_RX
  460. * @arg @ref LL_SYSCFG_DMA_MAP_USART1_TX
  461. * @arg @ref LL_SYSCFG_DMA_MAP_USART1_RX
  462. * @arg @ref LL_SYSCFG_DMA_MAP_USART2_TX
  463. * @arg @ref LL_SYSCFG_DMA_MAP_USART2_RX
  464. * @arg @ref LL_SYSCFG_DMA_MAP_I2C_TX
  465. * @arg @ref LL_SYSCFG_DMA_MAP_I2C_RX
  466. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH1
  467. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH2
  468. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH3
  469. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH4
  470. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_COM
  471. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_UP
  472. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_TRIG
  473. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH1
  474. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH3
  475. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH4
  476. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_TRG
  477. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_UP
  478. * @arg @ref LL_SYSCFG_DMA_MAP_TIM16_CH1
  479. * @arg @ref LL_SYSCFG_DMA_MAP_TIM16_UP
  480. * @arg @ref LL_SYSCFG_DMA_MAP_TIM17_CH1
  481. * @arg @ref LL_SYSCFG_DMA_MAP_TIM17_UP
  482. * @retval None
  483. */
  484. __STATIC_INLINE void LL_SYSCFG_SetDMARemap_CH1(uint32_t Requset)
  485. {
  486. MODIFY_REG(SYSCFG->CFGR3, SYSCFG_CFGR3_DMA1_MAP_Msk, Requset);
  487. }
  488. /**
  489. * @brief Gett the request image for DMA channel 1
  490. * @retval Returned value can be one of the following values:
  491. * @arg @ref LL_SYSCFG_DMA_MAP_ADC
  492. * @arg @ref LL_SYSCFG_DMA_MAP_SPI1_TX
  493. * @arg @ref LL_SYSCFG_DMA_MAP_SPI1_RX
  494. * @arg @ref LL_SYSCFG_DMA_MAP_SPI2_TX
  495. * @arg @ref LL_SYSCFG_DMA_MAP_SPI2_RX
  496. * @arg @ref LL_SYSCFG_DMA_MAP_USART1_TX
  497. * @arg @ref LL_SYSCFG_DMA_MAP_USART1_RX
  498. * @arg @ref LL_SYSCFG_DMA_MAP_USART2_TX
  499. * @arg @ref LL_SYSCFG_DMA_MAP_USART2_RX
  500. * @arg @ref LL_SYSCFG_DMA_MAP_I2C_TX
  501. * @arg @ref LL_SYSCFG_DMA_MAP_I2C_RX
  502. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH1
  503. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH2
  504. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH3
  505. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH4
  506. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_COM
  507. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_UP
  508. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_TRIG
  509. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH1
  510. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH3
  511. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH4
  512. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_TRG
  513. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_UP
  514. * @arg @ref LL_SYSCFG_DMA_MAP_TIM16_CH1
  515. * @arg @ref LL_SYSCFG_DMA_MAP_TIM16_UP
  516. * @arg @ref LL_SYSCFG_DMA_MAP_TIM17_CH1
  517. * @arg @ref LL_SYSCFG_DMA_MAP_TIM17_UP
  518. */
  519. __STATIC_INLINE uint32_t LL_SYSCFG_GetDMARemap_CH1(void)
  520. {
  521. return (uint32_t)(READ_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_DMA1_MAP_Msk));
  522. }
  523. /**
  524. * @brief Set the response speed of DMA channel 1
  525. * @param ResponseSpeed This parameter can be one of the following values:
  526. * @arg @ref LL_SYSCFG_DMA_ACKLVL_NORM
  527. * @arg @ref LL_SYSCFG_DMA_ACKLVL_FAST
  528. * @retval None
  529. */
  530. __STATIC_INLINE void LL_SYSCFG_SetDMAResponseSpeed_CH1(uint32_t ResponseSpeed)
  531. {
  532. MODIFY_REG(SYSCFG->CFGR3, SYSCFG_CFGR3_DMA1_ACKLVL, ResponseSpeed);
  533. }
  534. /**
  535. * @brief Get the response speed of DMA channel 1
  536. * @retval Returned value can be one of the following values:
  537. * @arg @ref LL_SYSCFG_DMA_ACKLVL_NORM
  538. * @arg @ref LL_SYSCFG_DMA_ACKLVL_FAST
  539. */
  540. __STATIC_INLINE uint32_t LL_SYSCFG_GetDMAResponseSpeed_CH1(void)
  541. {
  542. return (uint32_t)(READ_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_DMA1_ACKLVL));
  543. }
  544. /**
  545. * @brief Set the request image for DMA channel 2
  546. * @param Requset This parameter can be one of the following values:
  547. * @arg @ref LL_SYSCFG_DMA_MAP_ADC
  548. * @arg @ref LL_SYSCFG_DMA_MAP_SPI1_TX
  549. * @arg @ref LL_SYSCFG_DMA_MAP_SPI1_RX
  550. * @arg @ref LL_SYSCFG_DMA_MAP_SPI2_TX
  551. * @arg @ref LL_SYSCFG_DMA_MAP_SPI2_RX
  552. * @arg @ref LL_SYSCFG_DMA_MAP_USART1_TX
  553. * @arg @ref LL_SYSCFG_DMA_MAP_USART1_RX
  554. * @arg @ref LL_SYSCFG_DMA_MAP_USART2_TX
  555. * @arg @ref LL_SYSCFG_DMA_MAP_USART2_RX
  556. * @arg @ref LL_SYSCFG_DMA_MAP_I2C_TX
  557. * @arg @ref LL_SYSCFG_DMA_MAP_I2C_RX
  558. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH1
  559. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH2
  560. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH3
  561. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH4
  562. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_COM
  563. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_UP
  564. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_TRIG
  565. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH1
  566. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH3
  567. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH4
  568. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_TRG
  569. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_UP
  570. * @arg @ref LL_SYSCFG_DMA_MAP_TIM16_CH1
  571. * @arg @ref LL_SYSCFG_DMA_MAP_TIM16_UP
  572. * @arg @ref LL_SYSCFG_DMA_MAP_TIM17_CH1
  573. * @arg @ref LL_SYSCFG_DMA_MAP_TIM17_UP
  574. * @retval None
  575. */
  576. __STATIC_INLINE void LL_SYSCFG_SetDMARemap_CH2(uint32_t Requset)
  577. {
  578. MODIFY_REG(SYSCFG->CFGR3, SYSCFG_CFGR3_DMA2_MAP_Msk, (Requset << LL_SYSCFG_DMA_CH2_SHIFT));
  579. }
  580. /**
  581. * @brief Gett the request image for DMA channel 2
  582. * @retval Returned value can be one of the following values:
  583. * @arg @ref LL_SYSCFG_DMA_MAP_ADC
  584. * @arg @ref LL_SYSCFG_DMA_MAP_SPI1_TX
  585. * @arg @ref LL_SYSCFG_DMA_MAP_SPI1_RX
  586. * @arg @ref LL_SYSCFG_DMA_MAP_SPI2_TX
  587. * @arg @ref LL_SYSCFG_DMA_MAP_SPI2_RX
  588. * @arg @ref LL_SYSCFG_DMA_MAP_USART1_TX
  589. * @arg @ref LL_SYSCFG_DMA_MAP_USART1_RX
  590. * @arg @ref LL_SYSCFG_DMA_MAP_USART2_TX
  591. * @arg @ref LL_SYSCFG_DMA_MAP_USART2_RX
  592. * @arg @ref LL_SYSCFG_DMA_MAP_I2C_TX
  593. * @arg @ref LL_SYSCFG_DMA_MAP_I2C_RX
  594. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH1
  595. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH2
  596. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH3
  597. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH4
  598. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_COM
  599. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_UP
  600. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_TRIG
  601. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH1
  602. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH3
  603. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH4
  604. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_TRG
  605. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_UP
  606. * @arg @ref LL_SYSCFG_DMA_MAP_TIM16_CH1
  607. * @arg @ref LL_SYSCFG_DMA_MAP_TIM16_UP
  608. * @arg @ref LL_SYSCFG_DMA_MAP_TIM17_CH1
  609. * @arg @ref LL_SYSCFG_DMA_MAP_TIM17_UP
  610. */
  611. __STATIC_INLINE uint32_t LL_SYSCFG_GetDMARemap_CH2(void)
  612. {
  613. return (uint32_t)((READ_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_DMA2_MAP_Msk)) >> LL_SYSCFG_DMA_CH2_SHIFT);
  614. }
  615. /**
  616. * @brief Set the response speed of DMA channel 2
  617. * @param ResponseSpeed This parameter can be one of the following values:
  618. * @arg @ref LL_SYSCFG_DMA_ACKLVL_NORM
  619. * @arg @ref LL_SYSCFG_DMA_ACKLVL_FAST
  620. * @retval None
  621. */
  622. __STATIC_INLINE void LL_SYSCFG_SetDMAResponseSpeed_CH2(uint32_t ResponseSpeed)
  623. {
  624. MODIFY_REG(SYSCFG->CFGR3, SYSCFG_CFGR3_DMA2_ACKLVL, (ResponseSpeed << LL_SYSCFG_DMA_CH2_SHIFT));
  625. }
  626. /**
  627. * @brief Get the response speed of DMA channel 2
  628. * @retval Returned value can be one of the following values:
  629. * @arg @ref LL_SYSCFG_DMA_ACKLVL_NORM
  630. * @arg @ref LL_SYSCFG_DMA_ACKLVL_FAST
  631. */
  632. __STATIC_INLINE uint32_t LL_SYSCFG_GetDMAResponseSpeed_CH2(void)
  633. {
  634. return (uint32_t)((READ_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_DMA2_ACKLVL)) >> LL_SYSCFG_DMA_CH2_SHIFT);
  635. }
  636. /**
  637. * @brief Set the request image for DMA channel 3
  638. * @param Requset This parameter can be one of the following values:
  639. * @arg @ref LL_SYSCFG_DMA_MAP_ADC
  640. * @arg @ref LL_SYSCFG_DMA_MAP_SPI1_TX
  641. * @arg @ref LL_SYSCFG_DMA_MAP_SPI1_RX
  642. * @arg @ref LL_SYSCFG_DMA_MAP_SPI2_TX
  643. * @arg @ref LL_SYSCFG_DMA_MAP_SPI2_RX
  644. * @arg @ref LL_SYSCFG_DMA_MAP_USART1_TX
  645. * @arg @ref LL_SYSCFG_DMA_MAP_USART1_RX
  646. * @arg @ref LL_SYSCFG_DMA_MAP_USART2_TX
  647. * @arg @ref LL_SYSCFG_DMA_MAP_USART2_RX
  648. * @arg @ref LL_SYSCFG_DMA_MAP_I2C_TX
  649. * @arg @ref LL_SYSCFG_DMA_MAP_I2C_RX
  650. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH1
  651. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH2
  652. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH3
  653. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH4
  654. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_COM
  655. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_UP
  656. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_TRIG
  657. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH1
  658. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH3
  659. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH4
  660. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_TRG
  661. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_UP
  662. * @arg @ref LL_SYSCFG_DMA_MAP_TIM16_CH1
  663. * @arg @ref LL_SYSCFG_DMA_MAP_TIM16_UP
  664. * @arg @ref LL_SYSCFG_DMA_MAP_TIM17_CH1
  665. * @arg @ref LL_SYSCFG_DMA_MAP_TIM17_UP
  666. * @retval None
  667. */
  668. __STATIC_INLINE void LL_SYSCFG_SetDMARemap_CH3(uint32_t Requset)
  669. {
  670. MODIFY_REG(SYSCFG->CFGR3, SYSCFG_CFGR3_DMA3_MAP_Msk, (Requset << LL_SYSCFG_DMA_CH3_SHIFT));
  671. }
  672. /**
  673. * @brief Gett the request image for DMA channel 3
  674. * @retval Returned value can be one of the following values:
  675. * @arg @ref LL_SYSCFG_DMA_MAP_ADC
  676. * @arg @ref LL_SYSCFG_DMA_MAP_SPI1_TX
  677. * @arg @ref LL_SYSCFG_DMA_MAP_SPI1_RX
  678. * @arg @ref LL_SYSCFG_DMA_MAP_SPI2_TX
  679. * @arg @ref LL_SYSCFG_DMA_MAP_SPI2_RX
  680. * @arg @ref LL_SYSCFG_DMA_MAP_USART1_TX
  681. * @arg @ref LL_SYSCFG_DMA_MAP_USART1_RX
  682. * @arg @ref LL_SYSCFG_DMA_MAP_USART2_TX
  683. * @arg @ref LL_SYSCFG_DMA_MAP_USART2_RX
  684. * @arg @ref LL_SYSCFG_DMA_MAP_I2C_TX
  685. * @arg @ref LL_SYSCFG_DMA_MAP_I2C_RX
  686. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH1
  687. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH2
  688. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH3
  689. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_CH4
  690. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_COM
  691. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_UP
  692. * @arg @ref LL_SYSCFG_DMA_MAP_TIM1_TRIG
  693. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH1
  694. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH3
  695. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_CH4
  696. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_TRG
  697. * @arg @ref LL_SYSCFG_DMA_MAP_TIM3_UP
  698. * @arg @ref LL_SYSCFG_DMA_MAP_TIM16_CH1
  699. * @arg @ref LL_SYSCFG_DMA_MAP_TIM16_UP
  700. * @arg @ref LL_SYSCFG_DMA_MAP_TIM17_CH1
  701. * @arg @ref LL_SYSCFG_DMA_MAP_TIM17_UP
  702. */
  703. __STATIC_INLINE uint32_t LL_SYSCFG_GetDMARemap_CH3(void)
  704. {
  705. return (uint32_t)((READ_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_DMA3_MAP_Msk)) >> LL_SYSCFG_DMA_CH3_SHIFT);
  706. }
  707. /**
  708. * @brief Set the response speed of DMA channel 3
  709. * @param ResponseSpeed This parameter can be one of the following values:
  710. * @arg @ref LL_SYSCFG_DMA_ACKLVL_NORM
  711. * @arg @ref LL_SYSCFG_DMA_ACKLVL_FAST
  712. * @retval None
  713. */
  714. __STATIC_INLINE void LL_SYSCFG_SetDMAResponseSpeed_CH3(uint32_t ResponseSpeed)
  715. {
  716. MODIFY_REG(SYSCFG->CFGR3, SYSCFG_CFGR3_DMA3_ACKLVL, (ResponseSpeed << LL_SYSCFG_DMA_CH3_SHIFT));
  717. }
  718. /**
  719. * @brief Get the response speed of DMA channel 3
  720. * @retval Returned value can be one of the following values:
  721. * @arg @ref LL_SYSCFG_DMA_ACKLVL_NORM
  722. * @arg @ref LL_SYSCFG_DMA_ACKLVL_FAST
  723. */
  724. __STATIC_INLINE uint32_t LL_SYSCFG_GetDMAResponseSpeed_CH3(void)
  725. {
  726. return (uint32_t)((READ_BIT(SYSCFG->CFGR3, SYSCFG_CFGR3_DMA3_ACKLVL)) >> LL_SYSCFG_DMA_CH3_SHIFT);
  727. }
  728. #endif
  729. /**
  730. * @}
  731. */
  732. /** @defgroup SYSTEM_LL_EF_FLASH FLASH
  733. * @{
  734. */
  735. /**
  736. * @brief Set FLASH Latency
  737. * @rmtoll FLASH_ACR FLASH_ACR_LATENCY LL_FLASH_SetLatency
  738. * @param Latency This parameter can be one of the following values:
  739. * @arg @ref LL_FLASH_LATENCY_0
  740. * @arg @ref LL_FLASH_LATENCY_1
  741. * @retval None
  742. */
  743. __STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency)
  744. {
  745. MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency);
  746. }
  747. /**
  748. * @brief Get FLASH Latency
  749. * @rmtoll FLASH_ACR FLASH_ACR_LATENCY LL_FLASH_GetLatency
  750. * @retval Returned value can be one of the following values:
  751. * @arg @ref LL_FLASH_LATENCY_0
  752. * @arg @ref LL_FLASH_LATENCY_1
  753. */
  754. __STATIC_INLINE uint32_t LL_FLASH_GetLatency(void)
  755. {
  756. return (uint32_t)(READ_BIT(FLASH->ACR, FLASH_ACR_LATENCY));
  757. }
  758. /**
  759. * @}
  760. */
  761. /** @defgroup SYSTEM_LL_EF_DBGMCU DBGMCU
  762. * @{
  763. */
  764. /**
  765. * @brief Return the device identifier
  766. * @retval Values between Min_Data=0x00 and Max_Data=0xFFF
  767. */
  768. __STATIC_INLINE uint32_t LL_DBGMCU_GetDeviceID(void)
  769. {
  770. return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_DEV_ID));
  771. }
  772. /**
  773. * @brief Return the device revision identifier
  774. * @retval Values between Min_Data=0x00 and Max_Data=0xFFFF
  775. */
  776. __STATIC_INLINE uint32_t LL_DBGMCU_GetRevisionID(void)
  777. {
  778. return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_REV_ID) >> DBGMCU_IDCODE_REV_ID_Pos);
  779. }
  780. /**
  781. * @brief Enable the Debug Module during STOP mode
  782. * @retval None
  783. */
  784. __STATIC_INLINE void LL_DBGMCU_EnableDBGStopMode(void)
  785. {
  786. SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
  787. }
  788. /**
  789. * @brief Disable the Debug Module during STOP mode
  790. * @retval None
  791. */
  792. __STATIC_INLINE void LL_DBGMCU_DisableDBGStopMode(void)
  793. {
  794. CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP);
  795. }
  796. /**
  797. * @brief Indicate if enable the Debug Module during STOP mode
  798. * @retval State of bit (1 or 0).
  799. */
  800. __STATIC_INLINE uint32_t LL_DBGMCU_IsEnabledDBGStopMode(void)
  801. {
  802. return ((READ_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP) == (DBGMCU_CR_DBG_STOP)) ? 1UL : 0UL);
  803. }
  804. /**
  805. * @brief Freeze APB1 peripherals (group1 peripherals)
  806. * @note Depending on devices and packages, some Peripherals may not be available.
  807. * Refer to device datasheet for Peripherals availability.
  808. * @param Periphs This parameter can be a combination of the following values:
  809. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP
  810. * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP
  811. * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP
  812. * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP
  813. * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP
  814. * @retval None
  815. */
  816. __STATIC_INLINE void LL_DBGMCU_APB1_GRP1_FreezePeriph(uint32_t Periphs)
  817. {
  818. SET_BIT(DBGMCU->APBFZ1, Periphs);
  819. }
  820. /**
  821. * @brief Unfreeze APB1 peripherals (group1 peripherals)
  822. * @note Depending on devices and packages, some Peripherals may not be available.
  823. * Refer to device datasheet for Peripherals availability.
  824. * @param Periphs This parameter can be a combination of the following values:
  825. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP
  826. * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP
  827. * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP
  828. * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP
  829. * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP
  830. * @retval None
  831. */
  832. __STATIC_INLINE void LL_DBGMCU_APB1_GRP1_UnFreezePeriph(uint32_t Periphs)
  833. {
  834. CLEAR_BIT(DBGMCU->APBFZ1, Periphs);
  835. }
  836. /**
  837. * @brief Indicate if Freeze APB1 peripherals (group1 peripherals)
  838. * @note Depending on devices and packages, some Peripherals may not be available.
  839. * Refer to device datasheet for Peripherals availability.
  840. * @param Periphs This parameter can be one of the following values:
  841. * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP
  842. * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP
  843. * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP
  844. * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP
  845. * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP
  846. * @retval State of bit (1 or 0).
  847. */
  848. __STATIC_INLINE uint32_t LL_DBGMCU_APB1_GRP1_IsFreezePeriph(uint32_t Periphs)
  849. {
  850. return ((READ_BIT(DBGMCU->APBFZ1, Periphs) == (Periphs)) ? 1UL : 0UL);
  851. }
  852. /**
  853. * @brief Freeze APB1 peripherals(group2 peripherals)
  854. * @note Depending on devices and packages, some Peripherals may not be available.
  855. * Refer to device datasheet for Peripherals availability.
  856. * @param Periphs This parameter can be a combination of the following values:
  857. * @arg @ref LL_DBGMCU_APB1_GRP2_TIM1_STOP
  858. * @arg @ref LL_DBGMCU_APB1_GRP2_TIM14_STOP
  859. * @arg @ref LL_DBGMCU_APB1_GRP2_TIM16_STOP
  860. * @arg @ref LL_DBGMCU_APB1_GRP2_TIM17_STOP
  861. * @retval None
  862. */
  863. __STATIC_INLINE void LL_DBGMCU_APB1_GRP2_FreezePeriph(uint32_t Periphs)
  864. {
  865. SET_BIT(DBGMCU->APBFZ2, Periphs);
  866. }
  867. /**
  868. * @brief Unfreeze APB1 peripherals(group2 peripherals)
  869. * @note Depending on devices and packages, some Peripherals may not be available.
  870. * Refer to device datasheet for Peripherals availability.
  871. * @param Periphs This parameter can be a combination of the following values:
  872. * @arg @ref LL_DBGMCU_APB1_GRP2_TIM1_STOP
  873. * @arg @ref LL_DBGMCU_APB1_GRP2_TIM14_STOP
  874. * @arg @ref LL_DBGMCU_APB1_GRP2_TIM16_STOP
  875. * @arg @ref LL_DBGMCU_APB1_GRP2_TIM17_STOP
  876. * @retval None
  877. */
  878. __STATIC_INLINE void LL_DBGMCU_APB1_GRP2_UnFreezePeriph(uint32_t Periphs)
  879. {
  880. CLEAR_BIT(DBGMCU->APBFZ2, Periphs);
  881. }
  882. /**
  883. * @brief Indicate if Freeze APB1 peripherals (group2 peripherals)
  884. * @note Depending on devices and packages, some Peripherals may not be available.
  885. * Refer to device datasheet for Peripherals availability.
  886. * @param Periphs This parameter can be one of the following values:
  887. * @arg @ref LL_DBGMCU_APB1_GRP2_TIM1_STOP
  888. * @arg @ref LL_DBGMCU_APB1_GRP2_TIM14_STOP
  889. * @arg @ref LL_DBGMCU_APB1_GRP2_TIM16_STOP
  890. * @arg @ref LL_DBGMCU_APB1_GRP2_TIM17_STOP
  891. * @retval State of bit (1 or 0).
  892. */
  893. __STATIC_INLINE uint32_t LL_DBGMCU_APB1_GRP2_IsFreezePeriph(uint32_t Periphs)
  894. {
  895. return ((READ_BIT(DBGMCU->APBFZ2, Periphs) == (Periphs)) ? 1UL : 0UL);
  896. }
  897. /**
  898. * @}
  899. */
  900. /**
  901. * @}
  902. */
  903. /**
  904. * @}
  905. */
  906. #endif /* defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) */
  907. /**
  908. * @}
  909. */
  910. #ifdef __cplusplus
  911. }
  912. #endif
  913. #endif /* PY32F0XX_LL_SYSTEM_H */
  914. /************************ (C) COPYRIGHT Puya *****END OF FILE****/