NIIETCM4 PD  v0.8.0
Драйвер периферии для микроконтроллеров на базе ядра ARM Cortex-M4
niietcm4_userflash.c
См. документацию.
1 
30 /* Includes ------------------------------------------------------------------*/
31 #include "niietcm4_userflash.h"
32 
66 void USERFLASH_Init(uint32_t SysClkFreq)
67 {
68  NT_USERFLASH->UT_PROG = SysClkFreq*(3e-5);
69  NT_USERFLASH->UT_ERASE = SysClkFreq*(3e-2);
70  NT_USERFLASH->UT_ME = SysClkFreq*(3e-2);
71 }
72 
80 {
82 
83  Status = (USERFLASH_Status_TypeDef)(NT_USERFLASH->UFCIS & (UFCIS_OP_CMLT_Msk|UFCIS_OP_ERROR_Msk));
84 
85  return Status;
86 }
87 
94 {
95  NT_USERFLASH->UFCIC = UFCIC_CLR_OPCMLT_Msk | UFCIC_CLR_OPERROR_Msk;
96 }
97 
104 {
105  NT_USERFLASH->UFMC = USERFLASH_MAGIC_KEY | UFMC_FULL_ERASE_Msk;
106 
108 }
109 
116 uint32_t USERFLASH_Read(uint32_t Address)
117 {
118  uint32_t timeout = USERFLASH_OPERATION_TIMEOUT;
119 
121  NT_USERFLASH->UFMA = Address;
122  NT_USERFLASH->UFMC = USERFLASH_MAGIC_KEY | UFMC_READ_Msk;
123 
124  while(timeout)
125  {
127  {
128  break;
129  }
130  else
131  {
132  timeout--;
133  }
134  }
135 
136  return NT_USERFLASH->UFMD;
137 }
138 
148 void USERFLASH_Write(uint32_t Address, uint32_t Data)
149 {
150  NT_USERFLASH->UFMA = Address;
151  NT_USERFLASH->UFMD = Data;
152  NT_USERFLASH->UFMC = USERFLASH_MAGIC_KEY | UFMC_WRITE_Msk;
153 }
154 
161 void USERFLASH_PageErase(uint32_t PageNum)
162 {
163  assert_param(IS_USERFLASH_PAGE_NUM(PageNum));
164 
165  NT_USERFLASH->UFMA = PageNum * USERFLASH_PAGE_SIZE_BYTES;
166  NT_USERFLASH->UFMC = USERFLASH_MAGIC_KEY | UFMC_PAGE_ERASE_Msk;
167 }
168 
175 uint32_t USERFLASH_Info_Read(uint32_t Address)
176 {
177  uint32_t timeout = USERFLASH_OPERATION_TIMEOUT;
178 
180  NT_USERFLASH->UFMA = Address;
181  NT_USERFLASH->UFMC = USERFLASH_MAGIC_KEY | UFMC_READ_IFB_Msk;
182 
183  while(timeout)
184  {
186  {
187  break;
188  }
189  else
190  {
191  timeout--;
192  }
193  }
194 
195  return NT_USERFLASH->UFMD;
196 }
197 
206 void USERFLASH_Info_Write(uint32_t Address, uint32_t Data)
207 {
208  NT_USERFLASH->UFMA = Address;
209  NT_USERFLASH->UFMD = Data;
210  NT_USERFLASH->UFMC = USERFLASH_MAGIC_KEY | UFMC_WRITE_IFB_Msk;
211 }
212 
219 void USERFLASH_Info_PageErase(uint32_t PageNum)
220 {
221  assert_param(IS_USERFLASH_INFO_PAGE_NUM(PageNum));
222 
223  NT_USERFLASH->UFMA = PageNum * USERFLASH_PAGE_SIZE_BYTES;
224  NT_USERFLASH->UFMC = USERFLASH_MAGIC_KEY | UFMC_PAGEERASE_IFB_Msk;
225 }
226 
235 {
236  assert_param(IS_FUNCTIONAL_STATE(State));
237 
238  NT_USERFLASH->UFCIM_bit.MASK_OPCMLT = (uint32_t)State;
239 }
240 
257 /******************* (C) COPYRIGHT 2015 NIIET *****END OF FILE****/
void USERFLASH_OperationStatusClear()
Очищает статус работы контроллера пользовательской флэш.
void USERFLASH_Init(uint32_t SysClkFreq)
Инициализирует тайминги доступа для контроллера пользовательской флеш.
void USERFLASH_PageErase(uint32_t PageNum)
Стирание указнной страницы основной области пользовательской флеш.
FunctionalState
Описывает логическое состояние периферии. Используется для операций включения/выключения периферийных...
Definition: niietcm4.h:157
#define USERFLASH_OPERATION_TIMEOUT
Время ожидания выполнения операции с флеш.
Файл содержит все прототипы функций для пользовательской флеш.
void USERFLASH_Info_Write(uint32_t Address, uint32_t Data)
Запись байта в информационную область пользовательской флеш по указанному адресу. ...
USERFLASH_Status_TypeDef USERFLASH_OperationStatus()
Статус работы контроллера пользовательской флэш.
void USERFLASH_ITCmd(FunctionalState State)
Включение прерывания по завершению чтении/записи/стирания.
uint32_t USERFLASH_Info_Read(uint32_t Address)
Чтение байта из информационной области пользовательской флеш.
USERFLASH_Status_TypeDef
Статус работы контроллера пользовательской флеш-памяти.
uint32_t USERFLASH_Read(uint32_t Address)
Чтение байта из основной области пользовательской флеш.
void USERFLASH_FullErase()
Полная очистка основной области пользовательской флеш.
#define IS_FUNCTIONAL_STATE(STATE)
Макрос проверки аргументов типа FunctionalState.
Definition: niietcm4.h:167
void USERFLASH_Write(uint32_t Address, uint32_t Data)
Запись байта в основную область пользовательской флеш по указанному адресу.
void USERFLASH_Info_PageErase(uint32_t PageNum)
Стирание указнной страницы информационной области пользовательской флеш.
#define IS_USERFLASH_PAGE_NUM(PAGE_NUM)
Макрос проверки номера страницы основной области пользовательской флеш на попадание в допустимый диап...
#define USERFLASH_PAGE_SIZE_BYTES
#define USERFLASH_MAGIC_KEY
Ключ для проведения операций с контроллером пользовательской флеш.
#define IS_USERFLASH_INFO_PAGE_NUM(PAGE_NUM)
Макрос проверки номера страницы информационной области пользовательской флеш на попадание в допустимы...