Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @brief Wait till USART finishes transmission
- */
- #define USART_WAIT(USARTx) while (!((USARTx)->ISR & USART_FLAG_TXE)) //Status Register SR is modified to ISR for STM32F37x
- /**
- * @brief Puts character to USART port
- * @param *USARTx: Pointer to USARTx peripheral you will use
- * @param c: character to be send over USART
- * @retval None
- */
- static __INLINE void TM_USART_Putc(USART_TypeDef* USARTx, volatile char c) {
- /* Check USART */
- if ((USARTx->CR1 & USART_CR1_UE)) {
- /* Wait to be ready, buffer empty */
- USART_WAIT(USARTx);
- /* Send data */
- USARTx->TDR = (uint16_t)(c & 0x01FF); //Data register (DR) is modified to Transmit Data Register (TDR) for STM32F37x
- /* Wait to be ready, buffer empty */
- USART_WAIT(USARTx);
- }
- }
- /* Private functions */
- void TM_GPIO_INT_EnableClock(GPIO_TypeDef* GPIOx) {
- /* Set bit according to the 1 << portsourcenumber */
- RCC->AHBENR |= (1 << TM_GPIO_GetPortSource(GPIOx)); //AHB1ENR bus is modified to AHBENR bus for STM32F37x
- }
- void TM_GPIO_INT_DisableClock(GPIO_TypeDef* GPIOx) {
- /* Clear bit according to the 1 << portsourcenumber */
- RCC->AHBENR &= ~(1 << TM_GPIO_GetPortSource(GPIOx)); //AHB1ENR bus is modified to AHBENR bus for STM32F37x
- }
- void TM_USART_Puts(USART_TypeDef* USARTx, char* str) {
- TM_USART_t* u = TM_USART_INT_GetUsart(USARTx);
- /* If we are not initialized */
- if (u->Initialized == 0) {
- return;
- }
- /* Go through entire string */
- while (*str) {
- /* Wait to be ready, buffer empty */
- USART_WAIT(USARTx);
- /* Send data */
- USARTx->TDR = (uint16_t)(*str++ & 0x01FF); //Data register (DR) is modified to Transmit Data Register (TDR) for STM32F37x
- /* Wait to be ready, buffer empty */
- USART_WAIT(USARTx);
- }
- }
- void TM_USART_Send(USART_TypeDef* USARTx, uint8_t* DataArray, uint16_t count) {
- uint16_t i;
- TM_USART_t* u = TM_USART_INT_GetUsart(USARTx);
- /* If we are not initialized */
- if (u->Initialized == 0) {
- return;
- }
- /* Go through entire data array */
- for (i = 0; i < count; i++) {
- /* Wait to be ready, buffer empty */
- USART_WAIT(USARTx);
- /* Send data */
- USARTx->TDR = (uint16_t)(DataArray[i]); //Data register (DR) is modified to Transmit Data Register (TDR) for STM32F37x
- /* Wait to be ready, buffer empty */
- USART_WAIT(USARTx);
- }
- }
- #ifdef USE_USART1
- void TM_USART1_InitPins(TM_USART_PinsPack_t pinspack) {
- /* Init pins */
- #if defined(GPIOA)
- if (pinspack == TM_USART_PinsPack_1) {
- 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
- }
- #endif
- #if defined(GPIOB)
- if (pinspack == TM_USART_PinsPack_2) {
- 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
- }
- #endif
- if (pinspack == TM_USART_PinsPack_Custom) {
- /* Init custom pins, callback used */
- TM_USART_InitCustomPinsCallback(USART1);
- }
- }
- #endif
- #ifdef USE_USART2
- void TM_USART2_InitPins(TM_USART_PinsPack_t pinspack) {
- /* Init pins */
- #if defined(GPIOA)
- if (pinspack == TM_USART_PinsPack_1) {
- 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
- }
- #endif
- #if defined(GPIOD)
- if (pinspack == TM_USART_PinsPack_2) {
- 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
- }
- #endif
- if (pinspack == TM_USART_PinsPack_Custom) {
- /* Init custom pins, callback used */
- TM_USART_InitCustomPinsCallback(USART2);
- }
- }
- #endif
- #ifdef USE_USART3
- void TM_USART3_InitPins(TM_USART_PinsPack_t pinspack) {
- /* Init pins */
- #if defined(GPIOB)
- if (pinspack == TM_USART_PinsPack_1) {
- 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
- }
- #endif
- #if defined(GPIOC)
- if (pinspack == TM_USART_PinsPack_2) {
- 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
- }
- #endif
- #if defined(GPIOD)
- if (pinspack == TM_USART_PinsPack_3) {
- 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
- }
- #endif
- if (pinspack == TM_USART_PinsPack_Custom) {
- /* Init custom pins, callback used */
- TM_USART_InitCustomPinsCallback(USART3);
- }
- }
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement