第一个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