硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2972|回复: 0
收起左侧

[MPU] STM32H7新版库已经升级MPU支持16个域的配置,早期只能配置8个

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106840
QQ
发表于 2018-7-31 02:18:06 | 显示全部楼层 |阅读模式
QQ截图20180730191605.png


QQ截图20180731021735.png
  1. /**
  2.   * @brief  Initializes and configures the Region and the memory to be protected.
  3.   * @param  MPU_Init Pointer to a MPU_Region_InitTypeDef structure that contains
  4.   *                the initialization and configuration information.
  5.   * @retval None
  6.   */
  7. void HAL_MPU_ConfigRegion(MPU_Region_InitTypeDef *MPU_Init)
  8. {
  9.   /* Check the parameters */
  10.   assert_param(IS_MPU_REGION_NUMBER(MPU_Init->Number));
  11.   assert_param(IS_MPU_REGION_ENABLE(MPU_Init->Enable));

  12.   /* Set the Region number */
  13.   MPU->RNR = MPU_Init->Number;

  14.   if ((MPU_Init->Enable) != RESET)
  15.   {
  16.     /* Check the parameters */
  17.     assert_param(IS_MPU_INSTRUCTION_ACCESS(MPU_Init->DisableExec));
  18.     assert_param(IS_MPU_REGION_PERMISSION_ATTRIBUTE(MPU_Init->AccessPermission));
  19.     assert_param(IS_MPU_TEX_LEVEL(MPU_Init->TypeExtField));
  20.     assert_param(IS_MPU_ACCESS_SHAREABLE(MPU_Init->IsShareable));
  21.     assert_param(IS_MPU_ACCESS_CACHEABLE(MPU_Init->IsCacheable));
  22.     assert_param(IS_MPU_ACCESS_BUFFERABLE(MPU_Init->IsBufferable));
  23.     assert_param(IS_MPU_SUB_REGION_DISABLE(MPU_Init->SubRegionDisable));
  24.     assert_param(IS_MPU_REGION_SIZE(MPU_Init->Size));

  25.     MPU->RBAR = MPU_Init->BaseAddress;
  26.     MPU->RASR = ((uint32_t)MPU_Init->DisableExec             << MPU_RASR_XN_Pos)   |
  27.                 ((uint32_t)MPU_Init->AccessPermission        << MPU_RASR_AP_Pos)   |
  28.                 ((uint32_t)MPU_Init->TypeExtField            << MPU_RASR_TEX_Pos)  |
  29.                 ((uint32_t)MPU_Init->IsShareable             << MPU_RASR_S_Pos)    |
  30.                 ((uint32_t)MPU_Init->IsCacheable             << MPU_RASR_C_Pos)    |
  31.                 ((uint32_t)MPU_Init->IsBufferable            << MPU_RASR_B_Pos)    |
  32.                 ((uint32_t)MPU_Init->SubRegionDisable        << MPU_RASR_SRD_Pos)  |
  33.                 ((uint32_t)MPU_Init->Size                    << MPU_RASR_SIZE_Pos) |
  34.                 ((uint32_t)MPU_Init->Enable                  << MPU_RASR_ENABLE_Pos);
  35.   }
  36.   else
  37.   {
  38.     MPU->RBAR = 0x00;
  39.     MPU->RASR = 0x00;
  40.   }
  41. }
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-7 03:13 , Processed in 0.149083 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表