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
}
//===========修改如下就可以了==============//
3、提示查找不到AT91SAM9G45的驱动文件
我看了下在ARM的ATMEL的INC文件下有这颗芯片的文件,问什么找不到呢?
我猜想可能是由于我先安装的MDK,后安装的C51,由于版本或者软件本身的bug
导致的。重装MDK,解决。
4、const
以前一直用PIC和瑞萨,以为静态局部变量+const还是存贮在RAM里面,今天
分析了MDK的map文件,发现是存贮在ROM里面。
由于编译器默认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 | } |
我看了下在ARM的ATMEL的INC文件下有这颗芯片的文件,问什么找不到呢?
我猜想可能是由于我先安装的MDK,后安装的C51,由于版本或者软件本身的bug
导致的。重装MDK,解决。
4、const
以前一直用PIC和瑞萨,以为静态局部变量+const还是存贮在RAM里面,今天
分析了MDK的map文件,发现是存贮在ROM里面。
相关文章推荐
- Linux学习之错误与解决记录(持续更新)
- C语言遇到的错误和解决方案~~~持续更新,记录成长的过程
- 记录手边的一边错误(持续更新)
- 错误记录笔记(持续更新)
- C++编译过程中的错误集锦集锦(持续更新)
- oracle数据库学习记录(持续更新中...)
- 将在这里持续更新记录IT学习笔记
- android studio 运行中的一些小错误解决办法(持续更新中······)
- 记录各种体育活动(持续更新到不更新为止)
- Ubuntu下出现的小问题及解决方案记录(持续更新)
- WSUS客户端错误日志收集与持续更新!
- Unix C 常见编译错误总结(持续更新)
- 错误 frm-40654 记录已经被另一个用户更新,重新查询以查看修改
- JavaEE编程中错误信息解决方法( 持续更新)
- Linux常用命令及工具记录(持续更新)
- 环信推送 注意点: 会持续更新 :记录接入环信遇到的问题
- 【Python】记录四:numpy矩阵操作(持续更新)
- 一个简单CMS系统的粗略表结构记录——持续更新
- 关于java项目工程一下乱七八糟问题记录(持续更新)
- Allegro软件报错问题记录(持续更新中)