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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2319|回復: 0
打印 上一主題 下一主題
收起左側

stm32 串口第一字節丟失問題分析

[復制鏈接]
跳轉到指定樓層
樓主
ID:104126 發表于 2016-1-23 02:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
   STM32 串口 發送 必須 先檢測狀態,否則 第一個 字節 無法發出,發送完畢,必須檢測發送狀態是否完成,否則,發送不成功,使用stm32f10x調試串口通訊時,發現一個出錯的現象,硬件復位重啟之后,發送測試數據0x010x02 0x03 0x04..接收端收到的數據為:0x02 0x030x04,第一個數據丟失。換成發送別的數值的數據,如0x060x0ff,則接收到0x0ff,0x06丟失。錯誤依舊。故障排除過程:1、剛開始懷疑是接收端的錯誤,我是使用電腦串口,運行串口輔助調試工具接收,換成其他軟件后,發現故障依舊,而且電腦軟件一直是開啟狀態,不像和電腦軟件有關。2、使用單步調試,單步運行各個發送指令,都正常。能收到0x010x02 0x030x04的數據。間接的排除了不是電腦軟件的問題,而是其他的錯誤。3、單步調試運行雖然正常了,但連續運行時,錯誤依舊。現在有點摸不到頭緒了,單步運行正常,看起來編程沒有出錯,那故障在哪里呢?測試程序如下USART_SendData(USART2,0x01); //Awhile(USART_GetFlagStatus(USART2,USART_FLAG_TC) == RESET); //BUSART_SendData(USART2,0x02); //Cwhile(USART_GetFlagStatus(USART2,USART_FLAG_TC) == RESET);USART_SendData(USART2,0x03);while(USART_GetFlagStatus(USART2, USART_FLAG_TC)== RESET);USART_SendData(USART2,0x04);while(USART_GetFlagStatus(USART2, USART_FLAG_TC)==RESET);4、猜測,也許是因為某個特殊原因,使第二個數據覆蓋了首個數據,使得首個數據丟失。假設:在執行B指令時,USART的TC狀態位==SET,那么就會緊接著執行C指令,也就有可能發生數據的覆蓋。于是,在A指令前,加入如下指令:USART_ClearFlag(USART2,USART_FLAG_TC);5、加入上一條指令后,運行,錯誤消失了。說明上一個假設,應該是成立的。6、查閱stm32f10x參考手冊,找到這樣一句話:TC:發送完成當包含有數據的一幀發送完成后,由硬件將該位置位。如果USART_CR1中的TCIE為1,則產生中斷。由軟件序列清除該位(先讀USART_SR,然后寫入USART_DR)。TC位也可以通過寫入0來清除,只有在多緩存通訊中才推薦這種清除程序。0:發送還未完成;1:發送完成。7、注意到這一句:由軟件序列清除該位(先讀USART_SR,然后寫入USART_DR)。也就是說,要先read USART_SR,然后writeUSART_DR,才能完成TC狀態位的清除。而硬件復位后,串口發送的首個數據之前沒有read SR的操作,是直接writeDR,也就是說,TC沒有被清除掉。說明第4步的猜測是對的。8、那么,應該把指令A前面加的USART_ClearFlag(USART2,USART_FLAG_TC);改為USART_GetFlagStatus(USART2,USART_FLAG_TC);,應該也能消除錯誤。測試后證實,確實如此,在發送首個數據之前,先讀取一下USART_SR,那么就不會出現首個數據丟失的情況了。9、總結:硬件復位后,串口發送首個數據之前,先讀取一下USART_SR,則能夠保證首個數據發送時,不出現覆蓋的情況。當然,也有別的方法,比如先清除TC狀態位,或是,在writeUSART_DR之后,加入一個小延時,讓數據發送完畢,應該也能間接排除這個錯誤。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久久久冷 | 久久四虎 | 亚洲一区二区在线播放 | 国产精品久久av | 免费在线视频精品 | 日韩三片| 国产精品99久久久久久久久久久久 | 久久久一 | 欧美久久久久久久久 | 精品一区精品二区 | 99综合| 久久99国产精一区二区三区 | 久久爱黑人激情av摘花 | 91色视频在线观看 | 一级黄片一级毛片 | 国产一级特黄真人毛片 | av电影一区 | 中文字幕av亚洲精品一部二部 | 欧美日韩国产一区二区三区 | 福利一区二区 | 巨大荫蒂视频欧美另类大 | 欧美激情在线观看一区二区三区 | 欧美久久一区二区三区 | 国产乱码精品一区二区三区五月婷 | 国产一区二区电影网 | 国产69精品久久久久777 | 天天操狠狠操 | 在线观看亚洲专区 | 久久午夜视频 | 国产69精品久久久久777 | 久久一区二区三区四区 | 在线一区二区三区 | 欧美一级一 | 成人午夜网站 | 久久久久久网站 | jlzzjlzz国产精品久久 | 四虎影视一区二区 | 午夜欧美一区二区三区在线播放 | 久久99精品视频 | 日韩综合在线播放 | 欧美亚洲国产日韩 |