第一个AVR程序,在linux下搭建avr的开发环境
之前没玩过AVR的开发板,最近入手了一块Atmega16a的核心板,在linux下搭建好开发环境比之前弄ARM的方便很多,首先安装相关的开发包:
sudo yum install -y avrdude avr-gdb avr-libc-doc avr-gcc avr-libc avr-binutils
然后照着书上写了一个测试程序:
#include <avr/io.h>
#include <util/delay.h>
int main()
{
unsigned char led;
DDRC = 0xff;
while(1)
{
PORTC = 0x00;
_delay_ms(500);
PORTC = 0xff;
_delay_ms(500);
}
}
以及Makefile:
MCU=atmega16a
F_CPU=12000000
SRC=main.c
OUT=main
HEX_FLASH=$(OUT).hex
$(HEX_FLASH): $(OUT)
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature $(OUT) $(HEX_FLASH)
$(OUT) : main.o
avr-gcc -mmcu=$(MCU) -o $(OUT) *.o
main.o: $(SRC)
avr-gcc -DF_CPU=$(F_CPU) -funsigned-char -funsigned-bitfields -Os -fpack-struct -fshort-enums -g2 -c -std=gnu99 -mmcu=$(MCU) $(SRC)
clean:
rm -f *.o $(HEX_FLASH) $(OUT)
burn: $(HEX_FLASH)
avrdude -p m16 -c usbasp -e -U flash:w:$(HEX_FLASH)
将开发版上的Port C和GND分别串联一个2.2k的电阻和一个LED,执行:
make
make burn
烧进去,灯开始闪烁了,成功了,接下来学下PWM
Last modified on 2013-03-31