Mercurial > ~darius > hgwebdir.cgi > stm32temp
diff libs/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CortexM3/MPU/accesspermission.c @ 0:c59513fd84fb
Initial commit of STM32 test code.
author | Daniel O'Connor <darius@dons.net.au> |
---|---|
date | Mon, 03 Oct 2011 21:19:15 +1030 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libs/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CortexM3/MPU/accesspermission.c Mon Oct 03 21:19:15 2011 +1030 @@ -0,0 +1,90 @@ +/** + ****************************************************************************** + * @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. + * + * <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2> + ****************************************************************************** + */ + + +/* 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****/