Strona 1 z 1

STM32F429 Ustawienie pinów pod UART5

: poniedziałek 31 lip 2017, 18:45
autor: StaryAnoda
Hej

Panowie czy może ktoś sprawdzić czy dobrze skonfigurowałem pin pracujący jako RX w UART5;
Pytam ponieważ nie mogę uruchomić przerwania odbiorczego.

Kod: Zaznacz cały

#include "stm32f4xx.h"

uint32_t I;

void UART5_GPIO_INIT(void);

int main(void)
{
   RCC->APB1ENR = RCC_APB1ENR_UART5EN;
   RCC->AHB1ENR |= RCC_AHB1ENR_GPIOGEN;
   
   RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN | RCC_AHB1ENR_GPIOCEN;
   __DSB();

   GPIOG->MODER = GPIO_MODER_MODER13_0 | GPIO_MODER_MODER14_0;
   UART5_GPIO_INIT();

   UART5->BRR = SystemCoreClock/9600;
   UART5->CR1 = USART_CR1_UE | USART_CR1_RXNEIE | USART_CR1_TE | USART_CR1_RE;
   NVIC_EnableIRQ(UART5_IRQn);
   SCB->SCR |= SCB_SCR_SLEEPONEXIT_Msk;

   //__WFI();

   while(1)
   {
      for(I = 0; I < 1000000; I++)
      {

      }
      GPIOG->ODR ^= GPIO_ODR_ODR_13;
   }
   return 0;
}

__attribute__((interrupt)) void UART5_IRQHandler(void)
{
   if (UART5->SR & USART_SR_RXNE)
   {
      UART5->SR &= ~USART_SR_RXNE;
      uint16_t tmp;
      tmp = UART5->DR;
      UART5->DR = tmp+1;
   }
   GPIOG->ODR ^= GPIO_ODR_ODR_14;
}

void UART5_GPIO_INIT(void)
{
   // Config for RX PD2
   GPIOD -> MODER |= GPIO_MODER_MODER2_1;
   GPIOD -> OTYPER |= 0x00000004;
   GPIOD -> PUPDR |= 0x00000020;
   GPIOD -> AFR[0] |= 0x00000800;
}



Mały update program działa ale nie do końca poprawnie. Po uruchomieniu programu dioda Miga: GPIOG->ODR ^= GPIO_ODR_ODR_13;
Po kliknięciu niektórych klawiszy przerwanie jest wywoływane na przykład spacji ale muszą ją kliknąć czasami jeden raz czasami dwa. Prze wejściu w procedurę przerwania dioda przestaję migać do ponownego resetu procesora.

Re: STM32F429 Ustawienie pinów pod UART5

: poniedziałek 31 lip 2017, 21:52
autor: Antystatyczny
Jeśli możesz, dorzuć komentarze przy wierszach modyfikujących wartości rejestrów, żebym nie musiał się przegrzebywać przez opisy wszystkich bitów. Najczęściej błędy siedzą w kolejności działań, w wywoływaniu przerwań w przerwaniu itp.

Re: STM32F429 Ustawienie pinów pod UART5

: wtorek 01 sie 2017, 20:50
autor: StaryAnoda
Oko problem ogarnięty

Re: STM32F429 Ustawienie pinów pod UART5

: wtorek 01 sie 2017, 21:00
autor: Antystatyczny
A gdzie miałeś błąd?