根据应用程序说明AN4838第12页,STMEZH7只有8个区域。但是,项目STM32H747I描述中有以下语句
TXM_MODULE_MANAGER_16_MPU是一个预处理器定义,应该同时添加到C和程序集预处理器定义列表中,以允许stm32H7xx家族上的应用程序正常工作。
我搜索了这个符号,看看它是否真正引用了16个区域的MPU配置,而不是8个,我在tx_thread_schedule中找到了以下内容:
config_mpu:
LDM r0!,{r2-r9} // Load MPU regions 0-3
STM r1,{r2-r9} // Store MPU regions 0-3
LDM r0!,{r2-r9} // Load MPU regions 4-7
STM r1,{r2-r9} // Store MPU regions 4-7
#ifdef TXM_MODULE_MANAGER_16_MPU
LDM r0!,{r2-r9} // Load MPU regions 8-11
STM r1,{r2-r9} // Store MPU regions 8-11
// Regions 12-15 are reserved for the user to define.
LDM r0,{r2-r9} // Load MPU regions 12-15
STM r1,{r2-r9} // Store MPU regions 12-15
#endif
我尝试用STM32H735删除项目的符号,但它会产生意想不到的行为。,这是否意味着AN是错误的,我们可以配置16个区域,这也意味着我们可以配置128个( 16 *8)次区域?
编辑:从链接的手动P254响应后,删除TXM_MODULE_MANAGER_16_MPU以指示它有16个区域导致意外行为,MPU_TYPE.DREGION= 0x10也表示16个区域,
发布于 2022-08-31 15:27:30
https://stackoverflow.com/questions/73555658
复制相似问题