Simon NOWAK
/
RegistreSerial
Project to use Serial with registers
Diff: main.cpp
- Revision:
- 4:d9c6de483827
- Parent:
- 3:fba5fc24faff
diff -r fba5fc24faff -r d9c6de483827 main.cpp --- a/main.cpp Wed Apr 05 14:51:42 2017 +0000 +++ b/main.cpp Wed Apr 05 15:19:22 2017 +0000 @@ -1,5 +1,8 @@ #include "mbed.h" +DigitalOut myled(LED1); +Serial pc(USBTX, USBRX); + void usartSetup (void) { RCC->IOPENR |= RCC_IOPENR_IOPBEN; RCC->APB2ENR |= RCC_APB2ENR_USART1EN; // enable clock for USART1 @@ -7,14 +10,17 @@ GPIOB->MODER &= ~GPIO_MODER_MODE6_0; GPIOB->MODER |= GPIO_MODER_MODE6_1; - GPIOB->AFR[1] |= 0x40; + GPIOB->MODER &= ~GPIO_MODER_MODE7_0; + GPIOB->MODER |= GPIO_MODER_MODE7_1; + +/* GPIOB->AFR[0] |= 0x40;*/ GPIOB->OTYPER &= ~GPIO_OTYPER_OT_6; - USART1->CR1 |= (USART_CR1_RE | USART_CR1_TE | USART_CR1_UE); // RX, TX enable + GPIOB->OTYPER |= GPIO_OTYPER_OT_7; + USART1->CR1 |= (USART_CR1_RXNEIE | USART_CR1_RE | USART_CR1_TE | USART_CR1_UE); // RX, TX enable } void SendChar(char Array[], int size){ -/* char stringtosend[] = {"Salut ca va ? Oui et toi ? Oh yes ca fonctionne bien ahahahahahahahahahahahah\r\n"};*/ - Serial pc(USBTX, USBRX); + for(int send = 0; send < size; send++){ //On attend que la transmission soit terminée while((USART1->ISR & USART_ISR_TC) != USART_ISR_TC); @@ -35,20 +41,19 @@ } void ReceiveChar(int TimeOut){ - USART1->BRR = 320000 / 96; - USART1->CR1 = USART_CR1_RXNEIE | USART_CR1_RE | USART_CR1_UE; char buffer[300] = {0}; int counter = 0; for(int i = 0; i < TimeOut; i++){ if((USART1->ISR & USART_ISR_RXNE) == USART_ISR_RXNE){ - buffer[counter] = (uint8_t)(USART1->RDR); // Receive data, clear flag + //buffer[counter] = (uint8_t)(USART1->RDR); // Receive data, clear flag + pc.printf("%02X", USART1->RDR); counter++; + myled = 1; // LED is ON } if(counter >= sizeof(buffer)){ break; } } - usartSetup(); int sizeBuffer = sizeof(buffer); SendChar(buffer, sizeBuffer); }