娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年10月08日(星期二)

正在發生

2019年10月08日 | stm32 實現串口中斷接收浮點型、整型數據

發布者:來來去去來來 來源: eefocus關鍵字:stm32  串口中斷  接收浮點型  整型數據 手機看文章 掃描二維碼
隨時隨地手機看文章

之前已經實現了在stm32中移植printf函數和scanf函數,相信很多網友也已經熟練掌握這個技能了。最近在項目中遇到了問題,需要在串口助手中向下位機stm32寫整型或者浮點型數據。這個時候只能使用串口中斷接收函數。


void USART1_IRQHandler(void)


{


       uint8_t  ch;


       while(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)


      {


           ch=USART_ReceiveData(USART1);


       }


}


但是很快發現程序這樣寫過于簡陋,只能接收單個字符,不符合我的要求,然后參考網上例程又將串口接收中斷函數進行改動。改為如下形式:


#define RxBufferSize   100     //接收數組定義盡量大點


uint8_t RxBuffer1[RxBufferSize  ];


__IO uint8_t RxCounter= 0x00;    //接收計數


uint8_t  NbrOfDataToRead = RxBufferSize  ;  


/***************以上變量均為全局變量******************/




void USART1_IRQHandler(void)

{

      while(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)

     {


           RxBuffer1[RxCounter++] = USART_ReceiveData(USART1);


           if(RxCounter1 == NbrOfDataToRead1)     //如果達到最大計數,則不進行接收,中斷關閉

           {

                USART_ITConfig(USARTy, USART_IT_RXNE, DISABLE);

           }

    }

}


上面的方面實現了將串口中斷接收到的字符保存在數組中,可是問題還是來了,就是保存在數組中的數據是單個字符,并不能是我需要的整型或者浮點型數據,不能直接使用。感覺又白忙活了一天。


又在網上找資料,有人提了頭文件#include "stdio.h"中的    sscanf函數,其函數原型為:


#pragma __scanf_args

extern _ARMABI int sscanf(const char * __restrict /*s*/,

                    const char * __restrict /*format*/, ...) __attribute__((__nonnull__(1,2)));

   /*

    * is equivalent to fscanf except that the argument s specifies a string

    * from which the input is to be obtained, rather than from a stream.

    * Reaching the end of the string is equivalent to encountering end-of-file

    * for the fscanf function.

    * Returns: the value of the macro EOF if an input failure occurs before any

    *          conversion. Otherwise, the scanf function returns the number of

    *          input items assigned, which can be fewer than provided for, or

    *          even zero, in the event of an early matching failure.


看到了這里終于找到出路了,sscanf()函數的作用很強大,這里不再贅述,感興趣的網友可以自己百度下,介紹的很詳細,我在這里只提及它的一個功能,就是可以把字符數組轉換成字符串,大家想想,只要能夠得到字符串,那么剩下的就簡單多了。話不多說,直接來干貨,下面給出如何將串口中斷函數接收到的字符數組轉換成字符串:


void USART1_IRQHandler(void)

{

    static __IO uint8_t i=0;

    char str1[100];

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

    {     

        ch[i++] = USART_ReceiveData(USART1);

        if(ch[i-1] == '*')    

        {

            sscanf(ch,"%[^*]",str1);  //利用sscanf函數把字符數組轉換成字符串,"%[^*]"表示取數據到*為止

            convalue=atof(str1);            //利用atof函數把字符串轉換成浮點型數據

            i=0;

        }

    }

}


上面的程序就是終極程序了,我來大概說明下:同理我先把接收的數據放到字符數組ch[]里面,我的結束標志‘*’,當判斷接收到‘*'時,表示接收完畢,然后進入if語句,利用sscanf函數,把字符數組轉換成字符串str1,然后我用函數atof()把字符串str1轉換成浮點型數據并賦值給全局變量convalue,以便隨時調用。


這樣我就可以在串口上發送數據,通過串口中斷接收函數,得到數據。

關鍵字:stm32  串口中斷  接收浮點型  整型數據 引用地址:stm32 實現串口中斷接收浮點型、整型數據

上一篇:STM32中的一些小坑-ADC通道設置-寫FLASH
下一篇:STM32F1XX系列 HAL庫 CAN大量收發數據

推薦閱讀

改革開放40年,創新的種子在各經濟特區和經濟帶播種,新技術、新理念、新政策再次為中國新商業注入新的活力,長三角地區作為經濟變革前沿重要陣地,在新的經濟發展時期再次呈現創新活力,為此億歐針對各行業進行資本層面盤點,以期篩選出新經濟創新下新商業代表,尋找中國新經濟的潛在獨角獸。億歐以公司注冊所在地為上海、浙江、江蘇三地為標準,盤點了20...
致力于亞太地區市場的領先半導體元器件分銷商---大聯大控股宣布,其旗下世平推出智微智能科技(JWIPC)基于英特爾(Intel)VAS視覺算法開發的E7QL智能人臉識別系統解決方案。 人臉識別,是基于人的臉部特征信息進行身份識別的一種生物識別技術。用攝像機或攝像頭采集含有人臉的圖像或視頻流,并自動在圖像中檢測和跟蹤人臉,進而對檢測到的人臉進行臉部識...
NVIDIA發布重磅應用、系統以及與寶馬集團合作 NVIDIA提出了下一代計算的愿景,該愿景將全球信息經濟的重心從服務器轉移到了新型的強大且靈活的數據。 NVIDIA創始人兼首席執行官在其加州住宅的廚房中錄制的六集同時發布的主題演講中,介紹了NVIDIA最近對Mellanox的收購,還有重盼所歸的基于NVIDIA Ampere 架構的新產品以及重要的最新軟件技術。 這場...
之前有客戶問LCR和阻抗分析儀都能測電阻、電感、電容,那么他們有什么區別呢,今天安泰測試就給大家分享一下。阻抗(electrical impedance)是電路中電阻、電感、電容對交流電的阻礙作用的統稱。阻抗衡量流動于電路的交流電所遇到的阻礙。阻抗將電阻的概念加以延伸至交流電路領域。LCR 測試儀和阻抗分析儀被設計用于測試電子元件在某些頻率或寬頻率范圍內...

史海拾趣

問答坊 | AI 解惑

請問工控用的M27C4002和X28HC64是屬于哪個板塊的?

請問工控用的M27C4002和X28HC64是屬于哪個板塊的? 我要重點研究這兩個程序芯片 多謝!!…

查看全部問答∨

FPGA設計高手是怎么設計關鍵模塊的

一般我們習慣于把HDL綜合、仿真、然后選定合適的FPGA器件實現,系統能正常工作,也就OK了。對于想把FPGA做的更高深和細致,切實發揮FPGA效用的工程師來說,僅僅做到這些可能還不夠,詳細閱讀了一些代碼,也接觸了一些通信類公司內做FPGA算法的高手 ...…

查看全部問答∨

求助:關于斷點寄存器的問題

大家好,請問有沒有哪位使用過斷點寄存器,如何對其進行初始化呢,我使用的是s12的freescale的芯片。 有類似的經驗均可。 想通過設置斷點寄存器,實現斷點的設置,可是試驗沒有成功,不知如何進行,請大家幫忙! 謝謝!…

查看全部問答∨

EVC 里winbase.h文件發給我 謝謝

我的winbase.h文件讓我寫錯了 改不回去了 誰安裝了EVC 麻煩把這個文件粘貼給我唄 謝謝大家了 郵箱:zhaofei_33101@163.com 文件路徑C:\\Program Files\\Windows CE Tools\\wce420\\POCKET PC 2003\\Include\\Armv4 winbase.h …

查看全部問答∨

安裝驅動程序

windows下,安裝一種網絡卡的驅動程序(用自己寫的程序來安裝驅動程序) 現在的情況是這樣的,在機器上插上網絡卡,安裝驅動程序,操作系統識別上網卡設備,一切OK,沒有問題 那么有沒有這種可能,先不在機器上插卡,先直接安裝驅動程序,然后插 ...…

查看全部問答∨

怪了,是我理解有誤嗎?請大俠們幫我確認一下

還是老話題,bootload,嘿嘿 RO(包括只讀的code和數據啦)在init.S中我知道過程了 但是為什么我怎么沒有找到RW的copy過程,這個肯定是需要的吧。 因為這個RW連同RO生成個bin文件都被放到nand中,沒有對于RW的復制,怎么運行程序。 (雖然我在 ...…

查看全部問答∨

TMS320F28335實用核心電路板

TMS320F28335實用核心電路板…

查看全部問答∨

在M3中移植uC/OS-ii的中斷問題

請教大家個問題,在看ZLG在M3中移植uC/OS-ii時,資料上有這樣一句話:系統時鐘節拍中斷和PendSV中斷的優先級一并設為最低.的確他的例程也是這樣設置的. NVIC_SYSPRI2                EQU  &n ...…

查看全部問答∨

stm32f407 fsmc 驅動 320×240點tft 偶爾閃爍

基本上,標題都說了問題。 補充一下背景 程序上了 rtx——不過是封裝好的,我不用動; 板上倒沒啥特別的東西 就是有兩路 磁保繼電器驅動,但是和 主電源是隔離的。 而且也試了磁保繼電器動作時,也沒發現屏幕會閃。 但是在做實驗的房間 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 安龙县| 全椒县| 延吉市| 平乡县| 孝感市| 黑山县| 钟祥市| 民乐县| 揭东县| 兴义市| 包头市| 集贤县| 正阳县| 安乡县| 汕头市| 龙门县| 德化县| 分宜县| 曲阜市| 乳山市| 珲春市| 巨鹿县| 峨眉山市| 高台县| 郁南县| 宿迁市| 正蓝旗| 沾益县| 聂拉木县| 怀远县| 孟村| 榆社县| 固安县| 新营市| 郁南县| 焉耆| 黄冈市| 彩票| 那坡县| 沽源县| 绍兴市|