Simon NOWAK
/
RegistreSerial
Project to use Serial with registers
main.cpp@3:fba5fc24faff, 2017-04-05 (annotated)
- Committer:
- SimonNOWAK
- Date:
- Wed Apr 05 14:51:42 2017 +0000
- Revision:
- 3:fba5fc24faff
- Parent:
- 2:1deea3b4119e
- Child:
- 4:d9c6de483827
Update
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
SimonNOWAK | 0:25823c5e440a | 1 | #include "mbed.h" |
SimonNOWAK | 0:25823c5e440a | 2 | |
SimonNOWAK | 0:25823c5e440a | 3 | void usartSetup (void) { |
SimonNOWAK | 2:1deea3b4119e | 4 | RCC->IOPENR |= RCC_IOPENR_IOPBEN; |
SimonNOWAK | 0:25823c5e440a | 5 | RCC->APB2ENR |= RCC_APB2ENR_USART1EN; // enable clock for USART1 |
SimonNOWAK | 2:1deea3b4119e | 6 | USART1->BRR = 320000 / 96; // set baudrate |
SimonNOWAK | 2:1deea3b4119e | 7 | GPIOB->MODER &= ~GPIO_MODER_MODE6_0; |
SimonNOWAK | 2:1deea3b4119e | 8 | GPIOB->MODER |= GPIO_MODER_MODE6_1; |
SimonNOWAK | 1:2b6896966307 | 9 | |
SimonNOWAK | 2:1deea3b4119e | 10 | GPIOB->AFR[1] |= 0x40; |
SimonNOWAK | 2:1deea3b4119e | 11 | GPIOB->OTYPER &= ~GPIO_OTYPER_OT_6; |
SimonNOWAK | 1:2b6896966307 | 12 | USART1->CR1 |= (USART_CR1_RE | USART_CR1_TE | USART_CR1_UE); // RX, TX enable |
SimonNOWAK | 0:25823c5e440a | 13 | } |
SimonNOWAK | 0:25823c5e440a | 14 | |
SimonNOWAK | 3:fba5fc24faff | 15 | void SendChar(char Array[], int size){ |
SimonNOWAK | 3:fba5fc24faff | 16 | /* char stringtosend[] = {"Salut ca va ? Oui et toi ? Oh yes ca fonctionne bien ahahahahahahahahahahahah\r\n"};*/ |
SimonNOWAK | 1:2b6896966307 | 17 | Serial pc(USBTX, USBRX); |
SimonNOWAK | 3:fba5fc24faff | 18 | for(int send = 0; send < size; send++){ |
SimonNOWAK | 2:1deea3b4119e | 19 | //On attend que la transmission soit terminée |
SimonNOWAK | 2:1deea3b4119e | 20 | while((USART1->ISR & USART_ISR_TC) != USART_ISR_TC); |
SimonNOWAK | 2:1deea3b4119e | 21 | |
SimonNOWAK | 2:1deea3b4119e | 22 | //Si on a tout envoyé |
SimonNOWAK | 3:fba5fc24faff | 23 | if(send == size) |
SimonNOWAK | 2:1deea3b4119e | 24 | { |
SimonNOWAK | 2:1deea3b4119e | 25 | send=0; |
SimonNOWAK | 2:1deea3b4119e | 26 | USART1->ICR = USART_ICR_TCCF; /* Clear transfer complete flag */ |
SimonNOWAK | 2:1deea3b4119e | 27 | } |
SimonNOWAK | 2:1deea3b4119e | 28 | else |
SimonNOWAK | 2:1deea3b4119e | 29 | { |
SimonNOWAK | 2:1deea3b4119e | 30 | //Si le registre de données est vide |
SimonNOWAK | 2:1deea3b4119e | 31 | while (!(USART1->ISR & (USART1->ISR | USART_ISR_TXE))); |
SimonNOWAK | 3:fba5fc24faff | 32 | USART1->TDR = Array[send]; |
SimonNOWAK | 1:2b6896966307 | 33 | } |
SimonNOWAK | 0:25823c5e440a | 34 | } |
SimonNOWAK | 0:25823c5e440a | 35 | } |
SimonNOWAK | 0:25823c5e440a | 36 | |
SimonNOWAK | 3:fba5fc24faff | 37 | void ReceiveChar(int TimeOut){ |
SimonNOWAK | 3:fba5fc24faff | 38 | USART1->BRR = 320000 / 96; |
SimonNOWAK | 3:fba5fc24faff | 39 | USART1->CR1 = USART_CR1_RXNEIE | USART_CR1_RE | USART_CR1_UE; |
SimonNOWAK | 3:fba5fc24faff | 40 | char buffer[300] = {0}; |
SimonNOWAK | 3:fba5fc24faff | 41 | int counter = 0; |
SimonNOWAK | 3:fba5fc24faff | 42 | for(int i = 0; i < TimeOut; i++){ |
SimonNOWAK | 3:fba5fc24faff | 43 | if((USART1->ISR & USART_ISR_RXNE) == USART_ISR_RXNE){ |
SimonNOWAK | 3:fba5fc24faff | 44 | buffer[counter] = (uint8_t)(USART1->RDR); // Receive data, clear flag |
SimonNOWAK | 3:fba5fc24faff | 45 | counter++; |
SimonNOWAK | 3:fba5fc24faff | 46 | } |
SimonNOWAK | 3:fba5fc24faff | 47 | if(counter >= sizeof(buffer)){ |
SimonNOWAK | 3:fba5fc24faff | 48 | break; |
SimonNOWAK | 3:fba5fc24faff | 49 | } |
SimonNOWAK | 3:fba5fc24faff | 50 | } |
SimonNOWAK | 3:fba5fc24faff | 51 | usartSetup(); |
SimonNOWAK | 3:fba5fc24faff | 52 | int sizeBuffer = sizeof(buffer); |
SimonNOWAK | 3:fba5fc24faff | 53 | SendChar(buffer, sizeBuffer); |
SimonNOWAK | 3:fba5fc24faff | 54 | } |
SimonNOWAK | 3:fba5fc24faff | 55 | |
SimonNOWAK | 0:25823c5e440a | 56 | int main() { |
SimonNOWAK | 0:25823c5e440a | 57 | usartSetup(); |
SimonNOWAK | 3:fba5fc24faff | 58 | char stringtosend[] = {"Salut ca va ? Oui et toi ? Oh yes ca fonctionne bien ahahahahahahahahahahahah\r\n"}; |
SimonNOWAK | 3:fba5fc24faff | 59 | int sizeArray = sizeof(stringtosend); |
SimonNOWAK | 3:fba5fc24faff | 60 | SendChar(stringtosend, sizeArray); |
SimonNOWAK | 3:fba5fc24faff | 61 | ReceiveChar(500); |
SimonNOWAK | 0:25823c5e440a | 62 | } |