ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:285.20KB ,
资源ID:20375549      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20375549.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(初次接触GCC因此花费了我不少时间搞了半天加一个晚上终于能编译Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、记住一定要保“.c”的格式,否则没有语法显示。之后整个界面如下所示:我所加的代码是我随便找的,代码是马老师的SPI主机的发送和接收一个字节的程序。(做了一点修改)代码如下:#include stdio.havr/signal.havr/interrupt.h/#define unsigned char uchar#define SIZE 100 unsigned char SPI_rx_buffSIZE; unsigned char SPI_tx_buffSIZE;unsigned char rx_wr_index,rx_rd_index,rx_counter,rx_buffer_overfl

2、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; /sto

3、p 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允许,主机模式,MSB,允许SPI中断,极性方式01,1/16系统时钟速率 SPSR = 0x00; temp = SPSR; temp = SPDR; /清空SPI,和中断标志,使SPI空闲 SPI_ok = 1; MCUCR = 0x

4、00; GICR = 0x00; TIMSK = 0x01; /timer interrupt sources sei(); /re-enable interrupts/#pragma interrupt_handler timer0_ovf_isr:10SIGNAL(SIG_OVERFLOW0) /250us /reload counter value if(+t10mscnt=40) t10mscnt=0; if(+t500mscnt=50) senddata+; if(senddata=16) senddata=0; t500mscnt=0; /=/#pragma interrupt_h

5、andler master_spi_isr:11 SIGNAL(SIG_SPI) SPI_rx_buffrx_wr_index = SPDR; /从ISP口读出收到的字节 / SPI 空闲 if (+rx_wr_index = SIZE) rx_wr_index = 0; /放入接收缓冲区,并调整队列指针 if (+rx_counter = SIZE) rx_counter = 0; rx_buffer_overflow = 1; /接收缓冲区溢出 if (tx_counter) /如果发送缓冲区中有待发的数据 tx_counter=0表示没有数据要发送 -tx_counter; SPDR =

6、 SPI_tx_bufftx_rd_index; /发送一个字节数据,并调整指针 if (+tx_rd_index = SIZE) tx_rd_index = 0; SPI_ok = 0; /-unsigned char getSPIchar(void) unsigned char data; while (rx_counter = 0); /无接收数据,等待 data = SPI_rx_buffrx_rd_index; /从接收缓冲区取出一个SPI收到的数据 if (+rx_rd_index = SIZE) rx_rd_index = 0; /调整指针 cli(); -rx_counter;

7、 return data;/-void putSPIchar(char c) while (tx_counter = SIZE);/发送缓冲区满,等待 if (tx_counter | SPI_ok=0 ) /发送缓冲区已中有待发数据 /或SPI正在发送数据时 SPI_tx_bufftx_wr_index = c; /将数据放入发送缓冲区排队 if (+tx_wr_index = SIZE) tx_wr_index = 0; +tx_counter; else SPDR = c; /发送缓冲区中空且SPI口空闲,直接放入SPDR由SIP口发送 SPI_ok = 0; / /-/*void sp

8、i_init(void) unsigned char temp; DDRB |= 0xB0; PORTB |= 0xB0; SPSR = 0x80;*/ /-int main(void) unsigned char i; i=0; mcu_ini(); /CLI(); /关中断 /spi_init(); /初始化SPI接口 /SEI(); /开中断 while(1) putSPIchar(i); /发送一个字节 /i+; putSPIchar(i+); getSPIchar(); /接收一个字节(第一个字节为空字节) / 6、 至此代码别写完成,(呵呵,抄来的,别抽我)接下来就要做编译了。右键

9、点击工程管理窗口的刚才新建的test工程项目,会出现一右键菜单,在点击Add Files,添加刚才编写的test.c文件。如果现在就心急就按F5(make all 的快捷方式)去编译的话,恐怕还不行。否则会出现下面的提示:出现这样的情况说明还没有完成,还需要下面的操作。7、要顺利完成编译,还要配置一下 makefile ,按快捷键F6,或点击桌面(或程序里)MfileWinAVR,会弹出makefile文件配置对话框。如图:8、接下来就是要配置这个文件了。1) 点击菜单栏的Makefile的按钮,再点击“Main file name”,在出现的对话框里填写test,单击OK.2)点击Makef

10、ile-MCU type 选择芯片类型,我这里选择了M16。3)点击Makefile-Output fomat 输出格式,我选择了默认。4)点击Makefile-Optimization level 优化级别, 选择了默认。5)点击Makefile-Debug fomat 调试格式,我选择了AVR-ext-COFF(AVR Studio 4.07+,VMLAB 3.10+)。因为我要用AVR Studio 来进行软件调试和模拟。6)Makefile菜单下的其它选项我都选择了默认。特别说明的是Makefile 下的C/C+source file(s).这一项,对只有一个程序文件可以不用管,多个的

11、小弟还没有试。(_)7)完成这些后就可以保存改makefile 文件了,要和test.c保存到同一目录下。配置makefile至关重要,一般情况下的编译不成功都会与他有关。9、完成了以上这些,你就可以按F5键了,看看编译的效果吧。 make.exe all- begin -avr-gcc (GCC) 3.4.1Copyright (C) 2004 Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for

12、 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.Size before:test.elf :section size addr.text 612 0.data 0 8388704.bss 211 8388704.noinit 0 8388915.eeprom 0 8454144.stab 1788 0.stabstr 1870 0Total 4481Compiling: test.cavr-gcc -c -mmcu=atmega16 -I. -gstabs -Os -funsigned-char -funsigned-bitfields

13、 -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=test.lst -std=gnu99 -Wp,-M,-MP,-MT,test.o,-MF,.dep/test.o.d test.c -o test.o Linking: test.elfavr-gcc -mmcu=atmega16 -I. -gstabs -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhl

14、ns=test.o -std=gnu99 -Wp,-M,-MP,-MT,test.o,-MF,.dep/test.elf.d test.o -output test.elf -Wl,-Map=test.map,-cref -lmCreating load file for Flash: test.hexavr-objcopy -O ihex -R .eeprom test.elf test.hexCreating load file for EEPROM: test.eepavr-objcopy -j .eeprom -set-section-flags=.eeprom=alloc,load

15、-change-section-lma .eeprom=0 -O ihex test.elf test.eepCreating Extended Listing: test.lssavr-objdump -h -S test.elf Creating Symbol Table: test.symavr-nm -n test.elf Converting to AVR Extended COFF: test.cofavr-objcopy -debugging -change-section-address .data-0x800000 -change-section-address .bss-0

16、x800000 -change-section-address .noinit-0x800000 -change-section-address .eeprom-0x810000 -O coff-ext-avr test.elf test.cofDiscarding local symbol outside any compilation unit: .do_copy_data_start .do_copy_data_loop .do_clear_bss_start .do_clear_bss_loopSize after:.text 614 0Total 4483Errors: none- end -Process Exit Code: 010、至此我们已成功的编译完成了我们的项目了,Congratulations!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1