diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9881f75e8911a1b9ef783713810803bbc09c8b7f..d94e59e447fe9679b6315d91adb212df380c2ca5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -80,7 +80,7 @@ set(hal_sources ./stm32_hal/f1/src/stm32f1xx_hal_gpio.c
                 ./stm32_hal/f1/src/stm32f1xx_hal_tim.c
                 ./stm32_hal/f1/src/stm32f1xx_hal_tim_ex.c
                 ./stm32_hal/f1/src/stm32f1xx_hal_dma.c
-                ./stm32_hal/f1/src/stm32f1xx_hal_usart.c
+                ./stm32_hal/f1/src/stm32f1xx_hal_uart.c
                 ./stm32_hal/f1/src/stm32f1xx_hal_flash.c
                 ./stm32_hal/f1/src/stm32f1xx_hal_flash_ex.c
                 ./stm32_hal/f1/src/stm32f1xx_hal_adc.c
diff --git a/include/stm32f1xx_hal_conf.h b/include/stm32f1xx_hal_conf.h
index 5d51226505fd729dfd13e6ff4262ae9918cfb66c..2625df4c9f900ba83e52d11bec8b8423a53c3bb0 100755
--- a/include/stm32f1xx_hal_conf.h
+++ b/include/stm32f1xx_hal_conf.h
@@ -80,8 +80,8 @@
 #define HAL_SPI_MODULE_ENABLED
 //#define HAL_SRAM_MODULE_ENABLED
 #define HAL_TIM_MODULE_ENABLED
-//#define HAL_UART_MODULE_ENABLED
-#define HAL_USART_MODULE_ENABLED
+#define HAL_UART_MODULE_ENABLED
+//#define HAL_USART_MODULE_ENABLED
 //#define HAL_WWDG_MODULE_ENABLED
 
 /* ########################## Oscillator Values adaptation ####################*/
diff --git a/src/darwin_dyn_master.c b/src/darwin_dyn_master.c
index b09259372d45bcedd9f6a16d588668313dc86684..7acc317bb16758e5ee6f7cf1cb7bb7a06b4619aa 100755
--- a/src/darwin_dyn_master.c
+++ b/src/darwin_dyn_master.c
@@ -36,8 +36,8 @@ void darwin_dyn_master_set_tx_mode(void)
 TDynamixelMaster *darwin_dyn_master_init(void)
 {
   GPIO_InitTypeDef GPIO_InitStructure;
-  TUSART_IRQ_Priorities priorities;
-  USART_InitTypeDef Init;
+  TUART_IRQ_Priorities priorities;
+  UART_InitTypeDef Init;
 
   // initialize timer structure
   time_init(&darwin_dyn_master_timer,darwin_time_get_counts_per_us(),darwin_time_get_counts);
@@ -67,13 +67,12 @@ TDynamixelMaster *darwin_dyn_master_init(void)
   /* initialize the comm object */
   comm_init(&darwin_dyn_master_comm,0x01,&darwin_dyn_master_timer);
   Init.BaudRate     = 1000000; //57600;
-  Init.WordLength   = USART_WORDLENGTH_8B;
-  Init.StopBits     = USART_STOPBITS_1;
-  Init.Parity       = USART_PARITY_NONE;
-  Init.Mode         = USART_MODE_TX_RX;
-  Init.CLKPolarity  = USART_POLARITY_LOW;
-  Init.CLKPhase     = USART_PHASE_1EDGE;
-  Init.CLKLastBit   = USART_LASTBIT_DISABLE;
+  Init.WordLength   = UART_WORDLENGTH_8B;
+  Init.StopBits     = UART_STOPBITS_1;
+  Init.Parity       = UART_PARITY_NONE;
+  Init.Mode         = UART_MODE_TX_RX;
+  Init.HwFlowCtl    = UART_HWCONTROL_NONE;
+  Init.OverSampling = UART_OVERSAMPLING_16;
   
   priorities.irq_priority=0;
   priorities.irq_subpriority=1;
diff --git a/src/darwin_dyn_master2.c b/src/darwin_dyn_master2.c
index 82392fb78f2b94e9719adbd09f66e7a636526fc5..f43c49db775184f38e9c7733fef8804a09fdbc08 100755
--- a/src/darwin_dyn_master2.c
+++ b/src/darwin_dyn_master2.c
@@ -37,8 +37,8 @@ void darwin_dyn_master2_set_tx_mode(void)
 TDynamixelMaster *darwin_dyn_master2_init(void)
 {
   GPIO_InitTypeDef GPIO_InitStructure;
-  TUSART_IRQ_Priorities priorities;
-  USART_InitTypeDef Init;
+  TUART_IRQ_Priorities priorities;
+  UART_InitTypeDef Init;
 
   // initialize timer structure
   time_init(&darwin_dyn_master2_timer,darwin_time_get_counts_per_us(),darwin_time_get_counts);
@@ -61,13 +61,12 @@ TDynamixelMaster *darwin_dyn_master2_init(void)
   /* initialize the comm object */
   comm_init(&darwin_dyn_master2_comm,0x01,&darwin_dyn_master2_timer);
   Init.BaudRate     = 1000000; //57600;
-  Init.WordLength   = USART_WORDLENGTH_8B;
-  Init.StopBits     = USART_STOPBITS_1;
-  Init.Parity       = USART_PARITY_NONE;
-  Init.Mode         = USART_MODE_TX_RX;
-  Init.CLKPolarity  = USART_POLARITY_LOW;
-  Init.CLKPhase     = USART_PHASE_1EDGE;
-  Init.CLKLastBit   = USART_LASTBIT_DISABLE;
+  Init.WordLength   = UART_WORDLENGTH_8B;
+  Init.StopBits     = UART_STOPBITS_1;
+  Init.Parity       = UART_PARITY_NONE;
+  Init.Mode         = UART_MODE_TX_RX;
+  Init.HwFlowCtl    = UART_HWCONTROL_NONE;
+  Init.OverSampling = UART_OVERSAMPLING_16;
   
   priorities.irq_priority=0;
   priorities.irq_subpriority=2;
diff --git a/src/darwin_dyn_slave.c b/src/darwin_dyn_slave.c
index 855bccf39f1897fc9b82c9b4bd1d9f78798dbcc0..a35588338663274d82427391b6800f223d1c5c82 100755
--- a/src/darwin_dyn_slave.c
+++ b/src/darwin_dyn_slave.c
@@ -9,7 +9,7 @@ TDynamixelSlave darwin_dyn_slave;
 TDynamixelSlaveDevice darwin_dyn_slave_device;
 TTime darwin_dyn_slave_timer;
 TComm darwin_dyn_slave_comm;
-USART_InitTypeDef darwin_comm_init;
+UART_InitTypeDef darwin_comm_init;
 TScheduler *darwin_dyn_slave_sch;
 
 /* memory module */
@@ -40,7 +40,7 @@ void darwin_on_ping(void)
 // public functions
 uint8_t darwin_dyn_slave_init(TMemory **memory,TScheduler *scheduler)
 {
-  TUSART_IRQ_Priorities priorities;
+  TUART_IRQ_Priorities priorities;
   uint8_t status;
 
   // initialize timer structure
@@ -49,13 +49,12 @@ uint8_t darwin_dyn_slave_init(TMemory **memory,TScheduler *scheduler)
   /* initialize the comm object */
   comm_init(&darwin_dyn_slave_comm,0x01,&darwin_dyn_slave_timer);
   darwin_comm_init.BaudRate     = 2000000/(DEFAULT_BAUDRATE+1);
-  darwin_comm_init.WordLength   = USART_WORDLENGTH_8B;
-  darwin_comm_init.StopBits     = USART_STOPBITS_1;
-  darwin_comm_init.Parity       = USART_PARITY_NONE;
-  darwin_comm_init.Mode         = USART_MODE_TX_RX;
-  darwin_comm_init.CLKPolarity  = USART_POLARITY_LOW;
-  darwin_comm_init.CLKPhase     = USART_PHASE_1EDGE;
-  darwin_comm_init.CLKLastBit   = USART_LASTBIT_DISABLE;
+  darwin_comm_init.WordLength   = UART_WORDLENGTH_8B;
+  darwin_comm_init.StopBits     = UART_STOPBITS_1;
+  darwin_comm_init.Parity       = UART_PARITY_NONE;
+  darwin_comm_init.Mode         = UART_MODE_TX_RX;
+  darwin_comm_init.HwFlowCtl    = UART_HWCONTROL_NONE;
+  darwin_comm_init.OverSampling = UART_OVERSAMPLING_16;
   
   priorities.irq_priority=0;
   priorities.irq_subpriority=0;
diff --git a/stm32_libraries b/stm32_libraries
index c3575a6117c3a0bdac5d242d89eba6fa264c3938..cbc6cc15187483ea809552e03aa23ef3df004439 160000
--- a/stm32_libraries
+++ b/stm32_libraries
@@ -1 +1 @@
-Subproject commit c3575a6117c3a0bdac5d242d89eba6fa264c3938
+Subproject commit cbc6cc15187483ea809552e03aa23ef3df004439