OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4434|回复: 5

lwip和SD卡程序不能共存,求助

[复制链接]

10

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
459
金钱
459
注册时间
2016-7-7
在线时间
110 小时
发表于 2017-7-13 09:44:41 | 显示全部楼层 |阅读模式
1金钱
两个程序单独都能跑通,如果把两部分程序整合一起泽lwip不能工作,网络连接不上,最后找到问题在于这三行代码,如果使用了,则lwip不能正常工作,如果不使用则sd卡不能工作,求助
        Write_Through();                //开启强制透写!
       Cache_Enable();                 //打开L1-Cache
        MPU_Memory_Protection();       


另外MPU_Memory_Protection的代码为
u8 MPU_Set_Protection(u32 baseaddr,u32 size,u32 rnum,u32 ap)
{
        MPU_Region_InitTypeDef MPU_Initure;
       
        HAL_MPU_Disable();                                                                        //配置MPU之前先关闭MPU,配置完成以后在使能MPU

        MPU_Initure.Enable=MPU_REGION_ENABLE;                                //使能该保护区域
        MPU_Initure.Number=rnum;                                            //设置保护区域
        MPU_Initure.BaseAddress=baseaddr;                            //设置基址
        MPU_Initure.Size=size;                                                    //设置保护区域大小
        MPU_Initure.SubRegionDisable=0X00;                      //禁止子区域
        MPU_Initure.TypeExtField=MPU_TEX_LEVEL0;                //设置类型扩展域为level0
        MPU_Initure.AccessPermission=(u8)ap;                            //设置访问权限,
        MPU_Initure.DisableExec=MPU_INSTRUCTION_ACCESS_ENABLE;        //允许指令访问(允许读取指令)
        MPU_Initure.IsShareable=MPU_ACCESS_NOT_SHAREABLE;       //禁止共用
        MPU_Initure.IsCacheable=MPU_ACCESS_CACHEABLE;           //打开cache  
        MPU_Initure.IsBufferable=MPU_ACCESS_BUFFERABLE;         //允许缓冲
        HAL_MPU_ConfigRegion(&MPU_Initure);                     //配置MPU
        HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);                                //开启MPU
    return 0;
}

//设置需要保护的存储块
//必须对部分存储区域进行MPU保护,否则可能导致程序运行异常
//比如MCU屏不显示,摄像头采集数据出错等等问题...
void MPU_Memory_Protection(void)
{
        MPU_Set_Protection(0x20020000,MPU_REGION_SIZE_512KB,MPU_REGION_NUMBER1,MPU_REGION_FULL_ACCESS);        //保护整个内部SRAM,包括SRAM1,SRAM2和DTCM,共512K字节

}

最佳答案

查看完整内容[请看2#楼]

cube时钟问题,用原子大大写的那个时钟就可以了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
459
金钱
459
注册时间
2016-7-7
在线时间
110 小时
 楼主| 发表于 2017-7-13 09:44:42 | 显示全部楼层
正点原子 发表于 2017-7-13 23:09
我们综合实验就可以共存

cube时钟问题,用原子大大写的那个时钟就可以了
回复

使用道具 举报

10

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
459
金钱
459
注册时间
2016-7-7
在线时间
110 小时
 楼主| 发表于 2017-7-13 09:45:51 | 显示全部楼层
        Write_Through();                //开启强制透写!
       Cache_Enable();                 //打开L1-Cache
        MPU_Memory_Protection();
这三行代码只要用了任意一行,则lwip不能正常工作
回复

使用道具 举报

10

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
459
金钱
459
注册时间
2016-7-7
在线时间
110 小时
 楼主| 发表于 2017-7-13 10:03:02 | 显示全部楼层
Cache_Enable();                 //打开L1-Cache
如果不使用这句话,SD卡不能工作
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165426
金钱
165426
注册时间
2010-12-1
在线时间
2113 小时
发表于 2017-7-13 23:09:03 | 显示全部楼层
我们综合实验就可以共存
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

10

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
459
金钱
459
注册时间
2016-7-7
在线时间
110 小时
 楼主| 发表于 2017-7-14 08:31:02 | 显示全部楼层
正点原子 发表于 2017-7-13 23:09
我们综合实验就可以共存

为什么我找不到767的综合实验,最后面只有ucos的实验
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-7 05:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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