| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409 |
- /**
- ******************************************************************************
- * @file py32f0xx_ll_flash.h
- * @author MCU Application Team
- * @brief Header file of FLASH LL module.
- ******************************************************************************
- * @attention
- *
- * <h2><center>© Copyright (c) 2023 Puya Semiconductor Co.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by Puya under BSD 3-Clause license,
- * the "License"; You may not use this file except in compliance with the
- * License. You may obtain a copy of the License at:
- * opensource.org/licenses/BSD-3-Clause
- *
- ******************************************************************************
- * @attention
- *
- * <h2><center>© Copyright (c) 2016 STMicroelectronics.
- * All rights reserved.</center></h2>
- *
- * This software component is licensed by ST under BSD 3-Clause license,
- * the "License"; You may not use this file except in compliance with the
- * License. You may obtain a copy of the License at:
- * opensource.org/licenses/BSD-3-Clause
- *
- ******************************************************************************
- */
- /* Define to prevent recursive inclusion -------------------------------------*/
- #ifndef PY32F0XX_LL_FLASH_H
- #define PY32F0XX_LL_FLASH_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* Includes ------------------------------------------------------------------*/
- #include "py32f0xx.h"
- /** @addtogroup PY32F0xx_LL_Driver
- * @{
- */
- #if defined (FLASH)
- /** @defgroup FLASH_LL FLASH
- * @{
- */
- /* Private types -------------------------------------------------------------*/
- /* Private variables ---------------------------------------------------------*/
- /* Private macros ------------------------------------------------------------*/
- /* Exported constants --------------------------------------------------------*/
- /** @defgroup FLASH_LL_Exported_Constants FLASH Exported Constants
- * @{
- */
- /** @defgroup FLASH_LL_EC_BOR_LEVEL BOR Level
- * @{
- */
- #define LL_FLASH_BOR_LEV0 (0x00000000) /*!< BOR Reset threshold levels for 1.7V - 1.8V VDD power supply */
- #define LL_FLASH_BOR_LEV1 ( FLASH_OPTR_BOR_LEV_0) /*!< BOR Reset threshold levels for 1.9V - 2.0V VDD power supply */
- #define LL_FLASH_BOR_LEV2 ( FLASH_OPTR_BOR_LEV_1 ) /*!< BOR Reset threshold levels for 2.1V - 2.2V VDD power supply */
- #define LL_FLASH_BOR_LEV3 ( FLASH_OPTR_BOR_LEV_1 | FLASH_OPTR_BOR_LEV_0) /*!< BOR Reset threshold levels for 2.3V - 2.4V VDD power supply */
- #define LL_FLASH_BOR_LEV4 (FLASH_OPTR_BOR_LEV_2 ) /*!< BOR Reset threshold levels for 2.5V - 2.6V VDD power supply */
- #define LL_FLASH_BOR_LEV5 (FLASH_OPTR_BOR_LEV_2 | FLASH_OPTR_BOR_LEV_0) /*!< BOR Reset threshold levels for 2.7V - 2.8V VDD power supply */
- #define LL_FLASH_BOR_LEV6 (FLASH_OPTR_BOR_LEV_2 | FLASH_OPTR_BOR_LEV_1 ) /*!< BOR Reset threshold levels for 2.9V - 3.0V VDD power supply */
- #define LL_FLASH_BOR_LEV7 (FLASH_OPTR_BOR_LEV_2 | FLASH_OPTR_BOR_LEV_1 | FLASH_OPTR_BOR_LEV_0) /*!< BOR Reset threshold levels for 3.1V - 3.2V VDD power supply */
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EC_BOR_ENABLE BOR Enable
- * @{
- */
- #define LL_FLASH_BOR_DISABLE (0x00000000U) /*!< BOR Reset Disable */
- #define LL_FLASH_BOR_ENABLE (FLASH_OPTR_BOR_EN) /*!< BOR Reset Enable */
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EC_nBOOT1 nBOOT1 Set
- * @{
- */
- #define LL_FLASH_NBOOT1_CLR (0x00000000U)
- #define LL_FLASH_NBOOT1_SET (FLASH_OPTR_nBOOT1)
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EC_NRST Nrst Mode
- * @{
- */
- #define LL_FLASH_NRST_MODE_RESET (0x00000000U) /*!< PF2:NRST */
- #define LL_FLASH_NRST_MODE_GPIO (FLASH_OPTR_NRST_MODE) /*!< PF2:GPIO */
- /**
- * @}
- */
- #ifdef FLASH_OPTR_WWDG_SW
- /** @defgroup FLASH_LL_EC_WWDGMODE WWDG Mode
- * @{
- */
- #define LL_FLASH_WWDG_MODE_HW (0x00000000U) /*!< Hardware WWDG selected */
- #define LL_FLASH_WWDG_MODE_SW (FLASH_OPTR_WWDG_SW) /*!< Software WWDG selected */
- /**
- * @}
- */
- #endif
- /** @defgroup FLASH_LL_EC_IWDGMODE IWDG Mode
- * @{
- */
- #define LL_FLASH_IWDG_MODE_HW (0x00000000U) /*!< Hardware IWDG selected */
- #define LL_FLASH_IWDG_MODE_SW (FLASH_OPTR_IWDG_SW) /*!< Software IWDG selected */
- /**
- * @}
- */
-
- /** @defgroup FLASH_LL_EC_RDP RDP Mode
- * @{
- */
- #define LL_FLASH_RDP_LEVEL_0 ((uint8_t)0xAAU)
- #define LL_FLASH_RDP_LEVEL_1 ((uint8_t)0x55U)
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EC_WRP Write Protection
- * @{
- */
- #define LL_FLASH_WRP_DISABLE ((uint32_t)0x00000000) /* Write protection disable */
- #define LL_FLASH_WRP_SECTOR_0 ((uint32_t)FLASH_WRPR_WRP_0) /* Write protection of Sector0 */
- #define LL_FLASH_WRP_SECTOR_1 ((uint32_t)FLASH_WRPR_WRP_1) /* Write protection of Sector1 */
- #define LL_FLASH_WRP_SECTOR_2 ((uint32_t)FLASH_WRPR_WRP_2) /* Write protection of Sector2 */
- #define LL_FLASH_WRP_SECTOR_3 ((uint32_t)FLASH_WRPR_WRP_3) /* Write protection of Sector3 */
- #define LL_FLASH_WRP_SECTOR_4 ((uint32_t)FLASH_WRPR_WRP_4) /* Write protection of Sector4 */
- #if !defined (PY32F002APRE)
- #define LL_FLASH_WRP_SECTOR_5 ((uint32_t)FLASH_WRPR_WRP_5) /* Write protection of Sector5 */
- #define LL_FLASH_WRP_SECTOR_6 ((uint32_t)FLASH_WRPR_WRP_6) /* Write protection of Sector6 */
- #define LL_FLASH_WRP_SECTOR_7 ((uint32_t)FLASH_WRPR_WRP_7) /* Write protection of Sector7 */
- #define LL_FLASH_WRP_SECTOR_8 ((uint32_t)FLASH_WRPR_WRP_8) /* Write protection of Sector8 */
- #define LL_FLASH_WRP_SECTOR_9 ((uint32_t)FLASH_WRPR_WRP_9) /* Write protection of Sector9 */
- #define LL_FLASH_WRP_SECTOR_10 ((uint32_t)FLASH_WRPR_WRP_10) /* Write protection of Sector10 */
- #define LL_FLASH_WRP_SECTOR_11 ((uint32_t)FLASH_WRPR_WRP_11) /* Write protection of Sector11 */
- #define LL_FLASH_WRP_SECTOR_12 ((uint32_t)FLASH_WRPR_WRP_12) /* Write protection of Sector12 */
- #define LL_FLASH_WRP_SECTOR_13 ((uint32_t)FLASH_WRPR_WRP_13) /* Write protection of Sector13 */
- #define LL_FLASH_WRP_SECTOR_14 ((uint32_t)FLASH_WRPR_WRP_14) /* Write protection of Sector14 */
- #define LL_FLASH_WRP_SECTOR_15 ((uint32_t)FLASH_WRPR_WRP_15) /* Write protection of Sector15 */
- #endif
- #define LL_FLASH_WRP_Pages0to31 ((uint32_t)FLASH_WRPR_WRP_0) /* Write protection from page0 to page31 */
- #define LL_FLASH_WRP_Pages32to63 ((uint32_t)FLASH_WRPR_WRP_1) /* Write protection from page32 to page63 */
- #define LL_FLASH_WRP_Pages64to95 ((uint32_t)FLASH_WRPR_WRP_2) /* Write protection from page64 to page95 */
- #define LL_FLASH_WRP_Pages96to127 ((uint32_t)FLASH_WRPR_WRP_3) /* Write protection from page96 to page127 */
- #define LL_FLASH_WRP_Pages128to159 ((uint32_t)FLASH_WRPR_WRP_4) /* Write protection from page128 to page159 */
- #if !defined (PY32F002APRE)
- #define LL_FLASH_WRP_Pages160to191 ((uint32_t)FLASH_WRPR_WRP_5) /* Write protection from page160 to page191 */
- #define LL_FLASH_WRP_Pages192to223 ((uint32_t)FLASH_WRPR_WRP_6) /* Write protection from page192 to page223 */
- #define LL_FLASH_WRP_Pages224to255 ((uint32_t)FLASH_WRPR_WRP_7) /* Write protection from page224 to page255 */
- #define LL_FLASH_WRP_Pages256to287 ((uint32_t)FLASH_WRPR_WRP_8) /* Write protection from page256 to page287 */
- #define LL_FLASH_WRP_Pages288to319 ((uint32_t)FLASH_WRPR_WRP_9) /* Write protection from page288 to page319 */
- #define LL_FLASH_WRP_Pages320to351 ((uint32_t)FLASH_WRPR_WRP_10) /* Write protection from page320 to page351 */
- #define LL_FLASH_WRP_Pages352to383 ((uint32_t)FLASH_WRPR_WRP_11) /* Write protection from page352 to page383 */
- #define LL_FLASH_WRP_Pages384to415 ((uint32_t)FLASH_WRPR_WRP_12) /* Write protection from page384 to page415 */
- #define LL_FLASH_WRP_Pages416to447 ((uint32_t)FLASH_WRPR_WRP_13) /* Write protection from page416 to page447 */
- #define LL_FLASH_WRP_Pages448to479 ((uint32_t)FLASH_WRPR_WRP_14) /* Write protection from page448 to page479 */
- #define LL_FLASH_WRP_Pages480to511 ((uint32_t)FLASH_WRPR_WRP_15) /* Write protection from page480 to page511 */
- #endif
- #if !defined (PY32F002APRE)
- #define LL_FLASH_WRP_AllPages ((uint32_t)0x000000FFU) /*!< Write protection of all Sectors */
- #else
- #define LL_FLASH_WRP_AllPages ((uint32_t)0x0000001FU) /*!< Write protection of all Sectors */
- #endif
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EC_SDK SDK Address
- * @{
- */
- #define LL_FLASH_SDKSTARTADDRESS_0X08000000 (0x00000000)
- #define LL_FLASH_SDKSTARTADDRESS_0X08000800 ( FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X08001000 ( FLASH_SDKR_SDK_STRT_1 )
- #define LL_FLASH_SDKSTARTADDRESS_0X08001800 ( FLASH_SDKR_SDK_STRT_1 | FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X08002000 ( FLASH_SDKR_SDK_STRT_2 )
- #define LL_FLASH_SDKSTARTADDRESS_0X08002800 ( FLASH_SDKR_SDK_STRT_2 | FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X08003000 ( FLASH_SDKR_SDK_STRT_2 | FLASH_SDKR_SDK_STRT_1 )
- #define LL_FLASH_SDKSTARTADDRESS_0X08003800 ( FLASH_SDKR_SDK_STRT_2 | FLASH_SDKR_SDK_STRT_1 | FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X08004000 ( FLASH_SDKR_SDK_STRT_3 )
- #define LL_FLASH_SDKSTARTADDRESS_0X08004800 ( FLASH_SDKR_SDK_STRT_3 | FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X08005000 ( FLASH_SDKR_SDK_STRT_3 | FLASH_SDKR_SDK_STRT_1 )
- #define LL_FLASH_SDKSTARTADDRESS_0X08005800 ( FLASH_SDKR_SDK_STRT_3 | FLASH_SDKR_SDK_STRT_1 | FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X08006000 ( FLASH_SDKR_SDK_STRT_3 | FLASH_SDKR_SDK_STRT_2 | )
- #define LL_FLASH_SDKSTARTADDRESS_0X08006800 ( FLASH_SDKR_SDK_STRT_3 | FLASH_SDKR_SDK_STRT_2 | | FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X08007000 ( FLASH_SDKR_SDK_STRT_3 | FLASH_SDKR_SDK_STRT_2 | FLASH_SDKR_SDK_STRT_1 )
- #define LL_FLASH_SDKSTARTADDRESS_0X08007800 ( FLASH_SDKR_SDK_STRT_3 | FLASH_SDKR_SDK_STRT_2 | FLASH_SDKR_SDK_STRT_1 | FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X08008000 (FLASH_SDKR_SDK_STRT_4 )
- #define LL_FLASH_SDKSTARTADDRESS_0X08008800 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X08009000 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_1 )
- #define LL_FLASH_SDKSTARTADDRESS_0X08009800 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_1 | FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X0800A000 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_2 )
- #define LL_FLASH_SDKSTARTADDRESS_0X0800A800 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_2 | FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X0800B000 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_2 | FLASH_SDKR_SDK_STRT_1 )
- #define LL_FLASH_SDKSTARTADDRESS_0X0800B800 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_2 | FLASH_SDKR_SDK_STRT_1 | FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X0800C000 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_3 )
- #define LL_FLASH_SDKSTARTADDRESS_0X0800C800 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_3 FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X0800D000 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_3 | FLASH_SDKR_SDK_STRT_1 )
- #define LL_FLASH_SDKSTARTADDRESS_0X0800D800 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_3 | FLASH_SDKR_SDK_STRT_1 | FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X0800E000 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_3 | FLASH_SDKR_SDK_STRT_2 )
- #define LL_FLASH_SDKSTARTADDRESS_0X0800E800 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_3 | FLASH_SDKR_SDK_STRT_2 | FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKSTARTADDRESS_0X0800F000 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_3 | FLASH_SDKR_SDK_STRT_2 | FLASH_SDKR_SDK_STRT_1 )
- #define LL_FLASH_SDKSTARTADDRESS_0X0800F800 (FLASH_SDKR_SDK_STRT_4 | FLASH_SDKR_SDK_STRT_3 | FLASH_SDKR_SDK_STRT_2 | FLASH_SDKR_SDK_STRT_1 | FLASH_SDKR_SDK_STRT_0)
- #define LL_FLASH_SDKENDADDRESS_0X080007FF (0x00000000)
- #define LL_FLASH_SDKENDADDRESS_0X08000FFF ( FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X080017FF ( FLASH_SDKR_SDK_END_1 )
- #define LL_FLASH_SDKENDADDRESS_0X08001FFF ( FLASH_SDKR_SDK_END_1 | FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X080027FF ( FLASH_SDKR_SDK_END_2 )
- #define LL_FLASH_SDKENDADDRESS_0X08002FFF ( FLASH_SDKR_SDK_END_2 | FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X080037FF ( FLASH_SDKR_SDK_END_2 | FLASH_SDKR_SDK_END_1 )
- #define LL_FLASH_SDKENDADDRESS_0X08003FFF ( FLASH_SDKR_SDK_END_2 | FLASH_SDKR_SDK_END_1 | FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X080047FF ( FLASH_SDKR_SDK_END_3 )
- #define LL_FLASH_SDKENDADDRESS_0X08004FFF ( FLASH_SDKR_SDK_END_3 | FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X080057FF ( FLASH_SDKR_SDK_END_3 | FLASH_SDKR_SDK_END_1 )
- #define LL_FLASH_SDKENDADDRESS_0X08005FFF ( FLASH_SDKR_SDK_END_3 | FLASH_SDKR_SDK_END_1 | FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X080067FF ( FLASH_SDKR_SDK_END_3 | FLASH_SDKR_SDK_END_2 | )
- #define LL_FLASH_SDKENDADDRESS_0X08006FFF ( FLASH_SDKR_SDK_END_3 | FLASH_SDKR_SDK_END_2 | | FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X080077FF ( FLASH_SDKR_SDK_END_3 | FLASH_SDKR_SDK_END_2 | FLASH_SDKR_SDK_END_1 )
- #define LL_FLASH_SDKENDADDRESS_0X08007FFF ( FLASH_SDKR_SDK_END_3 | FLASH_SDKR_SDK_END_2 | FLASH_SDKR_SDK_END_1 | FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X080087FF (FLASH_SDKR_SDK_END_4 )
- #define LL_FLASH_SDKENDADDRESS_0X08008FFF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X080097FF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_1 )
- #define LL_FLASH_SDKENDADDRESS_0X08009FFF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_1 | FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X0800A7FF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_2 )
- #define LL_FLASH_SDKENDADDRESS_0X0800AFFF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_2 | FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X0800B7FF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_2 | FLASH_SDKR_SDK_END_1 )
- #define LL_FLASH_SDKENDADDRESS_0X0800BFFF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_2 | FLASH_SDKR_SDK_END_1 | FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X0800C7FF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_3 )
- #define LL_FLASH_SDKENDADDRESS_0X0800CFFF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_3 FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X0800D7FF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_3 | FLASH_SDKR_SDK_END_1 )
- #define LL_FLASH_SDKENDADDRESS_0X0800DFFF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_3 | FLASH_SDKR_SDK_END_1 | FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X0800E7FF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_3 | FLASH_SDKR_SDK_END_2 )
- #define LL_FLASH_SDKENDADDRESS_0X0800EFFF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_3 | FLASH_SDKR_SDK_END_2 | FLASH_SDKR_SDK_END_0)
- #define LL_FLASH_SDKENDADDRESS_0X0800F7FF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_3 | FLASH_SDKR_SDK_END_2 | FLASH_SDKR_SDK_END_1 )
- #define LL_FLASH_SDKENDADDRESS_0X0800FFFF (FLASH_SDKR_SDK_END_4 | FLASH_SDKR_SDK_END_3 | FLASH_SDKR_SDK_END_2 | FLASH_SDKR_SDK_END_1 | FLASH_SDKR_SDK_END_0)
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EC_KEY Key Value
- * @{
- */
- #define LL_FLASH_KEY1 (FLASH_KEY1)
- #define LL_FLASH_KEY2 (FLASH_KEY2)
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EC_OPTKEY Optkey Value
- * @{
- */
- #define LL_FLASH_OPTKEY1 (FLASH_OPTKEY1)
- #define LL_FLASH_OPTKEY2 (FLASH_OPTKEY2)
- /**
- * @}
- */
- /**
- * @}
- */
- #if !defined (PY32F002APRE)
- #define LL_FLASH_TIMMING_SEQUENCE_CONFIG_4M() \
- do { \
- FLASH->TS0 = (*(uint32_t *)(0x1FFF0F1C))&0xFF; \
- FLASH->TS1 = ((*(uint32_t *)(0x1FFF0F1C))>>16)&0x1FF; \
- FLASH->TS3 = ((*(uint32_t *)(0x1FFF0F1C))>>8)&0xFF; \
- FLASH->TS2P = (*(uint32_t *)(0x1FFF0F20))&0xFF; \
- FLASH->TPS3 = ((*(uint32_t *)(0x1FFF0F20))>>16)&0x7FF; \
- FLASH->PERTPE = (*(uint32_t *)(0x1FFF0F24))&0x1FFFF; \
- FLASH->SMERTPE = (*(uint32_t *)(0x1FFF0F28))&0x1FFFF; \
- FLASH->PRGTPE = (*(uint32_t *)(0x1FFF0F2C))&0xFFFF; \
- FLASH->PRETPE = ((*(uint32_t *)(0x1FFF0F2C))>>16)&0xFFF; \
- } while(0U)
- #define LL_FLASH_TIMMING_SEQUENCE_CONFIG_16M() \
- do { \
- FLASH->TS0 = (*(uint32_t *)(0x1FFF0F44))&0xFF; \
- FLASH->TS1 = ((*(uint32_t *)(0x1FFF0F44))>>16)&0x1FF; \
- FLASH->TS3 = ((*(uint32_t *)(0x1FFF0F44))>>8)&0xFF; \
- FLASH->TS2P = (*(uint32_t *)(0x1FFF0F48))&0xFF; \
- FLASH->TPS3 = ((*(uint32_t *)(0x1FFF0F48))>>16)&0x7FF; \
- FLASH->PERTPE = (*(uint32_t *)(0x1FFF0F4C))&0x1FFFF; \
- FLASH->SMERTPE = (*(uint32_t *)(0x1FFF0F50))&0x1FFFF; \
- FLASH->PRGTPE = (*(uint32_t *)(0x1FFF0F54))&0xFFFF; \
- FLASH->PRETPE = ((*(uint32_t *)(0x1FFF0F54))>>16)&0xFFF; \
- } while(0U)
- #define LL_FLASH_TIMMING_SEQUENCE_CONFIG_22P12M() \
- do { \
- FLASH->TS0 = (*(uint32_t *)(0x1FFF0F58))&0xFF; \
- FLASH->TS1 = ((*(uint32_t *)(0x1FFF0F58))>>16)&0x1FF; \
- FLASH->TS3 = ((*(uint32_t *)(0x1FFF0F58))>>8)&0xFF; \
- FLASH->TS2P = (*(uint32_t *)(0x1FFF0F5C))&0xFF; \
- FLASH->TPS3 = ((*(uint32_t *)(0x1FFF0F5C))>>16)&0x7FF; \
- FLASH->PERTPE = (*(uint32_t *)(0x1FFF0F60))&0x1FFFF; \
- FLASH->SMERTPE = (*(uint32_t *)(0x1FFF0F64))&0x1FFFF; \
- FLASH->PRGTPE = (*(uint32_t *)(0x1FFF0F68))&0xFFFF; \
- FLASH->PRETPE = ((*(uint32_t *)(0x1FFF0F68))>>16)&0xFFF; \
- } while(0U)
- #endif
- #define LL_FLASH_TIMMING_SEQUENCE_CONFIG_8M() \
- do { \
- FLASH->TS0 = (*(uint32_t *)(0x1FFF0F30))&0xFF; \
- FLASH->TS1 = ((*(uint32_t *)(0x1FFF0F30))>>16)&0x1FF; \
- FLASH->TS3 = ((*(uint32_t *)(0x1FFF0F30))>>8)&0xFF; \
- FLASH->TS2P = (*(uint32_t *)(0x1FFF0F34))&0xFF; \
- FLASH->TPS3 = ((*(uint32_t *)(0x1FFF0F34))>>16)&0x7FF; \
- FLASH->PERTPE = (*(uint32_t *)(0x1FFF0F38))&0x1FFFF; \
- FLASH->SMERTPE = (*(uint32_t *)(0x1FFF0F3C))&0x1FFFF; \
- FLASH->PRGTPE = (*(uint32_t *)(0x1FFF0F40))&0xFFFF; \
- FLASH->PRETPE = ((*(uint32_t *)(0x1FFF0F40))>>16)&0xFFF; \
- } while(0U)
- #define LL_FLASH_TIMMING_SEQUENCE_CONFIG_24M() \
- do { \
- FLASH->TS0 = (*(uint32_t *)(0x1FFF0F6C))&0xFF; \
- FLASH->TS1 = ((*(uint32_t *)(0x1FFF0F6C))>>16)&0x1FF; \
- FLASH->TS3 = ((*(uint32_t *)(0x1FFF0F6C))>>8)&0xFF; \
- FLASH->TS2P = (*(uint32_t *)(0x1FFF0F70))&0xFF; \
- FLASH->TPS3 = ((*(uint32_t *)(0x1FFF0F70))>>16)&0x7FF; \
- FLASH->PERTPE = (*(uint32_t *)(0x1FFF0F74))&0x1FFFF; \
- FLASH->SMERTPE = (*(uint32_t *)(0x1FFF0F78))&0x1FFFF; \
- FLASH->PRGTPE = (*(uint32_t *)(0x1FFF0F7C))&0xFFFF; \
- FLASH->PRETPE = ((*(uint32_t *)(0x1FFF0F7C))>>16)&0xFFF; \
- } while(0U)
- /* Exported macro ------------------------------------------------------------*/
- /** @defgroup FLASH_LL_Exported_Macros FLASH Exported Macros
- * @{
- */
- /** @defgroup FLASH_LL_EM_WRITE_READ Common Write and read registers Macros
- * @{
- */
- /**
- * @brief Write a value in FLASH register
- * @param __INSTANCE__ FLASH Instance
- * @param __REG__ Register to be written
- * @param __VALUE__ Value to be written in the register
- * @retval None
- */
- #define LL_FLASH_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
- /**
- * @brief Read a value in FLASH register
- * @param __INSTANCE__ FLASH Instance
- * @param __REG__ Register to be read
- * @retval Register value
- */
- #define LL_FLASH_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
- /**
- * @}
- */
- /**
- * @}
- */
- /* Exported functions --------------------------------------------------------*/
- /** @defgroup FLASH_LL_Exported_Functions FLASH Exported Functions
- * @{
- */
- /** @defgroup FLASH_LL_EF_FLAG_Management Flag Management
- * @{
- */
- /**
- * @brief Indicate the status of End of operation flag.
- * @rmtoll SR EOP LL_FLASH_IsActiveFlag_EOP
- * @param FLASHx FLASH Instance.
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsActiveFlag_EOP(FLASH_TypeDef *FLASHx)
- {
- return (READ_BIT(FLASHx->SR, FLASH_SR_EOP) == (FLASH_SR_EOP));
- }
- /**
- * @brief Indicate the status of WRPERR flag.
- * @rmtoll SR WPRERR LL_FLASH_IsActiveFlag_WRPERR
- * @param FLASHx FLASH Instance.
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsActiveFlag_WRPERR(FLASH_TypeDef *FLASHx)
- {
- return (READ_BIT(FLASHx->SR, FLASH_SR_WRPERR) == (FLASH_SR_WRPERR));
- }
- /**
- * @brief Indicate the status of OPTVERR flag.
- * @rmtoll SR OPTVERR LL_FLASH_IsActiveFlag_OPTVERR
- * @param FLASHx FLASH Instance.
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsActiveFlag_OPTVERR(FLASH_TypeDef *FLASHx)
- {
- return (READ_BIT(FLASHx->SR, FLASH_SR_OPTVERR) == (FLASH_SR_OPTVERR));
- }
- /**
- * @brief Indicate the status of BUSY flag.
- * @rmtoll SR BSY LL_FLASH_IsActiveFlag_BUSY
- * @param FLASHx FLASH Instance.
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsActiveFlag_BUSY(FLASH_TypeDef *FLASHx)
- {
- return (READ_BIT(FLASHx->SR, FLASH_SR_BSY) == (FLASH_SR_BSY));
- }
- /**
- * @brief Clear End of operation flag.
- * @rmtoll SR EOP LL_FLASH_ClearFlag_EOP
- * @param FLASHx FLASH Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_ClearFlag_EOP(FLASH_TypeDef *FLASHx)
- {
- WRITE_REG(FLASHx->SR, FLASH_SR_EOP);
- }
- /**
- * @brief Clear WRPERR flag.
- * @rmtoll SR WRPERR LL_FLASH_ClearFlag_WRPERR
- * @param FLASHx FLASH Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_ClearFlag_WRPERR(FLASH_TypeDef *FLASHx)
- {
- WRITE_REG(FLASHx->SR, FLASH_SR_WRPERR);
- }
- /**
- * @brief Clear OPTVERR flag.
- * @rmtoll SR OPTVERR LL_FLASH_ClearFlag_OPTVERR
- * @param FLASHx FLASH Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_ClearFlag_OPTVERR(FLASH_TypeDef *FLASHx)
- {
- WRITE_REG(FLASHx->SR, FLASH_SR_OPTVERR);
- }
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EF_ERASE_Management Erase Management
- * @{
- */
- /**
- * @brief Enable Page Program
- * @rmtoll CR PG LL_FLASH_EnablePageProgram
- * @param FLASHx FLASH Instance
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_EnablePageProgram(FLASH_TypeDef *FLASHx)
- {
- SET_BIT(FLASHx->CR, FLASH_CR_PG);
- }
- /**
- * @brief Enable Mass Erase
- * @rmtoll CR MER LL_FLASH_EnableMassErase
- * @param FLASHx FLASH Instance
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_EnableMassErase(FLASH_TypeDef *FLASHx)
- {
- SET_BIT(FLASHx->CR, FLASH_CR_MER);
- }
- /**
- * @brief Enable Page Erase
- * @rmtoll CR PER LL_FLASH_EnablePageErase
- * @param FLASHx FLASH Instance
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_EnablePageErase(FLASH_TypeDef *FLASHx)
- {
- SET_BIT(FLASHx->CR, FLASH_CR_PER);
- }
- /**
- * @brief Enable Sector Erase
- * @rmtoll CR SER LL_FLASH_EnableSectorErase
- * @param FLASHx FLASH Instance
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_EnableSectorErase(FLASH_TypeDef *FLASHx)
- {
- SET_BIT(FLASHx->CR, FLASH_CR_SER);
- }
- /**
- * @brief Disable Page Program
- * @rmtoll CR PG LL_FLASH_DisablePageProgram
- * @param FLASHx FLASH Instance
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_DisablePageProgram(FLASH_TypeDef *FLASHx)
- {
- CLEAR_BIT(FLASHx->CR, FLASH_CR_PG);
- }
- /**
- * @brief Disable Mass Erase
- * @rmtoll CR MER LL_FLASH_DisableMassErase
- * @param FLASHx FLASH Instance
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_DisableMassErase(FLASH_TypeDef *FLASHx)
- {
- CLEAR_BIT(FLASHx->CR, FLASH_CR_MER);
- }
- /**
- * @brief Disable Page Erase
- * @rmtoll CR PER LL_FLASH_DisablePageErase
- * @param FLASHx FLASH Instance
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_DisablePageErase(FLASH_TypeDef *FLASHx)
- {
- CLEAR_BIT(FLASHx->CR, FLASH_CR_PER);
- }
- /**
- * @brief Disable Sector Erase
- * @rmtoll CR SER LL_FLASH_DisableSectorErase
- * @param FLASHx FLASH Instance
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_DisableSectorErase(FLASH_TypeDef *FLASHx)
- {
- CLEAR_BIT(FLASHx->CR, FLASH_CR_SER);
- }
- /**
- * @brief Check if Page Program is enabled
- * @rmtoll CR PG LL_FLASH_IsEnabledPageProgram
- * @param FLASHx FLASH Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsEnabledPageProgram(FLASH_TypeDef *FLASHx)
- {
- return ((READ_BIT(FLASHx->CR, FLASH_CR_PG) == (FLASH_CR_PG)) ? 1UL : 0UL);
- }
- /**
- * @brief Check if Mass erase is enabled
- * @rmtoll CR MER LL_FLASH_IsEnabledMassErase
- * @param FLASHx FLASH Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsEnabledMassErase(FLASH_TypeDef *FLASHx)
- {
- return ((READ_BIT(FLASHx->CR, FLASH_CR_MER) == (FLASH_CR_MER)) ? 1UL : 0UL);
- }
- /**
- * @brief Check if Page erase is enabled
- * @rmtoll CR PER LL_FLASH_IsEnabledPageErase
- * @param FLASHx FLASH Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsEnabledPageErase(FLASH_TypeDef *FLASHx)
- {
- return ((READ_BIT(FLASHx->CR, FLASH_CR_PER) == (FLASH_CR_PER)) ? 1UL : 0UL);
- }
- /**
- * @brief Check if Sector Erase is enabled
- * @rmtoll CR SER LL_FLASH_IsEnabledSectorErase
- * @param FLASHx FLASH Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsEnabledSectorErase(FLASH_TypeDef *FLASHx)
- {
- return ((READ_BIT(FLASHx->CR, FLASH_CR_SER) == (FLASH_CR_SER)) ? 1UL : 0UL);
- }
- /**
- * @brief Set the Erase Address
- * @rmtoll LL_FLASH_SetEraseAddress
- * @param FLASHx FLASH Instance
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_SetEraseAddress(FLASH_TypeDef *FLASHx,uint32_t address)
- {
- *(__IO uint32_t *)(address) = 0xFFFFFFFF;
- }
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EF_Lock_Management Lock Management
- * @{
- */
- /**
- * @brief Unlock the Flash
- * @rmtoll KEYR KEYR LL_FLASH_Unlock
- * @param FLASHx FLASH Instance
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_Unlock(FLASH_TypeDef *FLASHx)
- {
- SET_BIT(FLASHx->KEYR, LL_FLASH_KEY1);
- SET_BIT(FLASHx->KEYR, LL_FLASH_KEY2);
- }
- /**
- * @brief Unlock the Option
- * @rmtoll OPTKEYR OPTKEYR LL_FLASH_OBUnlock
- * @param FLASHx FLASH Instance
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_OBUnlock(FLASH_TypeDef *FLASHx)
- {
- SET_BIT(FLASHx->OPTKEYR, LL_FLASH_OPTKEY1);
- SET_BIT(FLASHx->OPTKEYR, LL_FLASH_OPTKEY2);
- }
- /**
- * @brief Lock the Flash
- * @rmtoll CR LOCK LL_FLASH_Lock
- * @param FLASHx FLASH Instance
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_Lock(FLASH_TypeDef *FLASHx)
- {
- SET_BIT(FLASHx->CR, FLASH_CR_LOCK);
- }
- /**
- * @brief Lock the Option
- * @rmtoll CR OPTLOCK LL_FLASH_OBLock
- * @param FLASHx FLASH Instance
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_OBLock(FLASH_TypeDef *FLASHx)
- {
- SET_BIT(FLASHx->CR, FLASH_CR_OPTLOCK);
- }
- /**
- * @brief Check if Flash is locked
- * @rmtoll CR LOCK LL_FLASH_IsLocked
- * @param FLASHx FLASH Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsLocked(FLASH_TypeDef *FLASHx)
- {
- return ((READ_BIT(FLASHx->CR, FLASH_CR_LOCK) == (FLASH_CR_LOCK)) ? 1UL : 0UL);
- }
- /**
- * @brief Check if Option is locked
- * @rmtoll CR OPTLOCK LL_FLASH_IsOBLocked
- * @param FLASHx FLASH Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsOBLocked(FLASH_TypeDef *FLASHx)
- {
- return ((READ_BIT(FLASHx->CR, FLASH_CR_OPTLOCK) == (FLASH_CR_OPTLOCK)) ? 1UL : 0UL);
- }
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EF_LAUNCH_Management Launch Management
- * @{
- */
- /**
- * @brief Force the Option byte loading
- * @rmtoll CR OBL_LAUNCH LL_FLASH_Launch
- * @param FLASHx FLASH Instance
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_Launch(FLASH_TypeDef *FLASHx)
- {
- SET_BIT(FLASHx->CR, FLASH_CR_OBL_LAUNCH);
- }
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EF_IT_Management Interrupt Management
- * @{
- */
- /**
- * @brief Enable Error interrupts.
- * @rmtoll CR ERRIR LL_FLASH_EnableIT_ERR
- * @param FLASHx FLASH Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_EnableIT_ERR(FLASH_TypeDef *FLASHx)
- {
- SET_BIT(FLASHx->CR, FLASH_CR_ERRIE);
- }
- /**
- * @brief Enable End of operation interrupts.
- * @rmtoll CR EOPIE LL_FLASH_EnableIT_EOP
- * @param FLASHx FLASH Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_EnableIT_EOP(FLASH_TypeDef *FLASHx)
- {
- SET_BIT(FLASHx->CR, FLASH_CR_EOPIE);
- }
- /**
- * @brief Disable Error interrupts.
- * @rmtoll CR ERRIE LL_FLASH_DisableIT_ERR
- * @param FLASHx FLASH Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_DisableIT_ERR(FLASH_TypeDef *FLASHx)
- {
- CLEAR_BIT(FLASHx->CR, FLASH_CR_ERRIE);
- }
- /**
- * @brief Disable End of operation interrupts.
- * @rmtoll CR EOPIE LL_FLASH_DisableIT_EOP
- * @param FLASHx FLASH Instance.
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_DisableIT_EOP(FLASH_TypeDef *FLASHx)
- {
- CLEAR_BIT(FLASHx->CR, FLASH_CR_EOPIE);
- }
- /**
- * @brief Check if Error interrupts are enabled or disabled.
- * @rmtoll CR ERRIE LL_FLASH_IsEnabledIT_ERR
- * @param FLASHx FLASH Instance.
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsEnabledIT_ERR(FLASH_TypeDef *FLASHx)
- {
- return (READ_BIT(FLASH->CR, FLASH_CR_ERRIE) == (FLASH_CR_ERRIE));
- }
- /**
- * @brief Check if End of operation interrupts are enabled or disabled.
- * @rmtoll CR EOPIE LL_FLASH_IsEnabledIT_EOP
- * @param FLASHx FLASH Instance.
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsEnabledIT_EOP(FLASH_TypeDef *FLASHx)
- {
- return (READ_BIT(FLASH->CR, FLASH_CR_EOPIE) == (FLASH_CR_EOPIE));
- }
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EF_PROGRAM_Management Program Management
- * @{
- */
- /**
- * @brief Enable Page Program Start
- * @rmtoll CR PGSTRT LL_FLASH_EnablePageProgramStart
- * @param FLASHx FLASH Instance
- * @retval None.
- */
- __STATIC_INLINE void LL_FLASH_EnablePageProgramStart(FLASH_TypeDef *FLASHx)
- {
- SET_BIT(FLASHx->CR, FLASH_CR_PGSTRT);
- }
- /**
- * @brief Enable Option Program Start
- * @rmtoll CR OPTSTRT LL_FLASH_EnableOptionProgramStart
- * @param FLASHx FLASH Instance
- * @retval None.
- */
- __STATIC_INLINE void LL_FLASH_EnableOptionProgramStart(FLASH_TypeDef *FLASHx)
- {
- SET_BIT(FLASHx->CR, FLASH_CR_OPTSTRT);
- }
- /**
- * @brief Disable Page Program start
- * @rmtoll CR PGSTRT LL_FLASH_DisablePageProgramStart
- * @param FLASHx FLASH Instance
- * @retval None.
- */
- __STATIC_INLINE void LL_FLASH_DisablePageProgramStart(FLASH_TypeDef *FLASHx)
- {
- CLEAR_BIT(FLASHx->CR, FLASH_CR_PGSTRT);
- }
- /**
- * @brief Disable Option Program start
- * @rmtoll CR OPTSTRT LL_FLASH_DisableOptionProgramStart
- * @param FLASHx FLASH Instance
- * @retval None.
- */
- __STATIC_INLINE void LL_FLASH_DisableOptionProgramStart(FLASH_TypeDef *FLASHx)
- {
- CLEAR_BIT(FLASHx->CR, FLASH_CR_OPTSTRT);
- }
- /**
- * @brief Check if Page Program Start is enabled
- * @rmtoll CR PGSTRT LL_FLASH_IsEnabledPageProgramStart
- * @param FLASHx FLASH Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsEnabledPageProgramStart(FLASH_TypeDef *FLASHx)
- {
- return (READ_BIT(FLASHx->CR, FLASH_CR_PGSTRT) == (FLASH_CR_PGSTRT));
- }
- /**
- * @brief Check if Option program Start is enabled
- * @rmtoll CR OPTSTRT LL_FLASH_IsEnabledOptionProgramStart
- * @param FLASHx FLASH Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsEnabledOptionProgramStart(FLASH_TypeDef *FLASHx)
- {
- return (READ_BIT(FLASHx->CR, FLASH_CR_OPTSTRT) == (FLASH_CR_OPTSTRT));
- }
- /**
- * @brief Trigger the Option Program
- * @param FLASHx FLASH Instance
- * @retval None.
- */
- __STATIC_INLINE void LL_FLASH_TriggerOptionProgramStart(FLASH_TypeDef *FLASHx)
- {
- *((__IO uint32_t *)(0x40022080))=0xff;
- }
- /**
- * @brief Program the page
- * @rmtoll CR PGSTRT LL_FLASH_PageProgram
- * @param FLASHx FLASH Instance
- * @param Address Program Address
- * @param DataAddress Data Address
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_PageProgram(FLASH_TypeDef *FLASHx,uint32_t Address, uint32_t * DataAddress)
- {
- uint8_t index=0;
- uint32_t dest = Address;
- uint32_t * src = DataAddress;
- uint32_t primask_bit;
- /* Enter critical section */
- primask_bit = __get_PRIMASK();
- __disable_irq();
- /* 32 words*/
- while(index<32U)
- {
- *(uint32_t *)dest = *src;
- src += 1U;
- dest += 4U;
- index++;
- if(index==31)
- {
- LL_FLASH_EnablePageProgramStart(FLASHx);
- }
- }
- /* Exit critical section: restore previous priority mask */
- __set_PRIMASK(primask_bit);
- }
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EF_BOR_Management Bor Management
- * @{
- */
- /**
- * @brief Check if BOR is enabled
- * @rmtoll OPTR BOR_EN LL_FLASH_IsEnabledBOR
- * @param FLASHx FLASH Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_IsEnabledBOR(FLASH_TypeDef *FLASHx)
- {
- return (READ_BIT(FLASHx->OPTR, FLASH_OPTR_BOR_EN) == (FLASH_OPTR_BOR_EN));
- }
- /**
- * @brief Get the BOR Level
- * @rmtoll OPTR BOR_LEV LL_FLASH_GetBORLevel
- * @param FLASHx FLASH Instance
- * @retval Returned value can be one of the following values:
- * @arg @ref LL_FLASH_BOR_LEV0
- * @arg @ref LL_FLASH_BOR_LEV1
- * @arg @ref LL_FLASH_BOR_LEV2
- * @arg @ref LL_FLASH_BOR_LEV3
- * @arg @ref LL_FLASH_BOR_LEV4
- * @arg @ref LL_FLASH_BOR_LEV5
- * @arg @ref LL_FLASH_BOR_LEV6
- * @arg @ref LL_FLASH_BOR_LEV7
- */
- __STATIC_INLINE uint32_t LL_FLASH_GetBORLevel(FLASH_TypeDef *FLASHx)
- {
- return READ_BIT(FLASHx->OPTR, FLASH_OPTR_BOR_LEV);
- }
- /**
- * @brief Get nBOOT1 Mode
- * @rmtoll OPTR nBOOT1 LL_FLASH_GetnBOOT1Mode
- * @param FLASHx FLASH Instance
- * @retval Returned value can be one of the following values:
- * @arg @ref LL_FLASH_NBOOT1_CLR
- * @arg @ref LL_FLASH_NBOOT1_SET
- */
- __STATIC_INLINE uint32_t LL_FLASH_GetnBOOT1Mode(FLASH_TypeDef *FLASHx)
- {
- return READ_BIT(FLASHx->OPTR, FLASH_OPTR_nBOOT1);
- }
- /**
- * @brief Get NRST Mode
- * @rmtoll OPTR NRST_MODE LL_FLASH_GetNrstMode
- * @param FLASHx FLASH Instance
- * @retval Returned value can be one of the following values:
- * @arg @ref LL_FLASH_NRST_MODE_RESET
- * @arg @ref LL_FLASH_NRST_MODE_GPIO
- */
- __STATIC_INLINE uint32_t LL_FLASH_GetNrstMode(FLASH_TypeDef *FLASHx)
- {
- return READ_BIT(FLASHx->OPTR, FLASH_OPTR_NRST_MODE);
- }
- #ifdef FLASH_OPTR_WWDG_SW
- /**
- * @brief Get WWDG SW Mode
- * @rmtoll OPTR WWDG_SW LL_FLASH_GetWWDGSWMode
- * @param FLASHx FLASH Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_GetWWDGSWMode(FLASH_TypeDef *FLASHx)
- {
- return (READ_BIT(FLASHx->OPTR, FLASH_OPTR_WWDG_SW) == (FLASH_OPTR_WWDG_SW));
- }
- #endif
- /**
- * @brief Get IWDG SW Mode
- * @rmtoll OPTR IWDG_SW LL_FLASH_GetIWDGSWMode
- * @param FLASHx FLASH Instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t LL_FLASH_GetIWDGSWMode(FLASH_TypeDef *FLASHx)
- {
- return (READ_BIT(FLASHx->OPTR, FLASH_OPTR_IWDG_SW) == (FLASH_OPTR_IWDG_SW));
- }
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EF_SDK_Management SDK Management
- * @{
- */
- /**
- * @brief Set SDK Address
- * @rmtoll SDKR SDK_STRT LL_FLASH_SetSDKAddress
- * @rmtoll SDKR SDK_END LL_FLASH_SetSDKAddress
- * @param FLASHx FLASH Instance
- * @param SDKStartAddress This parameter can be one of the following values:
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08000000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08000800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08001000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08001800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08002000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08002800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08003000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08003800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08004000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08004800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08005000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08005800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08006000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08006800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08007000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08007800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08008000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08008800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08009000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08009800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800A000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800A800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800B000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800B800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800C000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800C800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800D000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800D800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800E000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800E800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800F000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800F800
- * @param SDKEndAddress This parameter can be one of the following values:
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080007FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08000FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080017FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08001FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080027FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08002FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080037FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08003FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080047FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08004FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080057FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08005FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080067FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08006FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080077FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08007FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080087FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08008FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080097FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08009FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800A7FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800AFFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800B7FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800BFFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800C7FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800CFFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800D7FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800DFFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800E7FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800EFFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800F7FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800FFFF
- * @retval None.
- */
- __STATIC_INLINE void LL_FLASH_SetSDKAddress(FLASH_TypeDef *FLASHx,uint32_t SDKStartAddress,uint32_t SDKEndAddress)
- {
- MODIFY_REG(FLASHx->SDKR, FLASH_SDKR_SDK_STRT | FLASH_SDKR_SDK_END , SDKStartAddress | SDKEndAddress);
- }
- /**
- * @brief Get SDK Start Address
- * @rmtoll SDKR SDK_STRT LL_FLASH_GetSDKStartAddress
- * @param FLASHx FLASH Instance
- * @retval Returned value can be a one of the following values:
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08000000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08000800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08001000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08001800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08002000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08002800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08003000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08003800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08004000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08004800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08005000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08005800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08006000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08006800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08007000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08007800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08008000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08008800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08009000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X08009800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800A000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800A800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800B000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800B800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800C000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800C800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800D000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800D800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800E000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800E800
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800F000
- * @arg @ref LL_FLASH_SDKSTARTADDRESS_0X0800F800
- * @retval None
- */
- __STATIC_INLINE uint32_t LL_FLASH_GetSDKStartAddress(FLASH_TypeDef *FLASHx)
- {
- return READ_BIT(FLASHx->SDKR, FLASH_SDKR_SDK_STRT);
- }
- /**
- * @brief Get SDK End Address
- * @rmtoll SDKR SDK_END LL_FLASH_GetSDKEndAddress
- * @param FLASHx FLASH Instance
- * @retval Returned value can be a one of the following values:
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080007FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08000FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080017FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08001FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080027FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08002FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080037FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08003FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080047FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08004FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080057FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08005FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080067FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08006FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080077FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08007FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080087FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08008FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X080097FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X08009FFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800A7FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800AFFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800B7FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800BFFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800C7FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800CFFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800D7FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800DFFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800E7FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800EFFF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800F7FF
- * @arg @ref LL_FLASH_SDKENDADDRESS_0X0800FFFF
- * @retval None
- */
- __STATIC_INLINE uint32_t LL_FLASH_GetSDKEndAddress(FLASH_TypeDef *FLASHx)
- {
- return (READ_BIT(FLASHx->SDKR, FLASH_SDKR_SDK_END));
- }
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EF_WRP_Management WRP Management
- * @{
- */
- /**
- * @brief Set WRP Address
- * @note Depending on devices and packages, some Sectors may not be available.
- * Refer to device datasheet for Sectors availability.
- * @rmtoll WRPR WRP LL_FLASH_SetWRPRAddress
- * @param FLASHx FLASH Instance
- * @param Address This parameter can be a combination of the following values:
- * @arg @ref LL_FLASH_WRP_DISABLE
- * @arg @ref LL_FLASH_WRP_SECTOR_0
- * @arg @ref LL_FLASH_WRP_SECTOR_1
- * @arg @ref LL_FLASH_WRP_SECTOR_2
- * @arg @ref LL_FLASH_WRP_SECTOR_3
- * @arg @ref LL_FLASH_WRP_SECTOR_4
- * @arg @ref LL_FLASH_WRP_SECTOR_5
- * @arg @ref LL_FLASH_WRP_SECTOR_6
- * @arg @ref LL_FLASH_WRP_SECTOR_7
- * @arg @ref LL_FLASH_WRP_SECTOR_8
- * @arg @ref LL_FLASH_WRP_SECTOR_9
- * @arg @ref LL_FLASH_WRP_SECTOR_10
- * @arg @ref LL_FLASH_WRP_SECTOR_11
- * @arg @ref LL_FLASH_WRP_SECTOR_12
- * @arg @ref LL_FLASH_WRP_SECTOR_13
- * @arg @ref LL_FLASH_WRP_SECTOR_14
- * @arg @ref LL_FLASH_WRP_SECTOR_15
- * @arg @ref LL_FLASH_WRP_Pages0to31
- * @arg @ref LL_FLASH_WRP_Pages32to63
- * @arg @ref LL_FLASH_WRP_Pages64to95
- * @arg @ref LL_FLASH_WRP_Pages96to127
- * @arg @ref LL_FLASH_WRP_Pages128to159
- * @arg @ref LL_FLASH_WRP_Pages160to191
- * @arg @ref LL_FLASH_WRP_Pages192to223
- * @arg @ref LL_FLASH_WRP_Pages224to255
- * @arg @ref LL_FLASH_WRP_Pages256to287
- * @arg @ref LL_FLASH_WRP_Pages288to319
- * @arg @ref LL_FLASH_WRP_Pages320to351
- * @arg @ref LL_FLASH_WRP_Pages352to383
- * @arg @ref LL_FLASH_WRP_Pages384to415
- * @arg @ref LL_FLASH_WRP_Pages416to447
- * @arg @ref LL_FLASH_WRP_Pages448to479
- * @arg @ref LL_FLASH_WRP_Pages480to511
- * @arg @ref LL_FLASH_WRP_AllPages
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_SetWRPAddress(FLASH_TypeDef *FLASHx,uint32_t Address)
- {
- MODIFY_REG(FLASHx->WRPR, FLASH_WRPR_WRP , ((~(Address)) & FLASH_WRPR_WRP));
- }
- /**
- * @brief Get WRP Address
- * @note Depending on devices and packages, some Sectors may not be available.
- * Refer to device datasheet for Sectors availability.
- * @rmtoll WRPR WRP LL_FLASH_GetWRPAddress
- * @param FLASHx FLASH Instance
- * @retval Returned value can be a combination of the following values:
- * @arg @ref LL_FLASH_WRP_DISABLE
- * @arg @ref LL_FLASH_WRP_SECTOR_0
- * @arg @ref LL_FLASH_WRP_SECTOR_1
- * @arg @ref LL_FLASH_WRP_SECTOR_2
- * @arg @ref LL_FLASH_WRP_SECTOR_3
- * @arg @ref LL_FLASH_WRP_SECTOR_4
- * @arg @ref LL_FLASH_WRP_SECTOR_5
- * @arg @ref LL_FLASH_WRP_SECTOR_6
- * @arg @ref LL_FLASH_WRP_SECTOR_7
- * @arg @ref LL_FLASH_WRP_SECTOR_8
- * @arg @ref LL_FLASH_WRP_SECTOR_9
- * @arg @ref LL_FLASH_WRP_SECTOR_10
- * @arg @ref LL_FLASH_WRP_SECTOR_11
- * @arg @ref LL_FLASH_WRP_SECTOR_12
- * @arg @ref LL_FLASH_WRP_SECTOR_13
- * @arg @ref LL_FLASH_WRP_SECTOR_14
- * @arg @ref LL_FLASH_WRP_SECTOR_15
- * @arg @ref LL_FLASH_WRP_Pages0to31
- * @arg @ref LL_FLASH_WRP_Pages32to63
- * @arg @ref LL_FLASH_WRP_Pages64to95
- * @arg @ref LL_FLASH_WRP_Pages96to127
- * @arg @ref LL_FLASH_WRP_Pages128to159
- * @arg @ref LL_FLASH_WRP_Pages160to191
- * @arg @ref LL_FLASH_WRP_Pages192to223
- * @arg @ref LL_FLASH_WRP_Pages224to255
- * @arg @ref LL_FLASH_WRP_Pages256to287
- * @arg @ref LL_FLASH_WRP_Pages288to319
- * @arg @ref LL_FLASH_WRP_Pages320to351
- * @arg @ref LL_FLASH_WRP_Pages352to383
- * @arg @ref LL_FLASH_WRP_Pages384to415
- * @arg @ref LL_FLASH_WRP_Pages416to447
- * @arg @ref LL_FLASH_WRP_Pages448to479
- * @arg @ref LL_FLASH_WRP_Pages480to511
- * @arg @ref LL_FLASH_WRP_AllPages
- */
- __STATIC_INLINE uint32_t LL_FLASH_GetWRPAddress(FLASH_TypeDef *FLASHx)
- {
- return ((~(READ_BIT(FLASHx->WRPR, FLASH_WRPR_WRP))) & FLASH_WRPR_WRP);
- }
- /**
- * @}
- */
- /** @defgroup FLASH_LL_EF_OPTR_Management OPTR Management
- * @{
- */
- #ifdef FLASH_OPTR_WWDG_SW
- /**
- * @brief Set Optr
- * @rmtoll OPTR BOR_EN LL_FLASH_SetOPTR
- * @rmtoll OPTR BOR_LEV LL_FLASH_SetOPTR
- * @rmtoll OPTR nBOOT1 LL_FLASH_SetOPTR
- * @rmtoll OPTR IWDG_SW LL_FLASH_SetOPTR
- * @rmtoll OPTR WWDG_SW LL_FLASH_SetOPTR
- * @rmtoll OPTR NRST_MODE LL_FLASH_SetOPTR
- * @rmtoll OPTR RDP LL_FLASH_SetOPTR
- * @param FLASHx FLASH Instance
- * @param BOREnable This parameter can be one of the following values:
- * @arg @ref LL_FLASH_BOR_ENABLE
- * @arg @ref LL_FLASH_BOR_DISABLE
- * @param BORLevel This parameter can be one of the following values:
- * @arg @ref LL_FLASH_BOR_LEV0
- * @arg @ref LL_FLASH_BOR_LEV1
- * @arg @ref LL_FLASH_BOR_LEV2
- * @arg @ref LL_FLASH_BOR_LEV3
- * @arg @ref LL_FLASH_BOR_LEV4
- * @arg @ref LL_FLASH_BOR_LEV5
- * @arg @ref LL_FLASH_BOR_LEV6
- * @arg @ref LL_FLASH_BOR_LEV7
- * @param nBOOT1Mode This parameter can be one of the following values:LL_FLASH_NBOOT1_RST
- * @arg @ref LL_FLASH_NBOOT1_CLR
- * @arg @ref LL_FLASH_NBOOT1_SET
- * @param IWDGMode This parameter can be one of the following values:
- * @arg @ref LL_FLASH_IWDG_MODE_HW
- * @arg @ref LL_FLASH_IWDG_MODE_SW
- * @param WWDGMode This parameter can be one of the following values:
- * @arg @ref LL_FLASH_WWDG_MODE_HW
- * @arg @ref LL_FLASH_WWDG_MODE_SW
- * @param NrstMode This parameter can be one of the following values:
- * @arg @ref LL_FLASH_NRST_MODE_RESET
- * @arg @ref LL_FLASH_NRST_MODE_GPIO
- * @param RDPLevel This parameter can be one of the following values:
- * @arg @ref LL_FLASH_RDP_LEVEL_0
- * @arg @ref LL_FLASH_RDP_LEVEL_1
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_SetOPTR(FLASH_TypeDef *FLASHx, \
- uint32_t BOREnable, uint32_t BORLevel, uint32_t nBOOT1Mode, \
- uint32_t IWDGMode, uint32_t WWDGMode, uint32_t NrstMode, \
- uint32_t RDPLevel)
- {
- MODIFY_REG(FLASHx->OPTR, (FLASH_OPTR_BOR_EN | FLASH_OPTR_BOR_LEV | FLASH_OPTR_nBOOT1 | FLASH_OPTR_IWDG_SW | \
- FLASH_OPTR_WWDG_SW | FLASH_OPTR_NRST_MODE | FLASH_OPTR_RDP), \
- (BOREnable | BORLevel | nBOOT1Mode | WWDGMode | IWDGMode | NrstMode | RDPLevel));
- }
- #else
- /**
- * @brief Set Optr
- * @rmtoll OPTR BOR_EN LL_FLASH_SetOPTR
- * @rmtoll OPTR BOR_LEV LL_FLASH_SetOPTR
- * @rmtoll OPTR nBOOT1 LL_FLASH_SetOPTR
- * @rmtoll OPTR IWDG_SW LL_FLASH_SetOPTR
- * @rmtoll OPTR NRST_MODE LL_FLASH_SetOPTR
- * @rmtoll OPTR RDP LL_FLASH_SetOPTR
- * @param FLASHx FLASH Instance
- * @param BOREnable This parameter can be one of the following values:
- * @arg @ref LL_FLASH_BOR_ENABLE
- * @arg @ref LL_FLASH_BOR_DISABLE
- * @param BORLevel This parameter can be one of the following values:
- * @arg @ref LL_FLASH_BOR_LEV0
- * @arg @ref LL_FLASH_BOR_LEV1
- * @arg @ref LL_FLASH_BOR_LEV2
- * @arg @ref LL_FLASH_BOR_LEV3
- * @arg @ref LL_FLASH_BOR_LEV4
- * @arg @ref LL_FLASH_BOR_LEV5
- * @arg @ref LL_FLASH_BOR_LEV6
- * @arg @ref LL_FLASH_BOR_LEV7
- * @param nBOOT1Mode This parameter can be one of the following values:LL_FLASH_NBOOT1_RST
- * @arg @ref LL_FLASH_NBOOT1_CLR
- * @arg @ref LL_FLASH_NBOOT1_SET
- * @param IWDGMode This parameter can be one of the following values:
- * @arg @ref LL_FLASH_IWDG_MODE_HW
- * @arg @ref LL_FLASH_IWDG_MODE_SW
- * @param NrstMode This parameter can be one of the following values:
- * @arg @ref LL_FLASH_NRST_MODE_RESET
- * @arg @ref LL_FLASH_NRST_MODE_GPIO
- * @param RDPLevel This parameter can be one of the following values:
- * @arg @ref LL_FLASH_RDP_LEVEL_0
- * @arg @ref LL_FLASH_RDP_LEVEL_1
- * @retval None
- */
- __STATIC_INLINE void LL_FLASH_SetOPTR(FLASH_TypeDef *FLASHx, \
- uint32_t BOREnable, uint32_t BORLevel, uint32_t nBOOT1Mode, \
- uint32_t IWDGMode, uint32_t NrstMode, uint32_t RDPLevel)
- {
- MODIFY_REG(FLASHx->OPTR, (FLASH_OPTR_BOR_EN | FLASH_OPTR_BOR_LEV | FLASH_OPTR_nBOOT1 | \
- FLASH_OPTR_IWDG_SW | FLASH_OPTR_NRST_MODE | FLASH_OPTR_RDP), \
- (BOREnable | BORLevel | nBOOT1Mode | IWDGMode | NrstMode | RDPLevel));
- }
- #endif
- /**
- * @brief Get RDP Level
- * @rmtoll OPTR RDP LL_FLASH_GetRDP
- * @param FLASHx FLASH Instance
- * @retval Returned value can be a combination of the following values:
- * @arg @ref LL_FLASH_RDP_LEVEL_0
- * @arg @ref LL_FLASH_RDP_LEVEL_1
- */
- __STATIC_INLINE uint32_t LL_FLASH_GetRDP(FLASH_TypeDef *FLASHx)
- {
- return (READ_BIT(FLASHx->OPTR, FLASH_OPTR_RDP));
- }
- /**
- * @}
- */
- /**
- * @}
- */
- /**
- * @}
- */
- #endif /* defined (FLASH) */
- /**
- * @}
- */
- #ifdef __cplusplus
- }
- #endif
- #endif /* PY32F0xx_LL_FLASH_H */
- /************************ (C) COPYRIGHT Puya *****END OF FILE****/
|