kopia lustrzana https://github.com/Qyon/STM32_RTTY
Merge branch 'master' into master
commit
9aa646d6d9
|
@ -9,7 +9,7 @@ if(UNIX)
|
|||
CMAKE_FORCE_C_COMPILER(${TOOLCHAIN_DIR}/arm-none-eabi-gcc GNU)
|
||||
CMAKE_FORCE_CXX_COMPILER(${TOOLCHAIN_DIR}/arm-none-eabi-g++ GNU)
|
||||
else()
|
||||
set(TOOLCHAIN_DIR D:/Programy/arm_gcc/bin/)
|
||||
set(TOOLCHAIN_DIR "D:/Programy/GNU Tools ARM Embedded/5.4 2016q3/bin")
|
||||
CMAKE_FORCE_C_COMPILER(${TOOLCHAIN_DIR}/arm-none-eabi-gcc.exe GNU)
|
||||
CMAKE_FORCE_CXX_COMPILER(${TOOLCHAIN_DIR}/arm-none-eabi-g++.exe GNU)
|
||||
endif()
|
||||
|
@ -20,15 +20,16 @@ project(STM32_RTTY C ASM CXX)
|
|||
add_definitions(-DSTM32F100C8)
|
||||
add_definitions(-DSTM32F10X_MD_VL)
|
||||
add_definitions(-DUSE_STDPERIPH_DRIVER)
|
||||
add_definitions(-DSUPPORT_CPLUSPLUS)
|
||||
add_definitions(-D__ASSEMBLY__)
|
||||
|
||||
|
||||
|
||||
SET(LINKER_SCRIPT ${PROJECT_SOURCE_DIR}/arm-gcc-link.ld)
|
||||
SET(COMMON_FLAGS " -mcpu=cortex-m3 -mthumb -Wall -ffunction-sections -g -O3 -g -nostartfiles ")
|
||||
SET(COMMON_FLAGS " -mcpu=cortex-m3 -mthumb -Wall -ffunction-sections -g -O3 -g -nostartfiles ")
|
||||
SET(CMAKE_CXX_FLAGS "${COMMON_FLAGS} -std=c++11")
|
||||
SET(CMAKE_C_FLAGS "${COMMON_FLAGS} -std=gnu99")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "-Wl,-Map=${CMAKE_BINARY_DIR}/${PROJECT_NAME}.map -O3 -Wl,--gc-sections -T ${LINKER_SCRIPT}")
|
||||
SET(CMAKE_EXE_LINKER_FLAGS "-Wl,-Map=${CMAKE_BINARY_DIR}/${PROJECT_NAME}.map -lstdc++ -O3 -Wl,--gc-sections --specs=nano.specs -T ${LINKER_SCRIPT}")
|
||||
|
||||
file(GLOB_RECURSE USER_SOURCES "*.c")
|
||||
file(GLOB_RECURSE USER_SOURCES_CXX "*.cpp")
|
||||
|
@ -53,7 +54,9 @@ set(BIN_FILE ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.bin)
|
|||
add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD
|
||||
COMMAND ${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:${PROJECT_NAME}.elf> ${HEX_FILE}
|
||||
COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${PROJECT_NAME}.elf> ${BIN_FILE}
|
||||
COMMENT "Building ${HEX_FILE} \nBuilding ${BIN_FILE}")
|
||||
COMMENT "Building ${HEX_FILE} \nBuilding ${BIN_FILE}"
|
||||
COMMAND ${TOOLCHAIN_DIR}/arm-none-eabi-size ${PROJECT_NAME}.elf)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
|
||||
add_custom_target(program
|
||||
|
|
|
@ -13,6 +13,7 @@ Have a nice day ;)
|
|||
* 14.12.2016 - Reverse engineeded connections, initial hard work, resulting in working RTTY by SQ7FJB
|
||||
* 07.01.2017 - GPS now using proprietiary UBLOX protocol, more elastic code to set working frequency by SQ5RWU
|
||||
* 23.01.2017 - Test APRS code, small fixes in GPS code by SQ5RWU
|
||||
* 06.06.2017 - APRS code fix, some code cleanup
|
||||
|
||||
|
||||
#TODO
|
||||
|
@ -25,6 +26,7 @@ Shift 450Hz
|
|||
|
||||
* ```CALLSIGN``` RTTY callsign
|
||||
* ```APRS_CALLSIGN``` APRS callsign
|
||||
* ```APRS_COMMENT``` APRS comment
|
||||
* ```APRS_SSID``` APRS SSID - '1' -> 1, 'A' -> 10 etc.
|
||||
* ```RTTY_TO_APRS_RATIO``` number of RTTY frames between each APRS frame
|
||||
* ```RTTY_FREQUENCY``` RTTY frequency in MHz
|
||||
|
|
5
aprs.cpp
5
aprs.cpp
|
@ -61,7 +61,7 @@ void aprs_send_position(GPSEntry gpsData, int8_t temperature, uint16_t voltage)
|
|||
aprs_packet_counter ++;
|
||||
|
||||
sprintf(packet_buffer,
|
||||
("!%02d%02d.%02u%c/%03d%02u.%02u%cO/A=%06ld/P%dS%dT%dV%d Hello from the sky!"),
|
||||
("!%02d%02d.%02u%c/%03d%02u.%02u%cO/A=%06ld/P%dS%dT%dV%d%s"),
|
||||
abs(la_degrees), la_minutes, la_h_minutes,
|
||||
la_degrees > 0 ? 'N' : 'S',
|
||||
abs(lo_degrees), lo_minutes, lo_h_minutes,
|
||||
|
@ -70,7 +70,8 @@ void aprs_send_position(GPSEntry gpsData, int8_t temperature, uint16_t voltage)
|
|||
aprs_packet_counter,
|
||||
gpsData.sats_raw,
|
||||
temperature,
|
||||
voltage
|
||||
voltage,
|
||||
APRS_COMMENT
|
||||
);
|
||||
qaprs.sendData(packet_buffer);
|
||||
}
|
||||
|
|
1
config.h
1
config.h
|
@ -14,6 +14,7 @@
|
|||
#define APRS_CALLSIGN "DF8OE-10"
|
||||
#define RTTY_GREETING "$$$$$$RS41 modified for amateur radio use by DF8OE, enjoy and see you on the HUB... \n\r"
|
||||
#define APRS_SSID 'B'
|
||||
#define APRS_COMMENT " Hello from the sky!"
|
||||
#define RTTY_TO_APRS_RATIO 5
|
||||
|
||||
//*************frequency********************
|
||||
|
|
12
main.c
12
main.c
|
@ -36,11 +36,9 @@ int napiecie;
|
|||
volatile char flaga = 0;//((((tx_delay / 1000) & 0x0f) << 3) | Smoc);
|
||||
uint16_t CRC_rtty = 0x12ab; //checksum
|
||||
char buf_rtty[200];
|
||||
char menu[] = RTTY_GREETING;
|
||||
char init_trx[] = "\n\rPowering up TX\n\r";
|
||||
|
||||
volatile unsigned char pun = 0;
|
||||
volatile unsigned int cun = 10;
|
||||
unsigned char dev = 0;
|
||||
volatile unsigned char tx_on = 0;
|
||||
volatile unsigned int tx_on_delay;
|
||||
volatile unsigned char tx_enable = 0;
|
||||
|
@ -48,8 +46,6 @@ rttyStates send_rtty_status = rttyZero;
|
|||
volatile char *rtty_buf;
|
||||
volatile uint16_t button_pressed = 0;
|
||||
volatile uint8_t disable_armed = 0;
|
||||
unsigned char cun_off = 0;
|
||||
|
||||
void send_rtty_packet();
|
||||
|
||||
/**
|
||||
|
@ -79,7 +75,7 @@ void TIM2_IRQHandler(void) {
|
|||
GPIO_SetBits(GPIOB, RED);
|
||||
if (*(++rtty_buf) == 0) {
|
||||
tx_on = 0;
|
||||
tx_on_delay = tx_delay / (1000/RTTY_SPEED);//2500;
|
||||
tx_on_delay = tx_delay / (1000/RTTY_SPEED);
|
||||
tx_enable = 0;
|
||||
radio_disable_tx();
|
||||
}
|
||||
|
@ -172,8 +168,7 @@ int main(void) {
|
|||
radio_enable_tx();
|
||||
|
||||
uint8_t rtty_before_aprs_left = RTTY_TO_APRS_RATIO;
|
||||
//#pragma clang diagnostic push
|
||||
//#pragma clang diagnostic ignored "-Wmissing-noreturn"
|
||||
|
||||
while (1) {
|
||||
if (tx_on == 0 && tx_enable) {
|
||||
if (rtty_before_aprs_left){
|
||||
|
@ -197,7 +192,6 @@ int main(void) {
|
|||
__WFI();
|
||||
}
|
||||
}
|
||||
//#pragma clang diagnostic pop
|
||||
}
|
||||
|
||||
void send_rtty_packet() {
|
||||
|
|
Ładowanie…
Reference in New Issue