 |
Arduino Core for STM32
1.0
|
Go to the documentation of this file.
36 #ifndef STM32TPL_FTOA_H_INCLUDED
37 #define STM32TPL_FTOA_H_INCLUDED
39 #include <type_traits>
49 template<
typename T>
typename std::enable_if<std::is_floating_point<T>::value,
char*>::type
ftoa(T f,
char * buf,
int precision){
56 #define MAX_PRECISION (10)
86 else if(!isnormal(f)){
113 if (f < 1.0) precision = 6;
114 else if (f < 10.0) precision = 5;
115 else if (f < 100.0) precision = 4;
116 else if (f < 1000.0) precision = 3;
117 else if (f < 10000.0) precision = 2;
118 else if (f < 100000.0) precision = 1;
124 f += rounders[precision];
141 *p++ =
'0' + intPart % 10;
184 #endif // STM32TPL_FTOA_H_INCLUDED
void end()
Disables hardware CRC calculation unit.
Definition: HardwareCRC.cpp:501
This file contains class with methods to handle UART, USART and LPUART periphery.
void(* WriteHalfCallback)()
Definition: HardwareSPI.h:1037
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
Tx Transfer completed callback.
Definition: HardwareSPI.cpp:1229
std::function< void(void)> handler
Definition: wirish.cpp:394
#define NUM_IRQ_LINES
Definition: wirish.cpp:456
HardwareSerial(UART_HandleTypeDef &uart)
Constructor.
#define min(a, b)
Definition: HardwareTimer.h:79
#define TIMER_32BIT_MAX_PERIOD
Definition: HardwareTimer.h:89
uint32_t timeout
Timeout interval in ms.
Definition: HardwareSPI.h:1027
virtual uint32_t receive32(bool lastByte=false)
Receives data from SPI periphery.
Definition: HardwareSPI.cpp:943
static void handleWriteDoneCallback(SPI_TypeDef *instance)
Handles WriteDone callback function.
Definition: HardwareSPI.cpp:1151
bool isTxEnabled(void)
Checks if transmitting mode is enabled.
Definition: HardwareSerial.h:486
uint32_t getFrequency()
Calculates SPI frequency from APB frequency and Clock Divider.
Definition: HardwareSPI.cpp:516
#define RISING
GPIO interrupt will be triggered when pin state change from LOW to HIGH.
Definition: wirish.h:1030
TIM_HandleTypeDef & _tim
Timer structure (which include timer instance) that we will use to handle timer.
Definition: HardwareTimer.h:603
uint32_t getCRCPolynomial()
Gets CRC polynomial.
Definition: HardwareSPI.cpp:737
#define HCRC_16BIT_POLYSIZE
Definition: HardwareCRC.h:132
virtual bool receiveBytesNonBlocking(uint8_t *data, uint32_t size, bool lastByte=false)
Receives data from SPI periphery in non-blocking mode using DMA or IT (interrupt) mode.
Definition: HardwareSPI.cpp:1091
bool isHwCS()
Gets, if Chip Select is handled by hardware.
Definition: HardwareSPI.cpp:338
static uint32_t getSPIIndex(SPI_TypeDef *instance)
Gets SPI instance index.
Definition: HardwareSPI.cpp:1313
@ INPUT_PULLUP
The state of the pin in this mode is reported the same way as with INPUT, but the pin voltage is gent...
Definition: wirish.h:500
void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
Rx Transfer completed callback.
Definition: HardwareSPI.cpp:1240
int available(void) override
Gets the count of bytes (characters) available for reading from the Rx buffer.
UART_InitTypeDef SerialConfig
HAL library configuration structure.
Definition: HardwareSerial.h:79
uint8_t read(int const address)
Definition: EEPROM.cpp:53
void onReceive(void(*function)(int))
Definition: HardwareI2C.cpp:539
const uint8_t SPI_MODE0
CPOL: 0 CPHA: 0.
Definition: HardwareSPI.h:86
virtual SPI_Status beginTransaction(SPISettings settings)
Sets some settings to SPI periphery before transaction.
Definition: HardwareSPI.cpp:348
virtual uint16_t transfer(uint16_t data, bool lastByte=false)
SPI transfer is based on a simultaneous send and receive data.
Definition: HardwareSPI.cpp:755
bool haveLockedSettings()
Checks if settings registers are locked.
bool isAutoReloadPreloadEnabled(void)
Checks if autoReloadPreload is enabled.
static void handleRxFullCallback(USART_TypeDef *instance)
Handles RxFull callback function.
virtual bool write16(uint16_t data, bool lastByte=false)
Sends data using SPI periphery.
Definition: HardwareSPI.cpp:865
bool begin()
Initialize SPI periphery and it's pins.
Definition: HardwareSPI.cpp:34
static HardwareTimer ** getTimerInstances()
Gets array of all created timers instances (just from this class, not timer structure).
static void handleTransferDoneCallback(SPI_TypeDef *instance)
Handles TransferDone callback function.
Definition: HardwareSPI.cpp:1161
HardwareCRC crc
Definition: HardwareCRC.cpp:539
void randomSeed(unsigned long seed)
Initializes the pseudo-random number generator, causing it to start at an arbitrary point in its rand...
Definition: wirish.cpp:1029
volatile uint16_t rxBufOVFCNT
Rx buffer overflow count, restarts when read() was called.
Definition: HardwareSerial.h:669
uint16_t getPrescaler(void)
Basic settings methods applied in real time Those setting methods can be called every time,...
void onRequest(void(*)(void))
Definition: HardwareI2C.cpp:547
bool enableGPIO(GPIO_TypeDef *GPIOx, bool enable)
Enables/Disables GPIO port periphery.
Definition: wirish.cpp:309
TimerState
This is enum of all possible timer states.
Definition: HardwareTimer.h:150
void UART_RxFullCallback()
This method is called when Rx Buffer is full.
bool start(void)
Starts timer.
uint32_t getSPIClockFreq(void)
Gets periphery SPI Clock Frequency in Hz.
Definition: HardwareSPI.cpp:454
#define RESET_CAUSE_POWER_ON_POWER_DOWN_RESET
Power-ON reset, Power-DOWN reset cause.
Definition: wirish.h:1036
static uint32_t getTimerIndex(TIM_TypeDef *instance)
Gets timer instance index, that is used in methods/attributes: handleCallback(TIM_TypeDef* instance),...
bool setClockDivider(uint32_t clockDiv)
Sets SPI clock divider.
Definition: HardwareSPI.cpp:530
bool begin()
Initialize and enable UART periphery and it's clock.
#define millis()
Returns the number of milliseconds passed since the STM board began running the current program.
Definition: wirish.h:851
bool isInterruptSetOnPin(uint8_t Pin)
Checks Pin is used as interrupt.
Definition: wirish.cpp:557
static bool readFromFlash(uint32_t pageIndex, uint32_t offset, uint8_t bank, uint8_t *data, uint32_t dataLenght)
Definition: EEPROM.cpp:93
bool bufferOverflowed()
Returns true when Rx buffer has overflowed.
static void handleWriteHalfCallback(SPI_TypeDef *instance)
Handles WriteHalf callback function.
Definition: HardwareSPI.cpp:1182
void flush(uint32_t timeout=0)
Waits for the transmission of outgoing serial data to complete.
void enableAutoReloadPreload(bool enable)
When autoReloadPreload is enabled, timer is running and period was changed, the new value of period w...
#define LSBFIRST
Least Significant Bit First.
Definition: wirish.h:1007
bool write32(uint32_t data, bool lastByte=false) override
Sends data using SPI periphery.
void(* ReceiveDoneCallback)()
Definition: HardwareSPI.h:1036
void begin(size_t size)
Definition: EEPROM.cpp:12
uint32_t getCheckValue(uint32_t initValue=DEFAULT_HCRC_INITVAL, uint32_t finalXOR=0x00)
Calculates CRC check value.
Definition: HardwareCRC.cpp:432
SPI_ErrorCode getError(void)
Gets error, that happens during begin, end or transaction.
Definition: HardwareSPI.h:861
ResetCause rst_cs
Definition: wirish.cpp:1134
size_t widthCheck(size_t width_) override
Overriden width check function from Stream class.
bool initDone
This flag is true when init(void) method was successfully called.
Definition: HardwareTimer.h:611
bool receiveBytes(uint8_t *data, uint32_t size, bool lastByte=false) override
Receives data from SPI periphery in blocking mode.
bool write(uint16_t data, bool lastByte=false) override
Sends data using SPI periphery.
static void handleReceiveDoneCallback(SPI_TypeDef *instance)
Handles ReceiveDone callback function.
Definition: HardwareSPI.cpp:1172
@ OUTPUT_OPEN_DRAIN
In open drain mode, the pin indicates "low" by accepting current flow to ground and "high" by providi...
Definition: wirish.h:471
uint32_t setIntervalItLimit
Maximum iterations limit for interval calculation, that is done in method setInterval().
Definition: HardwareTimer.h:587
bool isSending()
Checks if data are sending or transferring right now using DMA or IT and if periphery is busy.
Definition: HardwareSPI.h:271
bool flush()
Waits until DMA or IT (nonblocking transaction methods) are timed out and then aborts them.
Definition: HardwareSPI.cpp:1136
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
Tx and Rx Transfer completed callback.
Definition: HardwareSPI.cpp:1251
void setInputReverseSize(uint32_t reverse)
Sets input reverse size to CR register.
Definition: HardwareCRC.cpp:532
bool setClockDivision(uint8_t division)
Sets timer clock division.
bool updateBaudRate(unsigned long baud)
Updates baud rate at runtime.
Class, that holds SPI settings.
Definition: HardwareSPI.h:181
TimerSettings CalculateTimer(uint64_t ticks, uint32_t maxPrescaler, uint64_t maxPeriod, uint32_t minPeriod, uint32_t timerFreq, bool divEnabled, uint32_t maxIterations=UINT32_MAX)
Calculates prescaler, period and timer clock division.
#define HCRC_OUT_REVERSE_DISABLED
Definition: HardwareCRC.h:140
#define PIN_TO_PORT(Pin)
Converts Arduino like pin number (Pin) to GPIO port.
Definition: wirish.h:564
bool isDMAconnectedToRx(void)
Checks if DMA channel is connected to UART Rx and can be used for data receiving.
@ INPUT
Basic digital input.
Definition: wirish.h:487
bool resume(void)
Resumes timer.
@ RESET_CAUSE_UNKNOWN
Unknown reset cause.
Definition: wirish.h:1044
void UART_EndRxTransfer(UART_HandleTypeDef *huart)
Aborts Rx IT Transfer.
@ TS_RUNNING
Timer is running.
Definition: HardwareTimer.h:152
static void handleReceiveHalfCallback(SPI_TypeDef *instance)
Handles ReceiveHalf callback function.
Definition: HardwareSPI.cpp:1202
@ RESET_CAUSE_INDEPENDENT_WATCHDOG_RESET
Independent watchdog reset cause.
Definition: wirish.h:1050
virtual SPI_Status endTransaction(void)
This method don't have to be called at the end of the transaction when using HardwareSPI class,...
Definition: HardwareSPI.cpp:366
@ TS_STOPPED
Timer is stopped, counter register was restarted.
Definition: HardwareTimer.h:156
Calculate CRC simply and fast using this class. Calculation is done using hardware CRC calculation un...
Definition: HardwareCRC.h:190
SPISettings oldSettings
Old SPI setting - to speed up begin transaction.
Definition: HardwareSPI.h:1032
virtual uint32_t transfer32(uint32_t data, bool lastByte=false)
SPI transfer is based on a simultaneous send and receive data.
Definition: HardwareSPI.cpp:797
void setTimeout(uint32_t Timeout)
Sets timeout in milliseconds.
Definition: HardwareSPI.cpp:747
bool enableCRC(bool enable)
Enables CRC.
Definition: HardwareSPI.cpp:655
int available(void) override
Checks how many bytes are available in receiving buffer.
Definition: HardwareI2C.cpp:507
bool setOutputReverse(bool reverse)
Sets, if output CRC data bits will be reversed(reflected) or not.
Definition: HardwareCRC.cpp:491
uint32_t getPeriod()
Gets period that was set.
static uint8_t availableTimersCount
Available timer instances count.
Definition: HardwareTimer.h:696
SPI_Status
Enumerations of SPI status codes.
Definition: HardwareSPI.h:110
void reset(uint32_t initValue=DEFAULT_HCRC_INITVAL)
Resets calculation and sets initial value.
Definition: HardwareCRC.cpp:92
uint32_t compute(const uint8_t *data, uint32_t dataLength, uint32_t initValue=DEFAULT_HCRC_INITVAL, uint32_t finalXOR=0x00)
Resets and computes CRC value of the whole array.
Definition: HardwareCRC.cpp:255
bool setPolynomial32(uint32_t polynomial=CRC32_POLY)
Sets CRC-32 polynomial.
Definition: HardwareCRC.cpp:63
@ INPUT_ANALOG
This is a special mode for when the pin will be used for analog (not digital) reads.
Definition: wirish.h:495
uint8_t lastCR
Definition: HardwareCRC.h:659
#define HCRC_IN_REVERSE_DISABLED
Definition: HardwareCRC.h:148
@ RESET_CAUSE_WINDOW_WATCHDOG_RESET
Window watchdog reset cause.
Definition: wirish.h:1048
uint8_t _dataMode
Definition: HardwareSPI.h:187
#define TIMER_16BIT_MAX_PRESCALER
Definition: HardwareTimer.h:88
uint8_t getPolynomialLength()
Gets polynomial length in bits.
Definition: HardwareCRC.cpp:74
virtual uint16_t receive16(bool lastByte=false)
Receives data from SPI periphery.
Definition: HardwareSPI.cpp:924
void(* TIMPeriodElapsedCallback)()
Pointer to callback function, that is called on timer interrupt(overflow or underflow event).
Definition: HardwareTimer.h:686
EEPROMClass(void)
Definition: EEPROM.cpp:5
virtual bool transferBytes(const uint8_t *out, uint8_t *in, uint32_t size, bool lastByte=false)
Transfers data using SPI periphery in blocking mode, it is sending and receiving data simultaneously.
Definition: HardwareSPI.cpp:971
unsigned long _Randomseed
Definition: wirish.cpp:1010
virtual bool write(uint16_t data, bool lastByte=false)
Sends data using SPI periphery.
Definition: HardwareSPI.cpp:849
uint8_t endTransmission(void)
Definition: HardwareI2C.cpp:411
uint8_t availableChannelsCount()
Get count of available channels.
uint8_t getClockDivision(void)
Gets clock division value.
#define HCRC_POLYSIZE_MASK
Definition: HardwareCRC.h:129
int8_t detachInterrupt(uint8_t Pin, bool disableEXTIwhenNotUsed)
Detaches interrupt from selected pin and sets pin mode to INPUT.
Definition: wirish.cpp:738
uint32_t period
Calculated period.
Definition: HardwareTimer.h:132
void flushRX()
Clears RX FIFO buffer.
Definition: HardwareSPI.cpp:1128
uint32_t append(const uint8_t data, uint32_t finalXOR=0x00)
Appends another data to previous CRC calculation and calculates new CRC value.
Definition: HardwareCRC.cpp:100
uint32_t getLastCRC(uint32_t finalXOR=0x00)
Gets last calculated CRC result.
Definition: HardwareCRC.h:267
void stop(void)
Stops timer.
#define HCRC_32BIT_POLYSIZE
Definition: HardwareCRC.h:131
virtual bool receiveBytes(uint8_t *data, uint32_t size, bool lastByte=false)
Receives data from SPI periphery in blocking mode.
Definition: HardwareSPI.cpp:1075
uint16_t RxBufferReadPos
Rading position in Rx Buffer.
Definition: HardwareSerial.h:675
void setCallback(void(*PeriodElapsedCallback_)())
Sets callback function, that is called when timer period elapsed (interrupt).
@ CTS_OK_JUST_PERIOD
Value was established just with period (prescaler value is 0)
Definition: HardwareTimer.h:106
bool instanceExists(void)
Checks if timer instance really exists and is based on real timer.
const uint16_t page_index
Definition: EEPROM.h:144
@ CTS_TOO_HIGH_RESULT
Value (duration_100ns) is higher than maximum available time that can be set using this timer with cu...
Definition: HardwareTimer.h:100
bool pinExists(GPIO_TypeDef *GPIOx, uint16_t PPin)
Checks if pin is available on MCU.
Definition: wirish.cpp:73
bool connectDMAtoTx(DMA_HandleTypeDef &DMA_handle)
Use this method to connect DMA channel to UART Tx programmatically.
SPI_Status endTransaction() override
Disables SPI periphery and checks or sends CRC if enabled.
bool write16(uint16_t data, bool lastByte=false) override
Sends data using SPI periphery.
uint32_t errorCode(void)
Definition: HardwareI2C.h:126
bool isRxEnabled()
Checks, if SPI periphery can receive data.
Definition: HardwareSPI.cpp:443
bool setFrequency(uint32_t freq)
Calculates SPI clock divider from frequency and sets it.
Definition: HardwareSPI.cpp:479
size_t _size
Definition: EEPROM.h:147
uint32_t getPinSpeedSetting(GPIO_TypeDef *GPIOx, uint8_t INTPin)
This should return actual pin toggle speed setting.
Definition: wirish.cpp:628
void(* WriteDoneCallback)()
User callback function, that can be set using setWriteDoneCallback().
Definition: HardwareSerial.h:723
#define YIELD
Definition: HardwareSerial.h:24
void(* ErrorCallback)(SPI_ErrorCode)
Definition: HardwareSPI.h:1040
uint32_t _clock
Definition: HardwareSPI.h:185
void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi)
Tx Half Transfer completed callback.
Definition: HardwareSPI.cpp:1262
bool isTImodeEnabled()
Gets if TI mode is enabled.
Definition: HardwareSPI.cpp:646
EEPROMClass EEPROM
Definition: EEPROM.cpp:208
bool setMode(uint32_t mode)
Sets Master or Slave mode.
Definition: HardwareSPI.cpp:297
UART_AdvFeatureInitTypeDef AdvSerialConfig
HAL library advanced configuration structure.
Definition: HardwareSerial.h:94
bool setPolynomial16(uint32_t polynomial=CRC16_POLY)
Sets CRC-16 polynomial.
Definition: HardwareCRC.cpp:50
uint16_t receive(bool lastByte=false) override
Receives data from SPI periphery.
bool writeBytes(const uint8_t *data, uint32_t size, bool lastByte=false) override
Sends data using SPI periphery in blocking mode.
uint32_t receive32(bool lastByte=false) override
Receives data from SPI periphery.
This file contains override weak GPIO interrupt functions.
#define CHANGE
GPIO interrupt will be triggered when pin state change.
Definition: wirish.h:1018
@ RESET_CAUSE_LOW_POWER_RESET
Low power reset cause.
Definition: wirish.h:1046
bool isCRCenabled()
Gets if CRC is enabled.
Definition: HardwareSPI.cpp:671
void setWriteDoneCallback(void(*WriteDoneCallback_)())
Sets callback function, that will be called when all data using writeNonBlocking() method were send.
bool isTxEnabled()
Checks, if SPI periphery can transmit data.
Definition: HardwareSPI.cpp:448
void(* WriteDoneCallback)()
Definition: HardwareSPI.h:1034
enum reset_cause_e ResetCause
Possible STM32 system reset causes.
virtual bool writeBytes(const uint8_t *data, uint32_t size, bool lastByte=false)
Sends data using SPI periphery in blocking mode.
Definition: HardwareSPI.cpp:1023
#define CTS_IS_OK(state)
Checks if setInterval calculation was OK.
Definition: HardwareTimer.h:122
bool setHwCS(bool HardwareCS, bool OutputCS=true)
Sets if Chip Select pin is handled by hardware or by software (calling digitalWrite()).
Definition: HardwareSPI.cpp:327
uint32_t getPinPullSetting(GPIO_TypeDef *GPIOx, uint8_t INTPin)
This function should return actual pin pull setting (GPIO_NOPULL, GPIO_PULLUP, GPIO_PULLDOWN)
Definition: wirish.cpp:581
static uint32_t getUARTIndex(USART_TypeDef *instance)
Gets UART instance index.
#define HCRC_OUT_REVERSE_MASK
Definition: HardwareCRC.h:137
bool isSending()
Checks if data are sending right now and if periphery is busy.
#define HCRC_IN_REVERSE_ENABLED_BYTE
Definition: HardwareCRC.h:145
@ SPI_TIMEOUT
SPI timeout was reached.
Definition: HardwareSPI.h:118
@ CTS_OK_ROUNDED_DOWN
Value was established with the best possible accuracy, but is slightly lower than expected value.
Definition: HardwareTimer.h:114
@ SPI_ERR
Error, that happened during ending of transaction.
Definition: HardwareSPI.h:114
static void handleErrorCallback(SPI_TypeDef *instance)
Handles Error callback function.
Definition: HardwareSPI.cpp:1212
bool setCounterMode(uint32_t mode)
Sets timer Counter Mode.
bool instanceExists()
Checks if UART instance exists.
Definition: HardwareSerial.h:468
static uint8_t availableUARTsCount
Available UART instances count.
Definition: HardwareSerial.h:750
void lockSettings()
Locks settings registers.
virtual bool writeBytesNonBlocking(const uint8_t *data, uint32_t size, bool lastByte=false)
Sends data using SPI periphery using DMA or IT (interrupt) mode.
Definition: HardwareSPI.cpp:1039
@ SPI_OK
Transaction was without known error.
Definition: HardwareSPI.h:112
bool disconnectDMAfromTx()
Disconnects DMA channel from UART Tx.
uint8_t pinMode(GPIO_TypeDef *GPIOx, uint16_t PPin, WiringPinMode mode, uint32_t speed)
Sets mode of selected pin.
Definition: wirish.cpp:250
void InterruptHandler(uint8_t lineFrom, uint8_t lineTo)
Include this in every EXTI interrupt handler for lines 0-15.
Definition: wirish.cpp:908
int peek(void) override
Reads one byte from receiving buffer and without removing it from buffer.
Definition: HardwareI2C.cpp:523
#define min(a, b)
Compares 2 values and returns lower one.
Definition: HardwareSerial.cpp:65
uint8_t rxBuf[HS_RX_BUF_SIZE]
DMA or IT receiving buffer.
Definition: HardwareSerial.h:663
uint8_t inputReverse
Definition: HardwareCRC.h:679
bool isFullDuplex()
Check, if full duplex mode is enabled for this periphery.
Definition: HardwareSPI.cpp:438
HardwareSPI(SPI_HandleTypeDef &hspi)
Constructor.
Definition: HardwareSPI.cpp:21
GPIO_TypeDef * getInterruptGPIOfromPin(uint16_t Pin)
Gets, what GPIO is attached to EXTI line, that belongs to PPin.
Definition: wirish.cpp:471
uint32_t lastFXOR
Definition: HardwareCRC.h:666
IRQn_Type extiirqn
Definition: wirish.cpp:393
void HS_UART_AbortReceive_IT(UART_HandleTypeDef *huart)
Copied from HAL UART library.
static HardwareSPI * instances[]
Array of all created SPI instances (just from this class, not SPI structure).
Definition: HardwareSPI.h:1091
uint32_t getMode()
Gets, if periphery mode is Master or Slave.
Definition: HardwareSPI.cpp:309
void removeThisFromInstArr()
Removes this instance from instances array.
Definition: HardwareSPI.cpp:1306
uint32_t transfer32(uint32_t data, bool lastByte=false) override
SPI transfer is based on a simultaneous send and receive data.
uint64_t getInterval(void)
Calculates interval from period, prescaler and timer clock division.
@ SPI_CRC_DATAWIDTH
CRC size will be automatically aligned to data width, but data width have to be set to 8 or 16.
Definition: HardwareSPI.h:165
bool enableTImode(bool enable)
Enables or disabled TI mode.
Definition: HardwareSPI.cpp:624
uint64_t getInterval_ns(void)
Calculates interval from period, prescaler and timer clock division.
void InterruptHandler(uint8_t lineFrom, uint8_t lineTo)
Include this in every EXTI interrupt handler for lines 0-15.
Definition: wirish.cpp:908
uint8_t * _data
Definition: EEPROM.h:146
bool isDMAconnectedToTx(void)
Checks if DMA channel is connected to SPI Tx and can be used for data writing/transferring.
Definition: HardwareSPI.cpp:289
bool isHwOutputCS()
Gets, if Chip Select handled by hardware is set to output mode.
Definition: HardwareSPI.cpp:343
void addThisToInstArr()
Writes new class instance to array of all timer instances.
uint8_t * getDataPtr()
Definition: EEPROM.cpp:198
uint16_t prescaler
Calculated prescaler.
Definition: HardwareTimer.h:130
void setPeriod(uint32_t val)
Sets period that was set.
bool isReceiving()
Checks if data are receiving or transferring right now using DMA or IT and if periphery is busy.
Definition: HardwareSPI.h:279
static uint8_t availableSPIsCount
Available SPI instances count.
Definition: HardwareSPI.h:1096
bool supportsSelectionCounterMode()
Setup methods Those methods have to be called before init(void) method to apply settings.
int read(void) override
Reads incoming serial data.
void abortDMARx()
Aborts Rx DMA Transfer.
#define HS_RX_BUF_SIZE
Rx buffer size.
Definition: HardwareSerial.h:53
uint32_t getCounterMode(void)
Gets timer Counter Mode.
unsigned long _startMillis
Used for timeout measurement.
Definition: Stream.h:66
static uint8_t getAvailableTimersCount()
Gets available timer instances count.
bool end()
Deinitialization and disabling SPI periphery, it can be used for "sleep mode".
Definition: HardwareSPI.cpp:52
bool init(void)
Initialize timer instance.
SPI_CRCLength getCRClength()
Gets CRC length.
Definition: HardwareSPI.cpp:714
uint32_t getDivTimerClockFreq(void)
Gets timer clock frequency after clock division.
@ RESET_CAUSE_SOFTWARE_RESET
Software reset cause.
Definition: wirish.h:1052
void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi)
Rx Half Transfer completed callback.
Definition: HardwareSPI.cpp:1273
bool isTransacting()
Checks if data are sending, receiving, transferring right now using DMA or IT and if periphery is bus...
Definition: HardwareSPI.h:295
uint8_t getDataMode()
Gets, what data mode is set.
Definition: HardwareSPI.cpp:399
SerialMode
Enumeration of 3 UART direction modes.
Definition: HardwareSerial.h:67
void end()
Deinitialization and disabling UART periphery, it can be used for "sleep mode".
This class is for handling SPI periphery.
Definition: HardwareSPI.h:220
@ TS_ERROR
There is some error with timer.
Definition: HardwareTimer.h:158
@ OUTPUT
Basic digital output: when the pin is HIGH, the voltage is held at +3.3v (Vcc) and when it is LOW,...
Definition: wirish.h:467
virtual uint16_t transfer16(uint16_t data, bool lastByte=false)
SPI transfer is based on a simultaneous send and receive data.
Definition: HardwareSPI.cpp:776
bool _dirty
Definition: EEPROM.h:148
void setPrescaler(uint16_t factor)
Sets prescaler that was set.
This file contains class with methods to handle SPI periphery.
bool disconnectDMAfromTx()
Disconnects DMA channel from SPI Tx.
Definition: HardwareSPI.cpp:267
bool setPolynomial8(uint32_t polynomial=CRC8_POLY)
Sets CRC-8 polynomial.
Definition: HardwareCRC.cpp:37
bool setDataBits(uint16_t bits)
Sets SPI data width in bits.
Definition: HardwareSPI.cpp:550
bool begin()
Definition: HardwareI2C.cpp:13
void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi)
SPI error callback.
Definition: HardwareSPI.cpp:1295
uint8_t requestFrom(uint8_t address, size_t size, bool sendStop)
Definition: HardwareI2C.cpp:69
void unlockSettings()
Advanced settings methods applied in real time Those setting methods can be called every time,...
@ SPI_BUSY_ERR
SPI periphery is busy.
Definition: HardwareSPI.h:116
@ INPUT_FLOATING
Synonym for INPUT.
Definition: wirish.h:516
uint8_t divider
Timer clock division.
Definition: HardwareTimer.h:134
uint16_t receive16(bool lastByte=false) override
Receives data from SPI periphery.
bool WirishInit(void)
Initializes some wirish functions.
Definition: wirish.cpp:931
int8_t attachInterrupt(uint8_t Pin, std::function< void(void)> handler, int mode)
Attaches interrupt to selected pin.
Definition: wirish.cpp:669
bool setInputReverse(bool reverse)
Sets, if input data bits will be reversed(reflected) or not.
Definition: HardwareCRC.cpp:481
TimerSettings setInterval_ns(uint64_t interval_ns)
Easiest settings methods applied in real time.
uint64_t CalculateTime_ns(uint32_t prescaler, uint32_t period, uint32_t timerFreq, uint8_t clockDiv)
Calculates interval from period and prescaler and clock division.
Definition: HardwareTimer.h:622
void deInit(void)
Deinitialization of timer.
#define HCRC_8BIT_POLYSIZE
Definition: HardwareCRC.h:133
uint32_t getClockInstFrequency()
Gets UART periphery clock frequency.
void __attribute__((optimize("Ofast"))) delayMicroseconds(int32_t microseconds)
Definition: wirish.cpp:997
bool transferBytes(const uint8_t *out, uint8_t *in, uint32_t size, bool lastByte=false) override
Transfers data using SPI periphery in blocking mode, it is sending and receiving data simultaneously.
@ SPI_CRC_ERR
SPI CRC calculation error (see enableCRC())
Definition: HardwareSPI.h:124
bool connectDMAtoRx(DMA_HandleTypeDef &DMA_handle)
Use this method to connect DMA channel to UART Rx programmatically.
#define I2C_TIMEOUT_STOPF
Definition: HardwareI2C.h:66
bool canSetInterruptOnPin(uint8_t Pin)
Checks if EXTI line, that belongs to Pin is not used by other pin's interrupt.
Definition: wirish.cpp:459
uint8_t _bitOrder
Definition: HardwareSPI.h:186
@ TS_PAUSED
Timer is paused, counter register is unchanged.
Definition: HardwareTimer.h:154
bool disconnectDMAfromRx()
Disconnects DMA channel from UART Rx.
Definition: HardwareSerial.h:152
uint32_t lastCRCCheckValue
Definition: HardwareCRC.h:667
bool commit()
Definition: EEPROM.cpp:81
@ INPUT_PULLDOWN
The state of the pin in this mode is reported the same way as with INPUT, but the pin voltage is gent...
Definition: wirish.h:508
uint32_t computeAndWriteToEnd(uint8_t *data, uint32_t dataLength, uint32_t initValue=DEFAULT_HCRC_INITVAL, uint32_t finalXOR=0x00)
Resets, computes CRC value of the whole array and attaches calculated CRC value at the end of the arr...
Definition: HardwareCRC.cpp:270
#define HCRC_IN_REVERSE_ENABLED_HALFWORD
Definition: HardwareCRC.h:146
size_t write(uint8_t) override
Writes one unsigned byte (character).
Definition: HardwareI2C.cpp:469
bool isMaster(void)
Definition: HardwareI2C.h:118
bool setPolynomial7(uint32_t polynomial=CRC7_POLY)
Sets CRC-7 polynomial.
Definition: HardwareCRC.cpp:24
SPI_CRCLength
Enumerations of SPI CRC lengths.
Definition: HardwareSPI.h:160
This file contains basic (Arduino like) GPIO manipulation functions, delay, random,...
#define HCRC_IN_REVERSE_MASK
Definition: HardwareCRC.h:143
static void handleTxDoneCallback(USART_TypeDef *instance)
Handles TxDone callback function.
bool isInitDone(void)
Checks if timer was initialized.
bool isDMAconnectedToRx(void)
Checks if DMA channel is connected to SPI Rx and can be used for data receiving/transferring.
Definition: HardwareSPI.cpp:280
#define HCRC_OUT_REVERSE_ENABLED
Definition: HardwareCRC.h:139
void setClock(uint32_t)
Definition: HardwareI2C.cpp:59
HardwareTimer(TIM_HandleTypeDef &tim)
Hardware timer constructor.
#define FALLING
GPIO interrupt will be triggered when pin state change from HIGH to LOW.
Definition: wirish.h:1024
#define PIN_TO_PORT_PIN(Pin)
Converts Arduino like pin number (Pin) to Pin of port (PPin).
Definition: wirish.h:557
bool connectDMAtoTx(DMA_HandleTypeDef &DMA_handle)
Use this method to connect DMA channel to SPI Tx programmatically.
Definition: HardwareSPI.cpp:163
#define W_BAD_ARG
Wirish status Bad Arguments.
Definition: wirish.h:119
#define FLASH_PAGES_COUNT
Flash page count (127 pages for STM32L432KC)
Definition: EEPROM.h:30
TIM_HandleTypeDef createdTim
We need this structure when calling HardwareTimer(TIM_TypeDef* instance) constructor,...
Definition: HardwareTimer.h:598
#define MAX_NBYTE_SIZE
Definition: HardwareI2C.h:64
SPI_Status transactionError
Last transaction status.
Definition: HardwareSPI.h:1045
bool setBitOrder(uint8_t bitOrder)
Sets bit order to LSB or MSB.
Definition: HardwareSPI.cpp:415
bool setCRCPolynomial(uint32_t polynomial)
Sets CRC polynomial.
Definition: HardwareSPI.cpp:723
static HardwareSerial ** getUARTInstances()
Gets array of all created UART instances (just from this class, not UART structure).
bool instanceExists(void)
Checks if SPI instance exists.
Definition: HardwareSPI.h:303
Definition: wirish.cpp:391
@ CTS_BAD_ARGUMENT
Check if values maxPrescaler, maxCounter, minPeriod are correct.
Definition: HardwareTimer.h:98
@ CTS_OK_JUST_PRESCALER
Value was established just with prescaler (period value is 0) - This should never happens when you ha...
Definition: HardwareTimer.h:108
~HardwareSerial()
Destructor.
static void handleCallback(TIM_TypeDef *instance)
Expert methods Those methods you probably don't need to call in basic timer operation.
void addThisToInstArr()
Writes new class instance to array of all timer instances.
Definition: HardwareSPI.cpp:1300
bool instanceExists(void)
Checks if I2C instance exists.
Definition: HardwareI2C.h:114
uint8_t status()
Definition: HardwareI2C.cpp:50
int peek(void) override
Returns the next byte (character) of incoming serial data without removing it from the Rx buffer.
This file contains class, that provides hardware CRC calculation.
CalculateTimerState state
Calculation state.
Definition: HardwareTimer.h:136
@ RESET_CAUSE_BROWNOUT_RESET
Brownout reset cause.
Definition: wirish.h:1060
virtual SPI_Status lastTransactionStatus()
Checks last transaction status.
Definition: HardwareSPI.h:878
uint32_t getCount(void)
Gets current value in counter register.
bool isDMAconnectedToTx(void)
Checks if DMA channel is connected to UART Tx and can be used for data transmitting.
virtual uint16_t receive(bool lastByte=false)
Receives data from SPI periphery.
Definition: HardwareSPI.cpp:908
uint32_t getTimerClockFreq(void)
Gets timer clock frequency before clock division.
@ CTS_OK_BEST_ACCURACY
Value was established with the best possible accuracy.
Definition: HardwareTimer.h:110
#define I2C_BUFFER_LENGTH
Definition: HardwareI2C.h:55
void removeThisFromInstArr()
Removes this instance from instances array.
void setCount(uint32_t val)
Sets new value to counter register.
#define HCRC_IN_REVERSE_ENABLED_WORD
Definition: HardwareCRC.h:147
IRQLine irqlines[]
Definition: wirish.cpp:400
bool setDataMode(uint8_t dataMode)
Sets data mode.
Definition: HardwareSPI.cpp:372
UART_HandleTypeDef * _uart
UART periphery handle structure.
Definition: HardwareSerial.h:642
void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi)
Tx and Rx Half Transfer callback.
Definition: HardwareSPI.cpp:1284
virtual bool write32(uint32_t data, bool lastByte=false)
Sends data using SPI periphery.
Definition: HardwareSPI.cpp:884
#define HCRC_7BIT_POLYSIZE
Definition: HardwareCRC.h:134
void removeThisFromInstArr()
Removes this instance from instances array.
Structure, those data was calculated in setInterval method.
Definition: HardwareTimer.h:128
~HardwareTimer()
Class destructor.
TimerSettings setInterval(uint64_t interval_ms)
Calculates period and prescaler and clock division from set interval.
void(* TransferDoneCallback)()
Definition: HardwareSPI.h:1035
void pause(void)
Timer control functions Those methods can be called just after init(void) method.
@ SPI_CRC_2BYTES
CRC will be 16 bits wide.
Definition: HardwareSPI.h:169
void UART_EndTxTransfer(UART_HandleTypeDef *huart)
Aborts Tx IT Transfer.
void flush(void)
Definition: HardwareI2C.cpp:533
bool check(const uint8_t *data, uint32_t dataLength, uint32_t initValue=DEFAULT_HCRC_INITVAL, uint32_t finalXOR=0x00)
Checks if the array (with CRC attached at the end) is valid.
Definition: HardwareCRC.cpp:354
@ SPI_CRC_1BYTE
CRC will be 8 bits wide.
Definition: HardwareSPI.h:167
#define MSBFIRST
Most Significant Bit First.
Definition: wirish.h:1012
unsigned long random(unsigned long from, unsigned long to)
The random function generates pseudo-random numbers.
Definition: wirish.cpp:1013
void setClockStretchLimit(uint32_t)
Definition: HardwareI2C.cpp:64
size_t writeNonBlocking(const uint8_t *buffer, size_t size)
Writes binary data to the serial port.
static uint8_t getAvailableUARTsCount()
Gets available UARTs instances count.
void addThisToInstArr()
Writes new class instance to array of all timer instances.
void abortDMATx()
Aborts Tx DMA Transfer.
#define max(a, b)
Definition: HardwareTimer.h:82
uint8_t PortAndPinToPinNum(GPIO_TypeDef *GPIOx, uint16_t PPin)
Converts GPIOx port and it's pin to Arduino like pin number.
Definition: wirish.cpp:176
This file contains HardwareTimer class, that you can use to easy timer handling.
SPI_HandleTypeDef * _hspi
Pointer to SPI handle structure.
Definition: HardwareSPI.h:1017
uint16_t getDataBits()
Gets set data width in bits.
Definition: HardwareSPI.cpp:613
bool is32BitTimer()
Checks if timer is 32bit or 16bit.
bool connectDMAtoRx(DMA_HandleTypeDef &DMA_handle)
Use this method to connect DMA channel to SPI Rx programmatically.
Definition: HardwareSPI.cpp:75
void(* ReceiveHalfCallback)()
Definition: HardwareSPI.h:1039
bool WirishInitDone
Definition: wirish.cpp:975
bool setCRClength(SPI_CRCLength length)
Sets CRC length.
Definition: HardwareSPI.cpp:676
static void handleTransferHalfCallback(SPI_TypeDef *instance)
Handles TransferHalf callback function.
Definition: HardwareSPI.cpp:1192
bool beginTransmission(uint16_t address, uint32_t bytesCountToSend)
Definition: HardwareI2C.cpp:261
bool disconnectDMAfromRx()
Disconnects DMA channel from SPI Rx.
Definition: HardwareSPI.cpp:252
@ CTS_OK_ROUNDED_UP
Value was established with the best possible accuracy, but is slightly higher than expected value.
Definition: HardwareTimer.h:112
static uint32_t writeToFlash(uint32_t pageIndex, uint8_t bank, const uint8_t *data, uint32_t dataLenght)
Definition: EEPROM.cpp:130
This class is for handling UART periphery.
Definition: HardwareSerial.h:109
uint32_t getClockDivider()
Gets clock divider.
Definition: HardwareSPI.cpp:545
@ CTS_TOO_LOW_RES
Value (duration_100ns) is lower than minumum available time that can be set using this timer with cur...
Definition: HardwareTimer.h:102
static HardwareTimer * instances[]
Array of all created timers instances (just from this class, not timer structure).
Definition: HardwareTimer.h:691
std::enable_if< std::is_floating_point< T >::value, char * >::type ftoa(T f, char *buf, int precision)
Converts floating point number to char array.
Definition: ftoa.h:49
uint64_t CalculateTime_ms(uint32_t prescaler, uint32_t period, uint32_t timerFreq, uint8_t clockDiv)
Calculates interval from period and prescaler and clock division.
Definition: HardwareTimer.h:638
void(* TransferHalfCallback)()
Definition: HardwareSPI.h:1038
size_t readBytes(char *buffer, size_t size) override
@Reads characters from the Rx buffer into your buffer.
uint32_t _startMillis
Start time of transferring/receiving/sending data non-blocking.
Definition: HardwareSPI.h:1022
unsigned long _timeout
Number of milliseconds to wait for the next char before aborting timed read.
Definition: Stream.h:61
int read(void) override
Reads one byte from receiving buffer and removes it from buffer.
Definition: HardwareI2C.cpp:512
Handle timers in interrupt mode really easy using this class. In table below, you can see methods se...
Definition: HardwareTimer.h:211
bool begin()
Enables CRC hardware calculation unit.
Definition: HardwareCRC.cpp:11
uint8_t getBitOrder()
Gets, if bit order is set to LSB or MSB.
Definition: HardwareSPI.cpp:430
~HardwareSPI()
Destructor.
Definition: HardwareSPI.cpp:25
#define TIMER_16BIT_MAX_PERIOD
Definition: HardwareTimer.h:90
SPI_Status beginTransaction(SPISettings settings) override
Enables SPI periphery and sets some settings.
bool end()
Definition: HardwareI2C.cpp:41
#define W_OK
Wirish status OK.
Definition: wirish.h:114
virtual bool transferBytesNonBlocking(const uint8_t *out, uint8_t *in, uint32_t size, bool lastByte=false)
Transfers data using SPI periphery using DMA or IT (interrupt) mode, it is sending and receiving data...
Definition: HardwareSPI.cpp:987
size_t write(uint8_t c) override
Writes binary data to the serial port.
const char * getResetCauseName()
Gets the system reset cause as an ASCII-printable name string from a reset cause type.
Definition: wirish.cpp:1088
WiringPinMode
Pin mode enumerations.
Definition: wirish.h:466
bool supportsClockDivision()
Checks if timer supports clock division.
uint16_t transfer16(uint16_t data, bool lastByte=false) override
SPI transfer is based on a simultaneous send and receive data.
@ RESET_CAUSE_EXTERNAL_RESET_PIN_RESET
External reset pin reset cause.
Definition: wirish.h:1058
bool end()
Definition: EEPROM.cpp:34
#define I2C_TIMEOUT_BUSY
Definition: HardwareI2C.h:67
uint32_t getTimeout()
Gets timeout in milliseconds.
Definition: HardwareSPI.cpp:751
@ SPI_GEN_ERR
SPI generic error.
Definition: HardwareSPI.h:120
uint16_t transfer(uint16_t data, bool lastByte=false) override
SPI transfer is based on a simultaneous send and receive data.
@ SPI_ERR_LOCKED
SPI periphery is locked already.
Definition: HardwareSPI.h:122
static HardwareSerial * instances[]
Array of all created UART instances (just from this class, not UART structure).
Definition: HardwareSerial.h:745
GPIO_TypeDef * GPIO_Conversion_Table[]
Definition: wirish.cpp:13
#define W_ERR
Wirish status Error.
Definition: wirish.h:124
void write(int const address, uint8_t const value)
Definition: EEPROM.cpp:64
const uint8_t * getConstDataPtr() const
Definition: EEPROM.cpp:203
TimerState state(void)
Checks timer state.