Project to use Serial with registers

Dependencies:   mbed

Revision:
4:d9c6de483827
Parent:
3:fba5fc24faff
--- 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);
 }