Issue #18: Backup RAM: Make use of backup regulator optional
This commit is contained in:
		@@ -19,11 +19,13 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <stdint.h>
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					#include <stdbool.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @brief Init the backup ram and make it accesible
 | 
					 * @brief Init the backup ram and make it accesible
 | 
				
			||||||
 | 
					 * @param use_backup_regulator Enable the Backup VBAT regulator. It will be used, when VDD is powered off
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void backup_ram_init(void);
 | 
					void backup_ram_init(bool use_backup_regulator);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @brief Disable access to the backup RAM. This saves power
 | 
					 * @brief Disable access to the backup RAM. This saves power
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,18 +34,20 @@
 | 
				
			|||||||
#error "Backup RAM size ahs to be a power of two!"
 | 
					#error "Backup RAM size ahs to be a power of two!"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void backup_ram_init(void)
 | 
					void backup_ram_init(bool use_backup_regulator)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	rcc_manager_enable_clock(&RCC->APB1ENR, BITMASK_TO_BITNO(RCC_APB1ENR_PWREN));
 | 
						rcc_manager_enable_clock(&RCC->APB1ENR, BITMASK_TO_BITNO(RCC_APB1ENR_PWREN));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Enable access to backup RAM register set */
 | 
						/* Enable access to backup RAM register set */
 | 
				
			||||||
	PWR->CR |= PWR_CR_DBP;
 | 
						PWR->CR |= PWR_CR_DBP;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Enable the backup regulator */
 | 
						if (use_backup_regulator) {
 | 
				
			||||||
	PWR->CSR |= PWR_CSR_BRE;
 | 
							/* Enable the backup regulator */
 | 
				
			||||||
 | 
							PWR->CSR |= PWR_CSR_BRE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Wait until regulator is ready */
 | 
							/* Wait until regulator is ready */
 | 
				
			||||||
	while (!(PWR->CSR & PWR_CSR_BRR));
 | 
							while (!(PWR->CSR & PWR_CSR_BRR));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Enable clock for backup ram interface */
 | 
						/* Enable clock for backup ram interface */
 | 
				
			||||||
	rcc_manager_enable_clock(&RCC->AHB1ENR, BITMASK_TO_BITNO(RCC_AHB1ENR_BKPSRAMEN));
 | 
						rcc_manager_enable_clock(&RCC->AHB1ENR, BITMASK_TO_BITNO(RCC_AHB1ENR_BKPSRAMEN));
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user