Project to use Serial with registers

Dependencies:   mbed

Revision:
1:2b6896966307
Parent:
0:25823c5e440a
Child:
2:1deea3b4119e
--- a/main.cpp	Wed Apr 05 09:00:25 2017 +0000
+++ b/main.cpp	Wed Apr 05 12:22:25 2017 +0000
@@ -5,19 +5,28 @@
     GPIOA->ODR |= GPIO_ODR_OD9;
     RCC->APB2ENR |= RCC_APB2ENR_USART1EN;            // enable clock for USART1
     USART1->BRR  = 160000 / 96;              // set baudrate
-    USART1->CR1 |= (USART_CR1_RE | USART_CR1_TE);  // RX, TX enable
-    USART1->CR1 |= USART_CR1_UE;                    // USART enable
+    GPIOA->MODER &= ~GPIO_MODER_MODE9_0;
+    GPIOA->MODER |= GPIO_MODER_MODE9_1;
+    
+    GPIOA->PUPDR |= GPIO_PUPDR_PUPD9_0;
+    GPIOA->PUPDR &= ~GPIO_PUPDR_PUPD9_1;
+    GPIOA->OTYPER &= ~GPIO_OTYPER_OT_9;
+    USART1->CR1 |= (USART_CR1_RE | USART_CR1_TE | USART_CR1_UE);  // RX, TX enable
 }
 
 void SendChar(){
-    while (!(USART1->ISR & (USART1->ISR | USART_ISR_TXE)));
+    Serial pc(USBTX, USBRX);
+    pc.printf("TXE: %02X\r\n", USART1->ISR);
     char stringtosend[4];
     stringtosend[0] = 'T';
     stringtosend[1] = 'e';
     stringtosend[2] = 'x';
     stringtosend[3] = 't';
     for(int send = 0; send < 4; send++){
-        USART1->TDR = stringtosend[send];
+        while (!(USART1->ISR & (USART1->ISR | USART_ISR_TXE))){
+            pc.printf("TXE: %02X\r\n", USART1->ISR);
+            USART1->TDR = stringtosend[send];
+        }
     }
 }