在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

    <address id="qec3z"><var id="qec3z"><center id="qec3z"></center></var></address>

      <span id="qec3z"><code id="qec3z"></code></span>
    • <dfn id="qec3z"></dfn>
      <ruby id="qec3z"><thead id="qec3z"><noscript id="qec3z"></noscript></thead></ruby>
      <label id="qec3z"></label><dfn id="qec3z"><var id="qec3z"></var></dfn>

        新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于STM32神舟系列開發(fā)板的串口通信源碼

        基于STM32神舟系列開發(fā)板的串口通信源碼

        作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
        #include "stm32f10x.h"
        #include "stm32f10x_usart.h"
        void RCC_Config(void);
        void GPIO_Config(void);
        void USART_Config(void);
        void Put_String(u8 *p);
        int main()
        {
        RCC_Config();//配置時鐘
        GPIO_Config();//配置輸入輸出
        USART_Config();//配置發(fā)送接收
        //GPIO.Pin選擇待設(shè)置的 GPIO 管腳,使用操作符“| ”可以一次選中多個管腳。
        Put_String("請發(fā)送數(shù)據(jù)_");
        while(1)
        {
        while(1)
        {
        Put_String("請發(fā)送數(shù)據(jù)_");
        if(USART_GetFlagStatus(USART2,USART_FLAG_RXNE)==SET)
        {
        USART_SendData(USART2,USART_ReceiveData(USART2));
        }
        }
        }
        }
        void RCC_Config(void)
        {
        ErrorStatus HSEStartUpStatus;//枚舉,失敗是0,成功1
        RCC_DeInit();//寄存器設(shè)置為默認值
        RCC_HSEConfig(RCC_HSE_ON);//設(shè)置外部高速晶振 產(chǎn)生振蕩頻率
        HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等它起振
        if(HSEStartUpStatus == SUCCESS)
        {
        RCC_HCLKConfig(RCC_SYSCLK_Div1);//RCC_SYSCLK_Div1——AHB時鐘=系統(tǒng)時鐘
        RCC_PCLK2Config(RCC_HCLK_Div1);
        RCC_PCLK1Config(RCC_HCLK_Div2);
        RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);//設(shè)置時鐘源和頻率倍數(shù)
        RCC_PLLCmd(ENABLE);//使能PLL
        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)//標志位被重置?
        {}
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//把pll時鐘作為系統(tǒng)時鐘源
        while(RCC_GetSYSCLKSource()!=0x08)//當pll時鐘源!=8
        {}
        }
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);//使能這兩個外設(shè)時鐘(外圍總線
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
        }
        void GPIO_Config(void)
        {
        GPIO_InitTypeDef GPIO_InitStructure;
        //GPIO_PinRemapConfig(GPIO_Remap_USART2,ENABLE);
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_5;//選中2,5引腳
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; //復用推挽輸出
        GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化外設(shè) GPIOx 寄存器
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_6;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;/////////
        GPIO_Init(GPIOA,&GPIO_InitStructure);//再初始化寄存器
        }
        void USART_Config(void)
        {
        USART_InitTypeDef USART_InitStructure;
        USART_ClockInitTypeDef USART_ClockInitStructure;
        USART_InitStructure.USART_BaudRate = 115200; //波特率設(shè)置
        USART_InitStructure.USART_WordLength=USART_WordLength_8b;
        USART_InitStructure.USART_StopBits=USART_StopBits_1;//定義在幀的結(jié)尾傳輸一個停止位
        USART_InitStructure.USART_Parity=USART_Parity_No;
        USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; //設(shè)置硬件控制流失能 因為已經(jīng)停止了
        USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
        //USART_InitStructure.USART_Clock=USART_Clock_Disable;
        USART_ClockInitStructure.USART_Clock=USART_Clock_Disable;
        //USART_InitStructure.USART_CPOL=USART_CPOL_Low;
        USART_ClockInitStructure.USART_CPOL=USART_CPOL_Low;//數(shù)據(jù)低電平有效
        //USART_InitStructure.USART_CPHA=USART_CPHA_2Edge;
        USART_ClockInitStructure.USART_CPHA=USART_CPHA_2Edge;//時鐘相位
        //USART_InitStructure.USART_LasrBit=USART_LastBit_Disable;
        USART_ClockInitStructure.USART_LastBit=USART_LastBit_Disable; //在SCLK引腳上輸出最后發(fā)送的那個數(shù)據(jù)字的脈沖不從SCLK輸出
        USART_Init(USART2,&USART_InitStructure);
        USART_Cmd(USART2,ENABLE);
        }
        void Put_String(u8 *p)
        {
        while(*p)
        {
        USART_SendData(USART2,*p++);
        while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET)
        {}
        }
        }


        評論


        技術(shù)專區(qū)

        關(guān)閉