您的位置:首页 > 其它

mdk错误记录(持续更新)

2017-12-28 13:44 267 查看
1、 warning: #61-D: integer operation result is out of range
由于编译器默认signed int即32位有符号整数类型,而1<<31实际为0x80000000,
这样就有可能改写了符号位(最高位)
依此类推,(2<<30),(3<<29)...等都会出现编译警告问题.
解决办法为: ((unsigned int)1<<31),((unsigned int)2<<30),...
2、warning:  #3048-D: inline assembly not permitted when generating Thumb1 code原文地址::http://www.openedv.com/posts/list/0/55803.htm;jsessionid=BF32A849CB8EF733FEEC85010EBCE48C
void WFI_SET(void)
{
__ASM volatile("wfi");  
}
//关闭所有中断
void INTX_DISABLE(void)
{  
__ASM volatile("cpsid i");
}
//开启所有中断
void INTX_ENABLE(void)
{
__ASM volatile("cpsie i");  
}
//设置栈顶地址
//addr:栈顶地址
__asm void MSR_MSP(u32 addr) 
{
    MSR MSP, r0 //set Main Stack value
    BX r14
}

//===========修改如下就可以了==============//

01
//THUMB指令不支持汇编内联
02
//采用如下方法实现执行汇编指令WFI 
03
__asm 
void
 
WFI_SET(
void
)
04
{
05
    
WFI;         
06
}
07
//关闭所有中断
08
__asm 
void
 
INTX_DISABLE(
void
)
09
{
10
    
CPSID I;         
11
}
12
//开启所有中断
13
__asm 
void
 
INTX_ENABLE(
void
)
14
{
15
    
CPSIE I;         
16
}
17
//设置栈顶地址
18
//addr:栈顶地址
19
__asm 
void
 
MSR_MSP(u32 addr)
20
{
21
    
MSR MSP, r0             
//set Main Stack value
22
    
BX r14
23
}
3、提示查找不到AT91SAM9G45的驱动文件
我看了下在ARM的ATMEL的INC文件下有这颗芯片的文件,问什么找不到呢?
我猜想可能是由于我先安装的MDK,后安装的C51,由于版本或者软件本身的bug
导致的。重装MDK,解决。
4、const
以前一直用PIC和瑞萨,以为静态局部变量+const还是存贮在RAM里面,今天
分析了MDK的map文件,发现是存贮在ROM里面。







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: