久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7537|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

關(guān)于STM32使用UART4問題,請高手指點

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:240266 發(fā)表于 2018-3-21 13:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近小弟學(xué)習(xí)STM32編程,購買了一個模塊(WiFi-ESP8266),將引腳接入UART4來驅(qū)動,進行收發(fā)數(shù)據(jù),后面發(fā)現(xiàn),發(fā)出去的數(shù)據(jù)和接收的數(shù)據(jù)一模一樣,感覺不對勁,因為按照模塊說明收到數(shù)據(jù)后,返回值和發(fā)送的是有區(qū)別的,但是找了好多資料沒有找到問題,請各位有經(jīng)驗的大哥指教;如下是代碼:(使用的是STM32F103VET6芯片)

這個是UART4的初始化:
void UART4_INIT(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
          USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4,ENABLE);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;        //PB10
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;       
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;//PB11
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOC, &GPIO_InitStructure);  

        RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4,ENABLE);
        RCC_APB1PeriphResetCmd(RCC_APB1Periph_UART4,DISABLE);

       
        USART_InitStructure.USART_BaudRate = 115200;
        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(UART4, &USART_InitStructure); ;

        NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 4;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);

    USART_ITConfig(UART4, USART_IT_RXNE, ENABLE);
        //USART_ITConfig(UART4, USART_IT_TC, ENABLE);
    USART_Cmd(UART4, ENABLE);                    
        USART_ClearFlag(UART4, USART_FLAG_TC);
}


這個是發(fā)送函數(shù)
void WiFi_SendData(u8 *str,unsigned int count)
{
                if(count>0)
                {
                        Sendstr1 = str;
                        Send_Count1 = count;
                        //GPIO_SetBits(RS485_RTS_PORT, RS485_RTS);
                        USART_ITConfig(UART4, USART_IT_TXE, ENABLE);
                }
}


中斷函數(shù):
void UART4_IRQHandler(void)                        //中斷函數(shù)
{
unsigned char data=0;
        unsigned char sbuf_temp = 0;
                /******************/
                if(uart.recetime == 0)
                {
                        uart.len = 0;
                        uart.errorbit = 0 ;
                        RS485_Read_Count=0;
                        RS485_Read_OK=0;
                }
                uart.recetime = 100;//這個是作為是否接收完成的標示,在別的地方用一個定時器控制
                /*******************/
    if(USART_GetITStatus(UART4, USART_IT_RXNE) != RESET)  //判斷是否有接收到數(shù)據(jù)
    {
                        data = USART_ReceiveData(UART4);         



                                sbuf_temp = data;
                                uart.revice_buffer[uart.len] = sbuf_temp
                                uart.len++;
                        RS485_Receive_Time = 0;
                        if(uart.len > 80 -2)
                        {
                                uart.errorbit = 1 ;
                                uart.len = 76 ;//·¢ÏÖ′íÎó
                        }
    }

    if(USART_GetITStatus(UART4, USART_IT_TXE) != RESET)  //發(fā)送數(shù)據(jù)
    {
                        if(Send_Count1)
                        {

                                USART_SendData(UART4,*Sendstr1++);
                                Send_Count1--;
                        }
                        else
                        {
                                USART_ITConfig(UART4, USART_IT_TXE, DISABLE);//發(fā)送完畢,停止發(fā)送
                                USART_ITConfig(UART4, USART_IT_RXNE, ENABLE);//轉(zhuǎn)變成,等等接收
                                RS485_Send_Time=1;//接收完成標示
                        }       
    }
                if(USART_GetFlagStatus(UART4,USART_FLAG_ORE)==SET)
                {
                        USART_ClearFlag(UART4,USART_FLAG_ORE);
                        USART_ReceiveData(UART4);
                }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:240266 發(fā)表于 2018-3-21 13:38 | 只看該作者
我后面測試了,好像,發(fā)送也沒有發(fā)成功
回復(fù)

使用道具 舉報

板凳
ID:240266 發(fā)表于 2018-3-25 13:41 | 只看該作者
已經(jīng)解決了,搞了好多天。
回復(fù)

使用道具 舉報

地板
ID:417406 發(fā)表于 2018-10-29 17:24 | 只看該作者
遇到同樣的問題。。求助。。怎么解決的?
回復(fù)

使用道具 舉報

5#
ID:417408 發(fā)表于 2018-10-29 17:33 | 只看該作者
你是電路板的RXD和TXD連到一起了吧。
回復(fù)

使用道具 舉報

6#
ID:731733 發(fā)表于 2020-7-10 15:57 | 只看該作者
hongjiang2017 發(fā)表于 2018-3-21 13:38
我后面測試了,好像,發(fā)送也沒有發(fā)成功

怎么解決的啊 兄弟
回復(fù)

使用道具 舉報

7#
ID:731733 發(fā)表于 2020-7-10 16:02 | 只看該作者
怎么解決的呢 樓主
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久不卡日韩美女 | 国产91在线播放 | 九九久久在线看 | 国产丝袜一区二区三区免费视频 | 综合一区二区三区 | 青青久在线视频 | 免费看黄色小视频 | 久久精品日产第一区二区三区 | 中文字幕91| 日韩欧美国产精品综合嫩v 一区中文字幕 | 日韩精品不卡 | 精品久久99| 九九导航| 国产一区久久精品 | 日本精品视频在线观看 | 久热免费 | 欧美一区二区三区在线 | 天天视频一区二区三区 | av一区二区三区 | 亚洲精品久久嫩草网站秘色 | 欧美在线视频不卡 | 午夜一级做a爰片久久毛片 精品综合 | 亚洲一级毛片 | 国产婷婷在线视频 | 毛片入口| 午夜色播 | 国产日韩精品视频 | 99久久精品一区二区毛片吞精 | 中文字幕精品一区二区三区在线 | 日韩成人在线网址 | 精品av天堂毛片久久久借种 | 夜夜夜夜夜夜曰天天天 | 欧美a级成人淫片免费看 | 国产午夜精品久久久久免费视高清 | 久久精品国产一区 | 亚洲二区视频 | 在线观看午夜视频 | 国产欧美日韩一区 | 日韩欧美在线免费观看 | 久久av一区| 日本色婷婷 |