stm32f0 uart1 rx interrupt

1

Tengo el microcontrolador stm32f030f4p6 y usando iar Compiler, biblioteca cmsis, Después de confige Uart1 los bits RXNE, FE y CMF devuelven 1 mientras que no se recibió ni se envió si no configuro el bit RXNE a 0, eso se atasca en la rutina de interrupción Y eso no recibe nada. Aquí está mi configuración Uart:

  USART1->BRR = 0x1388;
  USART1->CR1 = USART_CR1_UE | USART_CR1_TE | USART_CR1_RE;

y GPIO config y Nvic:

  NVIC_InitTypeDef NVIC_InitStructure;
  USART1->CR1 |= USART_CR1_RXNEIE;
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);

y el registro después de esta línea 2

  USART1->BRR = 0x1388;
  USART1->CR1 = USART_CR1_UE | USART_CR1_TE | USART_CR1_RE;

rx tx conectado al módulo sim800 y su respuesta a AT Correctamente

gracias

    
pregunta mohamad pb

1 respuesta

0

No usas CMSIS solo como una mezcla de todo.

No se necesitan estructuras NVIC. (por supuesto, el resto del inicio de usart es necesario)

USART1->CR1 = USART_CR1_UE | USART_CR1_TE | USART_CR1_RE | USART_CR1_RXNEIE; 
NVIC_EnableIRQ(USART1_IRQn);

en la rutina de interrupción debe borrar el indicador RXNE leyendo del registro de datos - USART1 -> RDR

    
respondido por el P__J__

Lea otras preguntas en las etiquetas