Advertisement
Guest User

Modification for STM32 USART Library

a guest
Jul 8th, 2015
424
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.84 KB | None | 0 0
  1. /**
  2.  * @brief  Wait till USART finishes transmission
  3.  */
  4. #define USART_WAIT(USARTx)                  while (!((USARTx)->ISR & USART_FLAG_TXE)) //Status Register SR is modified to ISR for STM32F37x
  5.  
  6. /**
  7.  * @brief  Puts character to USART port
  8.  * @param  *USARTx: Pointer to USARTx peripheral you will use
  9.  * @param  c: character to be send over USART
  10.  * @retval None
  11.  */
  12. static __INLINE void TM_USART_Putc(USART_TypeDef* USARTx, volatile char c) {
  13.     /* Check USART */
  14.     if ((USARTx->CR1 & USART_CR1_UE)) {
  15.         /* Wait to be ready, buffer empty */
  16.         USART_WAIT(USARTx);
  17.         /* Send data */
  18.         USARTx->TDR = (uint16_t)(c & 0x01FF);  //Data register (DR) is modified to Transmit Data Register (TDR) for STM32F37x
  19.         /* Wait to be ready, buffer empty */
  20.         USART_WAIT(USARTx);
  21.     }
  22. }
  23.  
  24. /* Private functions */
  25. void TM_GPIO_INT_EnableClock(GPIO_TypeDef* GPIOx) {
  26.     /* Set bit according to the 1 << portsourcenumber */
  27.     RCC->AHBENR |= (1 << TM_GPIO_GetPortSource(GPIOx)); //AHB1ENR bus is modified to AHBENR bus for STM32F37x
  28. }
  29.  
  30. void TM_GPIO_INT_DisableClock(GPIO_TypeDef* GPIOx) {
  31.     /* Clear bit according to the 1 << portsourcenumber */
  32.     RCC->AHBENR &= ~(1 << TM_GPIO_GetPortSource(GPIOx)); //AHB1ENR bus is modified to AHBENR bus for STM32F37x
  33. }
  34.  
  35. void TM_USART_Puts(USART_TypeDef* USARTx, char* str) {
  36.     TM_USART_t* u = TM_USART_INT_GetUsart(USARTx);
  37.     /* If we are not initialized */
  38.     if (u->Initialized == 0) {
  39.         return;
  40.     }
  41.    
  42.     /* Go through entire string */
  43.     while (*str) {
  44.         /* Wait to be ready, buffer empty */
  45.         USART_WAIT(USARTx);
  46.         /* Send data */
  47.         USARTx->TDR = (uint16_t)(*str++ & 0x01FF); //Data register (DR) is modified to Transmit Data Register (TDR) for STM32F37x
  48.         /* Wait to be ready, buffer empty */
  49.         USART_WAIT(USARTx);
  50.     }
  51. }
  52.  
  53. void TM_USART_Send(USART_TypeDef* USARTx, uint8_t* DataArray, uint16_t count) {
  54.     uint16_t i;
  55.     TM_USART_t* u = TM_USART_INT_GetUsart(USARTx);
  56.     /* If we are not initialized */
  57.     if (u->Initialized == 0) {
  58.         return;
  59.     }
  60.    
  61.     /* Go through entire data array */
  62.     for (i = 0; i < count; i++) {
  63.         /* Wait to be ready, buffer empty */
  64.         USART_WAIT(USARTx);
  65.         /* Send data */
  66.         USARTx->TDR = (uint16_t)(DataArray[i]); //Data register (DR) is modified to Transmit Data Register (TDR) for STM32F37x
  67.         /* Wait to be ready, buffer empty */
  68.         USART_WAIT(USARTx);
  69.     }
  70. }
  71.  
  72. #ifdef USE_USART1
  73. void TM_USART1_InitPins(TM_USART_PinsPack_t pinspack) {
  74.     /* Init pins */
  75. #if defined(GPIOA)
  76.     if (pinspack == TM_USART_PinsPack_1) {
  77.         TM_GPIO_InitAlternate(GPIOA, GPIO_Pin_9 | GPIO_Pin_10, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_High, GPIO_AF_7); //Modified alternate function GPIO_AF_USART1 to GPIO_AF_7 for STM32F37x
  78.     }
  79. #endif
  80. #if defined(GPIOB)
  81.     if (pinspack == TM_USART_PinsPack_2) {
  82.         TM_GPIO_InitAlternate(GPIOB, GPIO_Pin_6 | GPIO_Pin_7, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_High, GPIO_AF_7); //Modified alternate function GPIO_AF_USART1 to GPIO_AF_7 for STM32F37x
  83.     }
  84. #endif
  85.     if (pinspack == TM_USART_PinsPack_Custom) {
  86.         /* Init custom pins, callback used */
  87.         TM_USART_InitCustomPinsCallback(USART1);
  88.     }
  89. }
  90. #endif
  91.  
  92. #ifdef USE_USART2
  93. void TM_USART2_InitPins(TM_USART_PinsPack_t pinspack) {
  94.     /* Init pins */
  95. #if defined(GPIOA)
  96.     if (pinspack == TM_USART_PinsPack_1) {
  97.         TM_GPIO_InitAlternate(GPIOA, GPIO_Pin_2 | GPIO_Pin_3, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_High, GPIO_AF_7); //Modified alternate function GPIO_AF_USART2 to GPIO_AF_7 for STM32F37x
  98.     }
  99. #endif
  100. #if defined(GPIOD)
  101.     if (pinspack == TM_USART_PinsPack_2) {
  102.         TM_GPIO_InitAlternate(GPIOD, GPIO_Pin_5 | GPIO_Pin_6, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_High, GPIO_AF_7); //Modified alternate function GPIO_AF_USART2 to GPIO_AF_7 for STM32F37x
  103.     }
  104. #endif
  105.     if (pinspack == TM_USART_PinsPack_Custom) {
  106.         /* Init custom pins, callback used */
  107.         TM_USART_InitCustomPinsCallback(USART2);
  108.     }
  109. }
  110. #endif
  111.  
  112. #ifdef USE_USART3
  113. void TM_USART3_InitPins(TM_USART_PinsPack_t pinspack) {
  114.     /* Init pins */
  115. #if defined(GPIOB)
  116.     if (pinspack == TM_USART_PinsPack_1) {
  117.         TM_GPIO_InitAlternate(GPIOB, GPIO_Pin_10 | GPIO_Pin_11, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_High, GPIO_AF_7); //Modified alternate function GPIO_AF_USART3 to GPIO_AF_7 for STM32F37x
  118.     }
  119. #endif
  120. #if defined(GPIOC)
  121.     if (pinspack == TM_USART_PinsPack_2) {
  122.         TM_GPIO_InitAlternate(GPIOC, GPIO_Pin_10 | GPIO_Pin_11, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_High, GPIO_AF_7); //Modified alternate function GPIO_AF_USART3 to GPIO_AF_7 for STM32F37x
  123.     }
  124. #endif
  125. #if defined(GPIOD)
  126.     if (pinspack == TM_USART_PinsPack_3) {
  127.         TM_GPIO_InitAlternate(GPIOD, GPIO_Pin_8 | GPIO_Pin_9, TM_GPIO_OType_PP, TM_GPIO_PuPd_UP, TM_GPIO_Speed_High, GPIO_AF_7); //Modified alternate function GPIO_AF_USART3 to GPIO_AF_7 for STM32F37x
  128.     }
  129. #endif
  130.     if (pinspack == TM_USART_PinsPack_Custom) {
  131.         /* Init custom pins, callback used */
  132.         TM_USART_InitCustomPinsCallback(USART3);
  133.     }
  134. }
  135. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement