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

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32單片機(jī)串口通訊代碼

            STM32單片機(jī)串口通訊代碼

            作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò) 收藏
            STM32開(kāi)發(fā)中,串口是我們最常用的接口。通過(guò)串口,我們很方便地把數(shù)據(jù)輸出到電腦,方便我們進(jìn)行程序調(diào)試。下面我們來(lái)看看STM32的串口通訊代碼。

            要實(shí)現(xiàn)串口通訊,我們要進(jìn)行下面幾個(gè)步驟:

            本文引用地址:http://www.biyoush.com/article/201611/320922.htm

            首先:要打開(kāi)GPIO口的時(shí)鐘和串口模塊時(shí)鐘。在圓點(diǎn)博士小四軸中,我們用的是GPIOA和COM1模塊。

            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

            其次:要指定GPIO口,即確定哪些IO是用于串口通訊的。記得使用GPIO_Mode_AF_PP模式

            GPIO_InitStructure.GPIO_Pin = BS004_COM1_TX;//圓點(diǎn)博士:設(shè)置PA9管腳為串口TX
            GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //圓點(diǎn)博士:設(shè)置串口TX最大允許輸出速度
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //圓點(diǎn)博士:設(shè)置串口TX為輸出
            GPIO_Init(GPIOA, &GPIO_InitStructure);
            //
            GPIO_InitStructure.GPIO_Pin = BS004_COM1_RX;//圓點(diǎn)博士:設(shè)置PA9管腳為串口RX
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //圓點(diǎn)博士:設(shè)置串口RX為輸入
            GPIO_Init(GPIOA, &GPIO_InitStructure);

            第三步:設(shè)置串口模塊參數(shù),如波特率,奇偶校驗(yàn)這些。

            USART_InitStructure.USART_BaudRate = 115200;//圓點(diǎn)博士:設(shè)置串口波特率為115200
            USART_InitStructure.USART_WordLength = USART_WordLength_8b; //圓點(diǎn)博士:設(shè)置串口數(shù)據(jù)長(zhǎng)度為8位
            USART_InitStructure.USART_StopBits = USART_StopBits_1; //圓點(diǎn)博士:設(shè)置串口停止位長(zhǎng)度為1位
            USART_InitStructure.USART_Parity = USART_Parity_No ;//圓點(diǎn)博士:設(shè)置串口奇偶校驗(yàn)為無(wú)
            USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //圓點(diǎn)博士:設(shè)置串口數(shù)據(jù)流控制為無(wú)
            USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//圓點(diǎn)博士:設(shè)置串口為發(fā)送和接收模式
            USART_Init(USART1, &USART_InitStructure);//圓點(diǎn)博士:設(shè)置串口參數(shù)

            第四步:如果使用串口中斷的話,還要設(shè)置中斷優(yōu)先級(jí)。下面例子設(shè)置為最高優(yōu)先級(jí)0。

            NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;
            NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
            NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
            NVIC_Init(&NVIC_InitStructure);

            最后一步,就是打開(kāi)中斷,并使能串口模塊拉。

            USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//圓點(diǎn)博士:允許接收中斷
            USART_Cmd(USART1, ENABLE);

            上面例子只啟動(dòng)了接收中斷。這樣,當(dāng)STM32串口接收到數(shù)據(jù)的時(shí)候,代碼就會(huì)自動(dòng)跳轉(zhuǎn)到中斷代碼里面執(zhí)行對(duì)應(yīng)的操作。

            那么,對(duì)于發(fā)送,怎么辦呢? 我們采用查詢的方式來(lái)發(fā)送。

            void BS004_COM1_Send_Char(unsigned char ascii_code) //圓點(diǎn)博士:發(fā)送一個(gè)字符
            {
            USART_SendData(USART1,ascii_code);
            while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){}//圓點(diǎn)博士:等待直到發(fā)送完成
            }

            如過(guò)要發(fā)送單字符,使用下面的方法:

            BS004_COM1_Send_Char(/);//圓點(diǎn)博士:發(fā)送字符/
            BS004_COM1_Send_Char(13);//圓點(diǎn)博士:發(fā)送回車字符

            如過(guò)要發(fā)送字符串,則使用下面的方法。

            void BS004_COM1_Send_Str_Body(unsigned char* str_buf)//圓點(diǎn)博士:發(fā)送一個(gè)指定長(zhǎng)度的字符串
            {
            unsigned char i,str_len;
            str_len=0;
            for(i=0;i<64;i++)
            {
            str_len++;
            if(str_buf[i]==.) break;
            }
            for(i=0;i
            }

            在上面的例子中,使用了符號(hào).作為字符串結(jié)束標(biāo)志。



            關(guān)鍵詞: STM32單片機(jī)串口通

            評(píng)論


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

            關(guān)閉