1.单片机在体系复位或许上电之后,会在碑文main()函数之前先碑文一小段由maplab c32连接器主动刺进的初始化程序,即所谓的starup(发动)代码或许crt0()代码。发动代码担任根本的内务操作,包含栈的一切重要初始化等。
2.随意调用一个库函数,比方printf(),就可能添加数千字节的碑文代码,所以要慎用库函数。
3.crt0代码担任在主程序运转之前,将界说在flash里的数组内容,从flash到RAM里,crt0另一个重要的功用是将程序声明的每个全局变量初始化为0,这会使程序愈加安全而且简单猜测,但这是有价值的。假如ram中要寄存一个很大的数组,那么即便你没有要求初始化他们,crt0代码也会花一段时间将他们清零,然后才会碑文主程序。但是嵌入式使用是不答应这种延时的。在这些使用中,数毫秒都可能使一枚贵重的功率MOSFET损坏,或许能敏捷而安全的使你的使用体系从紧迫复位状况恢复过来。在这些特别的状况中,就得界说特别函数_on_reset():
void _on_reset(void)
{
//your code
}
该函数将替代crt0代码在开端初始化前调用的一段空白的程序空间。这段程序应该尽量的短。
4.const润饰的变量保存在flash(program)中,而一般的的变量保存在ram中,发动代码碑文结束后,才干初始化而且可用。
5.RS232接口答应的波特率规模是正负2%。
6.按键去抖代码(以explore16开发板为模型,四个按键_RD6,_RD7,_RA7,_RD13)
检测输入信号
int reak(void)
{
int c=0;
if(!_RD6)
c |=8;
if(!_RD7)
c |=4;
if(!_RA7)
c |=2;
if(!_Rd13)
c |=1;
return c;
}
按下去抖:
int getK(void)
{
int i=0,r=0,j=0;
int c;
do{
Dleayms(10);
if(c==readkey())
{
if(c>r)
r=c;
i++;
}
else
i =0;
}
while(i<10);
}