STM32F4-Discovery leyendo datos en serie

0

Tengo un STM32F4-Discovery Board con un STM32F4DIS-BB Base Board adjunto, que me da acceso a un puerto serie para usar para el Discovery Board. Estoy intentando programar la placa para leer los datos enviados al puerto serie desde la PC. Estoy teniendo problemas para encontrar información en línea sobre cómo hacer esto, así que estoy publicando aquí tratando de obtener ayuda.

Estoy intentando usar la conexión USART1 de Discovery Board y lo he estado inicializando con el siguiente código:

void Init_USART() {
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);
  GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;
  GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_Init(GPIOA, &GPIO_InitStruct);

  RCC_AHB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
  USART_InitStruct.USART_BaudRate = 115200;
  USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
  USART_InitStruct.USART_Parity = USART_Parity_No;
  USART_InitStruct.USART_StopBits = USART_StopBits_1;
  USART_InitStruct.USART_WordLength = USART_WordLength_8b;
  USART_Init(USART1, &USART_InitStruct);  
  USART_Cmd(USART1, ENABLE);
}

Estoy intentando usar un controlador de interrupciones y lo he inicializado con el siguiente código:

void Init_Interrupt() {
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
  NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
  NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;
  NVIC_Init(&NVIC_InitStruct);
}

Ahora estoy tratando de ver si el controlador de interrupciones está funcionando, simplemente poniendo una declaración printf() dentro del código del controlador, de este modo:

void USART1_IRQHandler(void) {
  printf("test\n");
}

Sin embargo, cuando ejecuto mi programa, no aparece nada a través de la ventana de la consola, lo que para mí indica que hay un problema en lo que estoy tratando de hacer. Sin embargo, no estoy seguro de qué es exactamente lo que está mal. . Si alguien pudiera ayudar, sería muy apreciado.

    
pregunta Skitzafreak

0 respuestas

Lea otras preguntas en las etiquetas