Setup custom targets in the "src/CMakeListst.txt" file. These include, the elf, hex, bin and an upload target.
This commit is contained in:
parent
d0809894ca
commit
d4c3a251a2
|
@ -1,3 +1,41 @@
|
|||
add_executable(main
|
||||
add_executable(${PROJECT_NAME}
|
||||
main.c
|
||||
)
|
||||
|
||||
# Ensure the build rules are defined
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES SUFFIX ".elf")
|
||||
|
||||
if(NOT TARGET size)
|
||||
# Set the size utility to display the size of the final binary
|
||||
add_custom_target(size ALL
|
||||
COMMAND ${CMAKE_SIZE} --format=avr --mcu=${AVR_MCU} ${CMAKE_PROJECT_NAME}.elf
|
||||
DEPENDS ${CMAKE_PROJECT_NAME}.elf
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
if(NOT TARGET hex)
|
||||
# Define how to convert ELF to HEX
|
||||
add_custom_target(hex ALL
|
||||
COMMAND ${CMAKE_OBJCOPY} -O ihex -R .eeprom ${CMAKE_PROJECT_NAME}.elf ${CMAKE_PROJECT_NAME}.hex
|
||||
DEPENDS ${CMAKE_PROJECT_NAME}.elf
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
if(NOT TARGET bin)
|
||||
# Define how to convert ELF to BIN
|
||||
add_custom_target(bin ALL
|
||||
COMMAND ${CMAKE_OBJCOPY} -O binary -R .eeprom ${CMAKE_PROJECT_NAME}.elf ${CMAKE_PROJECT_NAME}.bin
|
||||
DEPENDS ${CMAKE_PROJECT_NAME}.elf
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
if(NOT TARGET upload)
|
||||
# Upload command (adjust according to your programmer)
|
||||
add_custom_target(upload ALL
|
||||
COMMAND avrdude -c usbtiny -p ${AVR_MCU} -U flash:w:${CMAKE_PROJECT_NAME}.hex
|
||||
DEPENDS hex
|
||||
)
|
||||
endif()
|
||||
|
|
57
src/main.c
57
src/main.c
|
@ -1,8 +1,61 @@
|
|||
#include "stdio.h"
|
||||
|
||||
#include <avr/io.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include <util/delay.h>
|
||||
#include <avr/sleep.h>
|
||||
|
||||
|
||||
//#############################
|
||||
//Globals
|
||||
//#############################
|
||||
|
||||
#define LED_PIN PB0
|
||||
|
||||
|
||||
//#############################
|
||||
//Prototypes
|
||||
//#############################
|
||||
|
||||
void led_blink(void);
|
||||
|
||||
|
||||
|
||||
//#############################
|
||||
//MAIN
|
||||
//#############################
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
printf("Hello!\n");
|
||||
{
|
||||
led_blink();
|
||||
|
||||
while(1) {
|
||||
led_blink();
|
||||
_delay_ms(500);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//#############################
|
||||
//FUNCTIONS
|
||||
//#############################
|
||||
|
||||
/*
|
||||
* Input: None
|
||||
* Output: None
|
||||
* Description: Toggles the pin for the LED indicator.
|
||||
*/
|
||||
void led_blink(void) {
|
||||
//Set the DDR for output.
|
||||
DDRC |= (1<<LED_PIN);
|
||||
|
||||
PORTC ^= (1<<LED_PIN);
|
||||
_delay_ms(250);
|
||||
PORTC ^= (1<<LED_PIN);
|
||||
_delay_ms(250);
|
||||
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue