Simon NOWAK
/
RegistreSerial
Project to use Serial with registers
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 00003 DigitalOut myled(LED1); 00004 Serial pc(USBTX, USBRX); 00005 00006 void usartSetup (void) { 00007 RCC->IOPENR |= RCC_IOPENR_IOPBEN; 00008 RCC->APB2ENR |= RCC_APB2ENR_USART1EN; // enable clock for USART1 00009 USART1->BRR = 320000 / 96; // set baudrate 00010 GPIOB->MODER &= ~GPIO_MODER_MODE6_0; 00011 GPIOB->MODER |= GPIO_MODER_MODE6_1; 00012 00013 GPIOB->MODER &= ~GPIO_MODER_MODE7_0; 00014 GPIOB->MODER |= GPIO_MODER_MODE7_1; 00015 00016 /* GPIOB->AFR[0] |= 0x40;*/ 00017 GPIOB->OTYPER &= ~GPIO_OTYPER_OT_6; 00018 GPIOB->OTYPER |= GPIO_OTYPER_OT_7; 00019 USART1->CR1 |= (USART_CR1_RXNEIE | USART_CR1_RE | USART_CR1_TE | USART_CR1_UE); // RX, TX enable 00020 } 00021 00022 void SendChar(char Array[], int size){ 00023 00024 for(int send = 0; send < size; send++){ 00025 //On attend que la transmission soit terminée 00026 while((USART1->ISR & USART_ISR_TC) != USART_ISR_TC); 00027 00028 //Si on a tout envoyé 00029 if(send == size) 00030 { 00031 send=0; 00032 USART1->ICR = USART_ICR_TCCF; /* Clear transfer complete flag */ 00033 } 00034 else 00035 { 00036 //Si le registre de données est vide 00037 while (!(USART1->ISR & (USART1->ISR | USART_ISR_TXE))); 00038 USART1->TDR = Array[send]; 00039 } 00040 } 00041 } 00042 00043 void ReceiveChar(int TimeOut){ 00044 char buffer[300] = {0}; 00045 int counter = 0; 00046 for(int i = 0; i < TimeOut; i++){ 00047 if((USART1->ISR & USART_ISR_RXNE) == USART_ISR_RXNE){ 00048 //buffer[counter] = (uint8_t)(USART1->RDR); // Receive data, clear flag 00049 pc.printf("%02X", USART1->RDR); 00050 counter++; 00051 myled = 1; // LED is ON 00052 } 00053 if(counter >= sizeof(buffer)){ 00054 break; 00055 } 00056 } 00057 int sizeBuffer = sizeof(buffer); 00058 SendChar(buffer, sizeBuffer); 00059 } 00060 00061 int main() { 00062 usartSetup(); 00063 char stringtosend[] = {"Salut ca va ? Oui et toi ? Oh yes ca fonctionne bien ahahahahahahahahahahahah\r\n"}; 00064 int sizeArray = sizeof(stringtosend); 00065 SendChar(stringtosend, sizeArray); 00066 ReceiveChar(500); 00067 }
Generated on Tue Nov 15 2022 14:04:41 by 1.7.2