Untitled

mail@pastecode.io avatar
unknown
plain_text
2 years ago
3.2 kB
2
Indexable
Never
void USART3_oppstart(void){
	    //Deklarasjon av initialiseringsstrukturane.
	    USART_InitTypeDef USART3_InitStructure;
	    USART_ClockInitTypeDef  USART3_ClockInitStructure;


	    //Slipper til klokken.
	    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);

	    USART_ClockStructInit(&USART3_ClockInitStructure);
	    USART_ClockInit(USART3, &USART3_ClockInitStructure);

	    USART3_InitStructure.USART_BaudRate = 9600; //19200;//57600;//19200; //9600;
	    USART3_InitStructure.USART_WordLength = USART_WordLength_8b;
	    USART3_InitStructure.USART_StopBits = USART_StopBits_1;
	    USART3_InitStructure.USART_Parity =  USART_Parity_No ; //USART_Parity_Odd;
	    USART3_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
	    USART3_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

	    //Legg inn konfigurasjonen i modulen//
	    USART_Init(USART3, &USART3_InitStructure);

	    //Setter bit slik at vi får en global interrupt når det kommer fara i bufferet og det ennå er data i RDR registeret.(RXNEIE dvs RX NOT EMPTY INTERUPT ENABLE)
	    USART3->CR1 |= USART_CR1_RXNEIE;
	    //Aktiverer samtidig IRQ-en
	    NVIC_EnableIRQ(USART3_IRQn);
	    NVIC_SetPriority(USART3_IRQn, 2);
        USART_ITConfig(USART3,USART_IT_RXNE, ENABLE);

	    //GPIO-delen m� fiksast slik at den virkar her dvs. p� STM32F3-kortet
	    //P� STM32F3: GPIO-pinnane PA2 og 3 brukt mot intern USART2-modul
	    //------------------------------------------
	    //Deklarasjon av initialiseringsstrukturen.
	    GPIO_InitTypeDef GPIO_InitStructure_UART3;

	    //Slepp foerst til klokka paa GPIOA-modulen
	    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOD, ENABLE);

	    //Sett USART2 Tx (PA2) som AlternativFunksjon og "push-pull" (vanleg totempaale)
	    GPIO_InitStructure_UART3.GPIO_Pin = GPIO_Pin_8;
	    GPIO_InitStructure_UART3.GPIO_Mode  = GPIO_Mode_AF;
	    GPIO_InitStructure_UART3.GPIO_Speed = GPIO_Speed_Level_1;
	    GPIO_InitStructure_UART3.GPIO_OType = GPIO_OType_PP;

	    //Initialiser, dvs. last ned konfigurasjonen i modulen
	    GPIO_Init(GPIOD, &GPIO_InitStructure_UART3);

	    //Knytt pinnen til AF */
	    GPIO_PinAFConfig(GPIOD, GPIO_PinSource8, GPIO_AF_7);// Sj� stm32f30x_gpio.h

	    //Sett USART2 Rx (PA3) som flytande inngang ("input floating")
	    GPIO_InitStructure_UART3.GPIO_Pin = GPIO_Pin_9;
	    GPIO_InitStructure_UART3.GPIO_Mode = GPIO_Mode_AF;
	    GPIO_InitStructure_UART3.GPIO_PuPd  = GPIO_PuPd_NOPULL;

	    //Initialiser, dvs. last ned konfigurasjonen i modulen
	    GPIO_Init(GPIOD, &GPIO_InitStructure_UART3);

	    //Knytt pinnen til AF */
	    GPIO_PinAFConfig(GPIOD, GPIO_PinSource9, GPIO_AF_7);

	    //Aktiver s� USART1
	    USART_Cmd(USART3, ENABLE);
}

uint8_t USART3_les(void)
{
   if ( USART_GetFlagStatus(USART3, USART_FLAG_RXNE) != RESET)
        {
	   return (uint8_t)USART_ReceiveData(USART3);
   }
   else {
       return (uint8_t)0x00;
   }
}

void USART3_skriv(uint8_t data)
{
    USART_SendData(USART3, (uint8_t) data); //Loop until the end of transmission
    while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET)
        {
        ;
        }

}