Hallo Leute,
ich hatte noch die RP6uart_2 Lib vergessen. Die wird von dem Programm gebraucht und muss auch ins makefile mit:
SRC += $(RP6_LIB_PATH)/RP6common/RP6uart_2.c
... eingetragen werden.
RP6uart_2.h:
RP6uart_2.c:Code:#ifndef RP6UART_2_H #define RP6UART_2_H #include "RP6uart.h" #define PRECISION 6 #define DTOSTR_ALWAYS_SIGN 0x01 #define DTOSTR_PLUS_SIGN 0x02 #define DTOSTR_UPPERCASE 0x04 char receiveBuffer[UART_RECEIVE_BUFFER_SIZE + 1]; void writeLong(int32_t number, uint8_t base); void writeLongLength(int32_t number, uint8_t base, uint8_t length); void writeDouble(double number, uint8_t width, uint8_t prec); void writeDoubleExp(double number, uint8_t prec, uint8_t flags); uint8_t getInputLine(void); void enterString(void); #endif
In dieser Lib sind einige UART-Funktionen ausgelagert.Code:#include "RP6uart_2.h" void writeLong(int32_t number, uint8_t base) {char buffer[33]; ltoa(number, &buffer[0], base); writeString(&buffer[0]);} void writeLongLength(int32_t number, uint8_t base, uint8_t length) {char buffer[33]; ltoa(number, &buffer[0], base); int8_t cnt = length - strlen(buffer); if(cnt > 0) {for(; cnt > 0; cnt--, writeChar('0')); writeString(&buffer[0]);} else writeStringLength(&buffer[0], length, -cnt);} void writeDouble(double number, uint8_t width, uint8_t prec) {char buffer[width + 1]; dtostrf(number, width, prec, &buffer[0]); writeString(&buffer[0]);} void writeDoubleExp(double number, uint8_t prec, uint8_t flags) {char buffer[prec + 8]; dtostre(number, &buffer[0], prec, flags); writeString(&buffer[0]);} uint8_t getInputLine(void) {static uint8_t buffer_pos = 0; if(getBufferLength()) {receiveBuffer[buffer_pos] = readChar(); if((receiveBuffer[buffer_pos] == '\n') || (receiveBuffer[buffer_pos] == '\r')) {receiveBuffer[buffer_pos] = '\0'; buffer_pos = 0; return 1;} else if(buffer_pos >= UART_RECEIVE_BUFFER_SIZE) {receiveBuffer[UART_RECEIVE_BUFFER_SIZE] = '\0'; buffer_pos = 0; return 2;} buffer_pos++;} return 0;} void enterString(void) {while(!getInputLine());}
Gruß Dirk







Zitieren

Lesezeichen