/* * usart.h * * Created on: Apr 17, 2012 * Author: Giovanni Lacava */ #ifndef USART_H_ #define USART_H_ #ifdef __cplusplus extern "C" { #endif #include "stm32f4xx.h" #include "stm32f4_discovery.h" #include "stm32f4_discovery_lis302dl.h" #include "stm32f4_discovery_audio_codec.h" /* Struttura con all'interno i campi utili ad inizializzare le uart e il dma annesso*/ struct port{ USART_TypeDef* USARTx;//#define USARTx USART_ClockInitTypeDef* USART_ClockInitStruct; uint32_t USARTx_CLK_2;//#define USARTx_CLK uint32_t USARTx_CLK; IRQn_Type USARTx_IRQn;// #define USARTx_IRQn uint16_t USARTx_TX_PIN;// #define USARTx_TX_PIN GPIO_TypeDef* USARTx_TX_GPIO_PORT;// #define USARTx_TX_GPIO_PORT uint32_t USARTx_TX_GPIO_CLK;// #define USARTx_TX_GPIO_CLK uint16_t USARTx_TX_SOURCE;// #define USARTx_TX_SOURCE uint8_t USARTx_TX_AF ;// #define USARTx_TX_AF uint16_t USARTx_RX_PIN; //#define USARTx_RX_PIN GPIO_TypeDef* USARTx_RX_GPIO_PORT;// #define USARTx_RX_GPIO_PORT uint32_t USARTx_RX_GPIO_CLK;//#define USARTx_RX_GPIO_CLK uint16_t USARTx_RX_SOURCE;// #define USARTx_RX_SOURCE uint8_t USARTx_RX_AF;//#define USARTx_RX_AF /* Definition for DMAx (USART 1) resources **********************************************/ uint32_t USARTx_DR_ADDRESS;//#define USARTx_DR_ADDRESS DMA_TypeDef* USARTx_DMA;// #define USARTx_DMA uint32_t USARTx_DMAx_CLK ;//#define USARTx_DMAx_CLK uint32_t USARTx_TX_DMA_CHANNEL;// #define USARTx_TX_DMA_CHANNEL DMA_Stream_TypeDef* USARTx_TX_DMA_STREAM;// #define USARTx_TX_DMA_STREAM uint32_t USARTx_TX_DMA_FLAG_FEIF;// #define USARTx_TX_DMA_FLAG_FEIF uint32_t USARTx_TX_DMA_FLAG_DMEIF;// #define USARTx_TX_DMA_FLAG_DMEIF uint32_t USARTx_TX_DMA_FLAG_TEIF;// #define USARTx_TX_DMA_FLAG_TEIF uint32_t USARTx_TX_DMA_FLAG_HTIF;// #define USARTx_TX_DMA_FLAG_HTIF uint32_t USARTx_TX_DMA_FLAG_TCIF;// #define USARTx_TX_DMA_FLAG_TCIF uint32_t USARTx_RX_DMA_CHANNEL;// #define USARTx_RX_DMA_CHANNEL DMA_Stream_TypeDef* USARTx_RX_DMA_STREAM;// #define USARTx_RX_DMA_STREAM uint32_t USARTx_RX_DMA_FLAG_FEIF;// #define USARTx_RX_DMA_FLAG_FEIF uint32_t USARTx_RX_DMA_FLAG_DMEIF;//#define USARTx_RX_DMA_FLAG_DMEIF uint32_t USARTx_RX_DMA_FLAG_TEIF;// #define USARTx_RX_DMA_FLAG_TEIF uint32_t USARTx_RX_DMA_FLAG_HTIF;// #define USARTx_RX_DMA_FLAG_HTIF uint32_t USARTx_RX_DMA_FLAG_TCIF;// #define USARTx_RX_DMA_FLAG_TCIF IRQn_Type USARTx_DMA_TX_IRQn ;// #define USARTx_DMA_TX_IRQn IRQn_Type USARTx_DMA_RX_IRQn;// #define USARTx_DMA_RX_IRQn int Flag_status_active; // Flag status port 0:DISABLE 1:ENABLE }; #define USER_TIMEOUT ((uint32_t)0x64) /* Waiting 1s */ // Funzioni di inizializazzione Uart e Dma void init_port(); void USART_CONFIG(int USART_ID);// Configura la UART indicata in USART_ID void de_init_port(int n_port);//Disabilita la UART selezionata con n_port (rivedere perchè dopo il suo utilizzo blocca il programma cioè non riesce più ad attivarla) // Send e Receive con utilizzo del Dma void send(int USART_ID,uint8_t* tx,int size); void receive(int USART_ID); void RBT_pack(uint8_t packetType,uint8_t opCode,uint16_t dataLenght,uint8_t* packetData,uint8_t* packet); void RBT_reset(int uart); void RBT_inquiry(int uart); void RBT_unpack(uint8_t packetType,uint8_t opCode,uint8_t* packet); #ifdef __cplusplus } #endif #endif /* USART_H_ */