/**
******************************************************************************
* @file CortexM3/MPU/accesspermission.c
* @author MCD Application Team
* @version V3.5.0
* @date 08-April-2011
* @brief Access rights configuration using Cortex-M3 MPU regions.
******************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
*
© COPYRIGHT 2011 STMicroelectronics
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "main.h"
/** @addtogroup STM32F10x_StdPeriph_Examples
* @{
*/
/** @addtogroup CortexM3_MPU
* @{
*/
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define ARRAY_ADDRESS_START (0x20002000UL)
#define ARRAY_SIZE (0x09UL << 0UL)
#define ARRAY_REGION_NUMBER (0x03UL << MPU_RNR_REGION_Pos)
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
#if defined ( __CC_ARM )
uint8_t privilegedreadonlyarray[32] __attribute__((at(0x20002000)));
#elif defined ( __ICCARM__ )
#pragma location=0x20002000
__no_init uint8_t privilegedreadonlyarray[32];
#elif defined ( __GNUC__ )
uint8_t privilegedreadonlyarray[32] __attribute__((section(".ROarraySection")));
#elif defined ( __TASKING__ )
uint8_t privilegedreadonlyarray[32] __at(0x20002000);
#endif
/* Private functions ---------------------------------------------------------*/
/**
* @brief This function configure the access right using Cortex-M3 MPU regions.
* @param None
* @retval None
*/
void accesspermission(void)
{
uint8_t a;
/* Configure region for privilegedreadonlyarray as REGION NƯ3, 32byte and R
only in privileged mode */
MPU->RNR = ARRAY_REGION_NUMBER;
MPU->RBAR |= ARRAY_ADDRESS_START;
MPU->RASR |= ARRAY_SIZE | portMPU_REGION_PRIVILEGED_READ_ONLY;
/* Read from privilegedreadonlyarray. This will not generate error */
a = privilegedreadonlyarray[0];
/* Uncomment the following line to write to privilegedreadonlyarray. This will
generate error */
//privilegedreadonlyarray[0] = 'e';
}
/**
* @}
*/
/**
* @}
*/
/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/