关键词不能为空

当前您在: 主页 > 英语 >

初次接触GCC因此花费了我不少时间搞了半天加一个晚上终于能编译

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-16 13:20
tags:

-

2021年2月16日发(作者:混战)


初次接触


GCC


因此花费了我不少时间,搞了半 天加一个晚上终于能编译成功了


!^_^


< br>先是安装《


PN


的配置与


GCC


入门


》操作了一遍,没有成功,之后在论坛了找啊找啊,找了< /p>


hotpower


的一篇文档,两者一结合,

ok




,呵呵。



为了更好的方便象我一样的 初学者,


现在把我操作的一系列步骤写下来,


给初学者一个参考 。



1




安装


WinA


VR,


我按照其默认的状态安装的。


(省力省心,


^_^




2




打开


Programmers Notepad,


先不要着急新建什么工程,


编写什么程序。


按照



PN


的配置与


G CC


入门


》配置一下字体显示和一些工具。



我配置的工具如下:






小弟用的是双龙的下载软件。



当然在配置


Makefile Wizard


时,要把


C:WinAVRbin


目录下的

< p>
,,



个文件复制到


C: WinAVRmfile


目录下,然后用


PN

< br>打开该目录下的



文件,并按照下


图修改。




如果

WinAVR


不是按默认目录安装的,假如安装到了


D:/ program/


下,则上图中圈中的地方


要改为


set prefix



D:/program/WinAVR/mf ile/



.


同样工具配置的第一幅图 中


command



paramete rs


栏都要改到相应的目录下面。



以上配置基本完成,下面进入实战阶段。



3





Programmers Notepad

< br>中,


点击


File->new->project


新建一工程项目,


可取名为



如图





4




新建文件,点击


File->New->Default,


5




在编辑 区内编写自己的程序代码,并保存到刚才新建


Project


的 目录下面,取名为


test.c



记住 一定要保“


.c


”的格式,否则没有语法显示。之后整个界面如 下所示:





我所加的代码是我随便找的,代码是马老师的


SPI


主机的发 送和接收一个字节的程序。


(做了一点修改)



代码如下:



#include



#include



#include



#include




//#define


unsigned



char





uchar


#define



SIZE 100





unsigned char


SPI_rx_buff[SIZE];





unsigned char


SPI_tx_buff[SIZE];





unsigned char


r x_wr_index,rx_rd_index,rx_counter,rx_buffer_overfl ow;





unsigned char


tx_wr_index,tx_rd_index,tx_counter,SPI_ok;




unsigned


char


t10mscnt;


unsigned


char


t500mscnt;


unsigned


char


senddata;



void


mcu_ini(void)


{


unsigned char temp;



cli();



MCUCR



= 0x00;



//disable all interrupts


DDRA=0xff;


PORTA=0x00;


DDRC=0xff;


PORTC=0x00;


DDRD=0xff;


PORTD=0x00;



TCCR0 = 0x00; //stop




TCNT0 = 0x06; //set count


250us




OCR0



= 0x64;



//set compare




TCCR0 = 0x02; //start timer








DDRB |= 0xBF;





//MISO=input and MOSI,SCK,SS = output








PORTB |= 0x40;





//MISO


上拉电阻有效










SPCR = 0xD5;





//SPI


允许,

< br>主机模式,


MSB



允许


SPI


中断,


极性方式


01



1/16


系统时钟速率









SPSR = 0x00;








temp = SPSR;








temp = SPDR;





//


清空


S PI


,和中断标志,使


SPI


空闲









SPI_ok = 1;








MCUCR = 0x00;




GICR



= 0x00;




TIMSK = 0x01; //timer interrupt sources




sei(); //re-enable interrupts


}



//#pragma interrupt_handler timer0_ovf_isr:10


SIGNAL(SIG_OVERFLOW0)


{


//250us




TCNT0 = 0x06; //reload counter value




if(++t10mscnt>=40)




{





t10mscnt=0;





if(++t500mscnt>=50)





{







senddata++;






if(senddata>=16)







senddata=0;






t500mscnt=0;





}




}


}


//===========================


//#pragma interrupt_handler master_spi_isr:11





SIGNAL(SIG_SPI)





{








SPI_rx_buff[rx_wr_index] = SPDR;




< br>//



ISP


口读出收到的字节







SPI_ok = 1;


























// SPI


空闲







if (++rx_wr_index == SIZE) rx_wr_index = 0;





//< /p>


放入接收缓冲区,并调整队列指










if (++rx_counter == SIZE)








{










rx_counter = 0;










rx_buffer_overflow = 1;




//


接收缓冲区溢出






}








if (tx_counter)









//


如果发送缓冲区中有待发的数据






tx_ counter==0


表示没


有数据要发送





{












--tx_counter;












SPDR = SPI_tx_buff[tx_rd_index]; //


发送一个字节数据,并调整指针













if (++tx_rd_index == SIZE)











tx_rd_index = 0;











SPI_ok = 0;







}





}




< /p>


//-------------------------------------- --


unsigned char getSPIchar(void)





{








unsigned char data;








while (rx_counter == 0);






//


无接收数据,等待









data = SPI_rx_buff[rx_rd_index];





//


从接收缓冲区取出一个


SPI


收到的数据









if (++rx_rd_index == SIZE)







rx_rd_index = 0;





//


调整指针









cli();








--rx_counter;








sei();








return data;





}





//- -----------------------------------------


void putSPIchar(char c)





{








while (tx_counter == SIZE);//


发送缓冲区满,等待









cli();








if (tx_counter || SPI_ok==0 )







//


发送缓冲区已中有待发数据









{

















//


或< /p>


SPI


正在发送数据时











SPI_tx_buff[tx_wr_index] = c;





//


将数据放入发送缓冲区排队





-


-


-


-


-


-


-


-



本文更新与2021-02-16 13:20,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/658809.html

初次接触GCC因此花费了我不少时间搞了半天加一个晚上终于能编译的相关文章

初次接触GCC因此花费了我不少时间搞了半天加一个晚上终于能编译随机文章