国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 9151|回復(fù): 0
打印 上一主題 下一主題

STM32 4個(gè)串口同時(shí)使用,中斷接收,支持連續(xù)接收數(shù)據(jù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2013-1-8 18:55:40 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
關(guān)鍵詞: STM32 , 4個(gè)串口
STM32 4個(gè)串口同時(shí)使用,中斷接收,支持連續(xù)接收數(shù)據(jù),很好用.
主程序

int main(void)
{
    u16 aaa=1;
    ChipHalInit();            //片內(nèi)硬件初始化
    ChipOutHalInit();        //片外硬件初始化
    GPIO_SetBits(GPIOD,GPIO_Pin_8);
    USART1_Puts("USART1 TEST 57600\r\n");
    delay(100);
    USART2_Puts("USART2 TEST 57600\r\n");
    delay(100);
    USART3_Puts("USART3 TEST 57600\r\n");
    delay(100);
    USART4_Puts("UART4 TEST 57600\r\n");
    delay(100);
    GPIO_ResetBits(GPIOD,GPIO_Pin_8);
    delay(50000);
    GPIO_Write(GPIOD,0XFFFF);
    GPIO_ResetBits(GPIOD,GPIO_Pin_8);
#if 1
    while(1)
    {
        delay(5000);
        GPIO_Write(GPIOD,aaa);
        if(aaa>=0x8000)
        {
            aaa = 1;
        }
        else
            aaa = aaa<<1;
    }
#endif

}

串口配置程序

void USART_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
    USART_ClockInitTypeDef USART_ClockInitStructure;
   
    //使能串口1,PA,AFIO總線
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |
            RCC_APB2Periph_AFIO |
            RCC_APB2Periph_USART1 ,
            ENABLE);

    /* A9 USART1_Tx */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //推挽輸出-TX
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    /* A10 USART1_Rx  */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空輸入-RX
    GPIO_Init(GPIOA, &GPIO_InitStructure);


    USART_InitStructure.USART_BaudRate = Uart1_Band_Rate_Set;
    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_ClockInitStructure.USART_Clock = USART_Clock_Disable;
    USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;
    USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;
    USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;

    USART_ClockInit(USART1, &USART_ClockInitStructure);
    USART_Init(USART1, &USART_InitStructure);
    /* Enable the USARTx */
    USART_Cmd(USART1, ENABLE);
    USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
   
   
    //使能串口2時(shí)鐘
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
   
    // A2 做T2X
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // A3 做R2X
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
   
    USART_InitStructure.USART_BaudRate = Uart2_Band_Rate_Set;
    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_ClockInitStructure.USART_Clock = USART_Clock_Disable;
    USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;
    USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;
    USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;

    USART_ClockInit(USART2, &USART_ClockInitStructure);
    USART_Init(USART2, &USART_InitStructure);
   
    USART_Cmd(USART2, ENABLE);
    //串口2使用接收中斷
    USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);


    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
   
    // PB10 做T3X
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    // PB11 做R3X
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
   
    USART_InitStructure.USART_BaudRate = Uart3_Band_Rate_Set;
    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_ClockInitStructure.USART_Clock = USART_Clock_Disable;
    USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;
    USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;
    USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;

    USART_ClockInit(USART3, &USART_ClockInitStructure);
    USART_Init(USART3, &USART_InitStructure);
   
    USART_Cmd(USART3, ENABLE);
    USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4,ENABLE);
   
    // PB10 做T4X
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    // PB11 做R4X
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOC, &GPIO_InitStructure);
   
    USART_InitStructure.USART_BaudRate = Uart4_Band_Rate_Set;
    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_ClockInitStructure.USART_Clock = USART_Clock_Disable;
    USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;
    USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;
    USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;

    USART_ClockInit(UART4, &USART_ClockInitStructure);
    USART_Init(UART4, &USART_InitStructure);
   
    USART_Cmd(UART4, ENABLE);
    USART_ITConfig(UART4,USART_IT_RXNE,ENABLE);
}

接收中斷程序

void USART1_IRQHandler(void)
{
    //接收中斷
#if 0
    if(USART_GetITStatus(USART1,USART_IT_RXNE)==SET)
    {
        USART_ClearITPendingBit(USART1,USART_IT_RXNE);
        Uart1_Get_Data=USART_ReceiveData(USART1);
        Uart1_Get_Flag=1;
        USART1_Putc(Uart1_Get_Data);
    }
#endif
    if(USART_GetITStatus(USART1,USART_IT_RXNE)==SET)
    {
        TIM_Cmd(TIM3, DISABLE);
        USART_ClearITPendingBit(USART1,USART_IT_RXNE);
        UART1_Data_Buff[UART1_Data_Buff_Count++] = USART_ReceiveData(USART1);
        if(UART1_Data_Buff[UART1_Data_Buff_Count-1] == 0x0a)
        {
             if(UART1_Data_Buff[UART1_Data_Buff_Count-2] == 0x0d)
             {
                       UART1_CMD_Process_ALL_Pointer++;
                    for(UART1_CMD_Process_ALL_Count__ = 0;UART1_CMD_Process_ALL_Count__
                    {
                        UART1_CMD_Process_ALL[UART1_CMD_Process_ALL_Pointer][UART1_CMD_Process_ALL_Count__] = UART1_Data_Buff[UART1_CMD_Process_ALL_Count__];
                    }
                   UART1_Data_Buff_Count = 0;
                   UART1_Data_Flag = 1;
             }
        }        
    }   
    //溢出-如果發(fā)生溢出需要先讀SR,再讀DR寄存器 則可清除不斷入中斷的問題
    if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)==SET)
    {
        USART_ClearFlag(USART1,USART_FLAG_ORE);    //讀SR
        USART_ReceiveData(USART1);                //讀DR
    }
}

轉(zhuǎn)http://worldcreativedesign.com/read.php?tid=7








您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产农村一一级特黄毛片 | 色综合婷婷 | 中文字幕国产欧美 | 日本中文视频 | 欧美日韩亚洲一区 | 日韩18在线观看 | 一级毛片免费不卡在线 | 精品牛牛影视久久精品 | 国产黄色片在线观看 | poopoo的视频丨vk | 国产精品成人va在线观看 | 欧美xxxxx性视频 | 97狠狠干 | 香蕉国产精品 | 在线免费毛片 | 免费一级片观看 | 国产手机在线观看视频 | 国产手机在线观看视频 | 久99久精品免费视频热77 | 性视频久久 | 日本免费高清在线观看播放 | 亚洲日本aⅴ片在线观看香蕉 | 晚上看的www视频高清免费动漫 | 亚洲天天做日日做天天看2018 | 俺也来国产精品欧美在线观看 | 免费羞羞网站 | 亚洲国产爱 | 免费人成黄页网站在线观看 | 欧美日韩乱 | 久久久久久免费播放一级毛片 | 免费国产在线视频 | www成人国产在线观看网站 | 成品人app软件下载 成品人app软件大全下载免费版 | 4hu四虎免费影院www | 在线观看国产三级 | 卡一卡二卡三免费专区2 | 久久精品综合免费观看 | jizz中国日本 | 亚洲欧美日本一区 | 高清毛片一区二区三区 | 国产精品女 |