主函数Main
第一次实验:12月4
这是我见过最坑爹的问题:main这个字段不能使用。。。。
在Release模式下怎么编译都过不去,报错如下
原因:不能使用main这个标识符。。。。用Main、mAin、main1、mai都行,就是main不行。
原来在DebugRel模式下,使用main仅仅是一个警告,没想到到Release这里直接过不去
第二次实验:12月5
插播一句:做第七次实验时发现又可以使用main了。。。。mmp
第三次实验:12月8
这次发现了使用main和使用其他Main、MAIN等标号的区别
ADS下__main()是C语言的内部库函数,在进入用户main()之前完成内部RAM的初始化工作。
使用main会有一些额外的效果:
使用main时:
不使用main时,如使用Main:
使用main会自动加上__main
_move_reg
_move_loo
代码
大体架构
文件init.s
IMPORT main
AREA init, CODE, READONLY
ENTRY
CODE32
start
BL main
文件main2.c
#include <stdio.h>
int Main() {
}
注意:这里有main、main2两个标识符,是为了知道汇编程序中 IMPORT main
是引入的文件还是函数,现在看了好像是函数。
大小写敏感问题
文件之间调用函数时,大小写是敏感的。ADS集成开发环境配置时,文件名大小写不敏感。
volatile关键字修饰变量
volatile的意思是易变的、可变的,作用是限制编译器优化某些变量。
用volatile变量对变量d修饰后,编译器不对这个变量的操作进行优化,代码的执行达到期望的目的。
一般说来,volatile关键字用在如下的几个地方。
(1)中断服务程序中修改的供其他程序检测的变量需要加volatile。
(2)多任务环境下各任务间共享的标志应该加volatile。
(3)存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义。