天天看點

STM32序列槽發送

#include "stm32f10x.h"

#include "stm32f10x_conf.h"

void RCC_Configuration(void);

void GPIO_Configration(void);

void NVIC_Configuration(void);

void USART_Configuration(void);

vu16 i ;

int main(void)

{

      RCC_Configuration();

      NVIC_Configuration();

      GPIO_Configration();

     USART_Configuration();

    while(1)

    {    

        if(USART_GetFlagStatus(USART1 , USART_IT_RXNE) == SET)

        {     

            USART_SendData(USART1 , USART_ReceiveData(USART1));         

            for(i = 0; i < 500; i ++);

        }

    }

}

void RCC_Configuration(void)

{

    ErrorStatus HSEStartUpStatus;

    RCC_DeInit();

    RCC_HSEConfig(RCC_HSE_ON);

    HSEStartUpStatus = RCC_WaitForHSEStartUp();

    if (HSEStartUpStatus == SUCCESS){

        RCC_PCLK2Config(RCC_HCLK_Div1);

        RCC_PCLK1Config(RCC_HCLK_Div2);

        FLASH_SetLatency(FLASH_Latency_2);

        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

        RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);

        RCC_PLLCmd(ENABLE);

        while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

        while (RCC_GetSYSCLKSource() != 0x08);

    }

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);

      RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1| RCC_APB2Periph_GPIOA , ENABLE);

}

void GPIO_Configration(void)

{

      GPIO_InitTypeDef GPIO_InitStructure;

     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;

     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

     GPIO_Init(GPIOF,&GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin =GPIO_Pin_9;

        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

        GPIO_Init(GPIOA, &GPIO_InitStructure);

      GPIO_InitStructure.GPIO_Pin =GPIO_Pin_10;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

    GPIO_Init(GPIOA, &GPIO_InitStructure);

}

void USART_Configuration(void)

{

    USART_InitTypeDef USART_InitStructure;

    USART_InitStructure.USART_BaudRate = 9600;

    USART_InitStructure.USART_WordLength = USART_WordLength_8b;

    USART_InitStructure.USART_StopBits = USART_StopBits_1;

    USART_InitStructure.USART_Parity = USART_Parity_No ;

    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

    USART_Init(USART1 , &USART_InitStructure);

    USART_Cmd(USART1 , ENABLE);

}

void NVIC_Configuration(void)

{                                

    NVIC_InitTypeDef NVIC_InitStructure;

#ifdef  VECT_TAB_RAM   

         NVIC_SetVectorTable(NVIC_VectTab_RAM , 0x0);

#else     

          NVIC_SetVectorTable(NVIC_VectTab_FLASH , 0x0);   

#endif

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);

}