您的位置 首页 新能源

32位单片机c言语编程笔记

1.单片机在系统复位或者上电之后,会在执行main()函数之前先执行一小段由maplabc32连接器自动插入的初始化程序,即所谓的starup(启…

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);

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/xinnengyuan/263967.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部