cancel
Showing results for 
Search instead for 
Did you mean: 

uart hal library

jdpv
Associate II
Posted on December 21, 2014 at 00:23

Hello,

It seems keil is forcing me to use the hal libraries and i'm triying to work with them. i've spent hours triying to make an uart com work. i've tried the example from the STM32cube_F4 and it works but when i try to do it in my own template it won't work.

/* Private define ------------------------------------------------------------*/
/* Definition for USARTx clock resources */
#define USARTx USART3
#define USARTx_CLK_ENABLE() __USART3_CLK_ENABLE();
#define USARTx_TX_GPIO_CLK_ENABLE() __GPIOD_CLK_ENABLE() 
/* Definition for USARTx Pins */
#define USARTx_TX_PIN GPIO_PIN_8
#define USARTx_TX_AF GPIO_AF7_USART3
#define USARTx_TX_GPIO_PORT GPIOD
/* Definition for USARTx's NVIC */
#define USARTx_IRQn USART3_IRQn
#define USARTx_IRQHandler USART3_IRQHandler
void
UART3_INIT (unsigned 
int
baud){
GPIO_InitTypeDef GPIO_InitStruct;
/* UART RX GPIO pin configuration */
USARTx_TX_GPIO_CLK_ENABLE();
GPIO_InitStruct.Pin = USARTx_TX_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
GPIO_InitStruct.Alternate = USARTx_TX_AF;
HAL_GPIO_Init(USARTx_TX_GPIO_PORT, &GPIO_InitStruct);
/* Put the USART peripheral in the Asynchronous mode (UART Mode) */
USARTx_CLK_ENABLE();
UartHandle.Instance = USARTx;
UartHandle.Init.BaudRate = baud;
UartHandle.Init.WordLength = UART_WORDLENGTH_8B;
UartHandle.Init.StopBits = UART_STOPBITS_1;
UartHandle.Init.Parity = UART_PARITY_NONE;
UartHandle.Init.HwFlowCtl = UART_HWCONTROL_NONE;
UartHandle.Init.Mode = UART_MODE_TX;
HAL_UART_Init(&UartHandle);
/* NVIC for USART1 */
HAL_NVIC_SetPriority(USARTx_IRQn, 0, 1);
HAL_NVIC_EnableIRQ(USARTx_IRQn);
}
/**
* @brief This function handles UART interrupt request. 
* @param None
* @retval None
* @Note used for USART data transmission 
*/
void
USARTx_IRQHandler(
void
)
{
HAL_UART_IRQHandler(&UartHandle);
}
uint8_t aTxBuffer[] = 
''Title''
;
/*Send a Message*/
HAL_UART_Transmit_IT(&UartHandle, (uint8_t*)aTxBuffer, TXBUFFERSIZE);

With this code i receive some werd chracters such as ''ü''. i've tried to measure the frequency of my code and it varies between 700 - 1500 hz. The cube_F4 example it does between 3500-4000 Hz. I think the clock configuration is ok, i tested it with a timer... Does anyone know what the problem might be? thanks. #uart #code #stm32 #problem #usart
2 REPLIES 2
jdpv
Associate II
Posted on December 21, 2014 at 13:57

i've solved it. The problem was that the ''HSE_VALUE'' in the file stm32f4xx_hal_conf.h was set to 25000000 and it has to be set to 8000000 for the case of the STM32F429-DISCO.

I though that now that they (KEIL?) provide ''support'' for this board this board this kind of issues wouldn't be a problem anymore... 

abdulhakeem
Associate
Posted on February 10, 2016 at 13:54

Hi Valencina 

If you don't mine can you send me the example source code transmitter and receiver in same file.

Thanks in advance.