cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F051C8 UART2 or 1 don't trigged

enagma
Associate
Posted on March 13, 2016 at 01:59

Hello i'm trying to configure an uart 1 or 2 interrupt in sw4STM32 and cube mx, but never responses the interrupt i can recive data from uart and send data in uart 1 and 2 in pooling mode mi code.

Main


#include ''stm32f0xx_hal.h''


/* USER CODE BEGIN Includes */


/* USER CODE END Includes */


/* Private variables ---------------------------------------------------------*/

UART_HandleTypeDef huart1;

UART_HandleTypeDef huart2;


/* USER CODE BEGIN PV */

/* Private variables ---------------------------------------------------------*/


/* USER CODE END PV */


/* Private function prototypes -----------------------------------------------*/

void
SystemClock_Config(
void
);

static
void
MX_GPIO_Init(
void
);

static
void
MX_USART1_UART_Init(
void
);

static
void
MX_USART2_UART_Init(
void
);


/* USER CODE BEGIN PFP */

/* Private function prototypes -----------------------------------------------*/


/* USER CODE END PFP */


/* USER CODE BEGIN 0 */


/* USER CODE END 0 */


int
main(
void
)

{


/* USER CODE BEGIN 1 */

uint8_t msg[5]=
''12345''
;

/* USER CODE END 1 */


/* MCU Configuration----------------------------------------------------------*/


/* Reset of all peripherals, Initializes the Flash interface and the Systick. */

HAL_Init();


/* Configure the system clock */

SystemClock_Config();


/* Initialize all configured peripherals */

MX_GPIO_Init();

MX_USART1_UART_Init();

MX_USART2_UART_Init();


/* USER CODE BEGIN 2 */


/* USER CODE END 2 */


/* Infinite loop */

/* USER CODE BEGIN WHILE */



while
(1)

{

HAL_GPIO_WritePin(GPIOF, GPIO_PIN_7, GPIO_PIN_SET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET);

HAL_Delay(1);

HAL_GPIO_WritePin(GPIOF, GPIO_PIN_7, GPIO_PIN_RESET);

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET);

HAL_Delay(1);

HAL_UART_Receive(&huart1,msg,5,1000);

HAL_UART_Transmit(&huart1,msg,5,1000);

HAL_UART_Transmit(&huart2,msg,5,1000);

/* USER CODE END WHILE */


/* USER CODE BEGIN 3 */


}

/* USER CODE END 3 */


}


/** System Clock Configuration

*/

void
SystemClock_Config(
void
)

{


RCC_OscInitTypeDef RCC_OscInitStruct;

RCC_ClkInitTypeDef RCC_ClkInitStruct;

RCC_PeriphCLKInitTypeDef PeriphClkInit;


RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;

RCC_OscInitStruct.HSIState = RCC_HSI_ON;

RCC_OscInitStruct.HSICalibrationValue = 16;

RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;

HAL_RCC_OscConfig(&RCC_OscInitStruct);


RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK

|RCC_CLOCKTYPE_PCLK1;

RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;

RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;

HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);


PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1;


PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1;

HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);


HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);


HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);


/* SysTick_IRQn interrupt configuration */

HAL_NVIC_SetPriority(SysTick_IRQn, 3, 0);

}


/* USART1 init function */

void
MX_USART1_UART_Init(
void
)

{


huart1.Instance = USART1;

huart1.Init.BaudRate = 38400;

huart1.Init.WordLength = UART_WORDLENGTH_8B;

huart1.Init.StopBits = UART_STOPBITS_1;

huart1.Init.Parity = UART_PARITY_NONE;

huart1.Init.Mode = UART_MODE_TX_RX;

huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;

huart1.Init.OverSampling = UART_OVERSAMPLING_16;

huart1.Init.OneBitSampling = UART_ONEBIT_SAMPLING_DISABLED ;

huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;

HAL_UART_Init(&huart1);


}


/* USART2 init function */

void
MX_USART2_UART_Init(
void
)

{


huart2.Instance = USART2;

huart2.Init.BaudRate = 9600;

huart2.Init.WordLength = UART_WORDLENGTH_8B;

huart2.Init.StopBits = UART_STOPBITS_1;

huart2.Init.Parity = UART_PARITY_NONE;

huart2.Init.Mode = UART_MODE_TX_RX;

huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;

huart2.Init.OverSampling = UART_OVERSAMPLING_16;

huart2.Init.OneBitSampling = UART_ONEBIT_SAMPLING_DISABLED ;

huart2.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_RXOVERRUNDISABLE_INIT|UART_ADVFEATURE_DMADISABLEONERROR_INIT;

huart2.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE;

huart2.AdvancedInit.DMADisableonRxError = UART_ADVFEATURE_DMA_DISABLEONRXERROR;

HAL_UART_Init(&huart2);



HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);

HAL_NVIC_EnableIRQ(USART2_IRQn);


}


/** Configure pins as 

* Analog 

* Input 

* Output

* EVENT_OUT

* EXTI

*/

void
MX_GPIO_Init(
void
)

{


GPIO_InitTypeDef GPIO_InitStruct;


/* GPIO Ports Clock Enable */

__GPIOA_CLK_ENABLE();

__GPIOB_CLK_ENABLE();

__GPIOF_CLK_ENABLE();


/*Configure GPIO pin : PB12 */

GPIO_InitStruct.Pin = GPIO_PIN_12;

GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;

GPIO_InitStruct.Pull = GPIO_PULLUP;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


/*Configure GPIO pins : PF6 PF7 */

GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

GPIO_InitStruct.Speed = GPIO_SPEED_LOW;

HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);


/*Configure GPIO pins : PB8 PB9 */

GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;

GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct.Pull = GPIO_NOPULL;

GPIO_InitStruct.Speed = GPIO_SPEED_LOW;

HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);


/*Configure GPIO pin Output Level */

HAL_GPIO_WritePin(GPIOF, GPIO_PIN_6|GPIO_PIN_7, GPIO_PIN_RESET);


/*Configure GPIO pin Output Level */

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8|GPIO_PIN_9, GPIO_PIN_RESET);


/* EXTI interrupt init*/

HAL_NVIC_SetPriority(EXTI4_15_IRQn, 0, 0);

HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);


}

it.c


#include ''stm32f0xx_hal.h''

#include ''stm32f0xx.h''

#include ''stm32f0xx_it.h''


/* USER CODE BEGIN 0 */

uint8_t msg[5]=
''12345''
;

/* USER CODE END 0 */


/* External variables --------------------------------------------------------*/

extern
UART_HandleTypeDef huart2;


/******************************************************************************/

/* Cortex-M0 Processor Interruption and Exception Handlers */

/******************************************************************************/


/**

* @brief This function handles System tick timer.

*/

void
SysTick_Handler(
void
)

{

/* USER CODE BEGIN SysTick_IRQn 0 */


/* USER CODE END SysTick_IRQn 0 */

HAL_IncTick();

HAL_SYSTICK_IRQHandler();

/* USER CODE BEGIN SysTick_IRQn 1 */

// HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET);


/* USER CODE END SysTick_IRQn 1 */

}


/******************************************************************************/

/* STM32F0xx Peripheral Interrupt Handlers */

/* Add here the Interrupt Handlers for the used peripherals. */

/* For the available peripheral interrupt handler names, */

/* please refer to the startup file (startup_stm32f0xx.s). */

/******************************************************************************/


/**

* @brief This function handles EXTI line 4 to 15 interrupts.

*/

void
EXTI4_15_IRQHandler(
void
)

{

/* USER CODE BEGIN EXTI4_15_IRQn 0 */


/* USER CODE END EXTI4_15_IRQn 0 */

HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);

/* USER CODE BEGIN EXTI4_15_IRQn 1 */

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET);

/* USER CODE END EXTI4_15_IRQn 1 */

}


/**

* @brief This function handles USART2 global interrupt.

*/

void
USART2_IRQHandler(
void
)

{

/* USER CODE BEGIN USART2_IRQn 0 */

HAL_GPIO_WritePin(GPIOF, GPIO_PIN_6, GPIO_PIN_SET);

/* USER CODE END USART2_IRQn 0 */

HAL_UART_IRQHandler(&huart2);

/* USER CODE BEGIN USART2_IRQn 1 */

HAL_GPIO_WritePin(GPIOF, GPIO_PIN_6, GPIO_PIN_SET);

/* USER CODE END USART2_IRQn 1 */

}


/* USER CODE BEGIN 1 */


/* USER CODE END 1 */

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

0 REPLIES 0