日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单片机实现环形队列_单片机模块化程序: 难道有环形队列串口发送数据就万事大吉了吗...

發布時間:2025/4/5 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单片机实现环形队列_单片机模块化程序: 难道有环形队列串口发送数据就万事大吉了吗... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.問個問題,下面程序有沒有BUG數組

2.環形隊列雖然解決了一開始的中斷發送數據覆蓋問題,可是呢卻引入了新的問題函數

3.而后看看中斷發送測試

4.想沒想明白是什么問題spa

5.發送數據1 和發送數據2 之間沒有延時......3d

咱作程序的時候常常碰到各個地方都須要發送串口的數據,可是若是兩個發送函數一個先發送完,另外一個緊接著就發送了.......code

這時候就有問題了,發給一個設備,原本都是正確的數據,可是因為這么一整,數據便成了錯的了.blog

好如今解決這個問題隊列

主要目的就是發送的數據還須要管理一下,讓發送的數據之間有時間間隔內存

好,再加個環形隊列開發

這個環形隊列呢,記錄要發送的數據個數

如今就有兩個環形隊列,

一個環形隊列數存儲數據,就是咱一開始用的

另外一個環形隊列是存儲此次要發送的數據個數

那么每次發送數據變為

而后中斷發送里面

Usart1ManageSendDatLen記錄的是此次發送的數據個數

發送的時候Usart1ManageSendDatLen -- , 變為0,就說明發完了如今的數據了

發送的數據個數是在定時器里面獲取

if(USART_GetITStatus(USART1, USART_IT_TXE) !=RESET)

{if(Usart1ManageSendDatLen>0 && rbCanRead(&Uart1rb)>0)//發送的數據個數大于0 ,環形隊列能夠讀出來數據

{

rbRead(&Uart1rb, &Usart1SendDat, 1);//讀取一個數據

USART_SendData(USART1, Usart1SendDat);//發送

Usart1ManageSendDatLen -- ;//發送的數據個數減一

}else{//發送字節結束

USART_ClearITPendingBit(USART1,USART_IT_TXE);

USART_ITConfig(USART1, USART_IT_TXE, DISABLE);

USART_ITConfig(USART1, USART_IT_TC, ENABLE);

Usart1ManageSendDatLen= 0;//發送完成,清零

}

}//發送完成

if (USART_GetITStatus(USART1, USART_IT_TC) !=RESET)

{

USART_ClearITPendingBit(USART1,USART_IT_TC);

USART_ITConfig(USART1, USART_IT_TC, DISABLE);

}

定時器里面

Usart1ManageSendDatLen = 0;說明發送完數據了

而后 利用變量累加進行延時

延時10Ms(自行調節,該變量控制兩條數據發送的時間間隔)

讀取下保存每次發送多少數據的那個環形隊列

取出來此次要發送的數據個數而后賦值給?Usart1ManageSendDatLen

而后打開發送中斷

發送中斷發送完數據又會出現?Usart1ManageSendDatLen = 0;

而后一直這樣工做

這樣的話,多條同時填充的數據,發送每一條數據的時間間隔是10Ms

不會再出現整個發出去的狀況了!

if(Usart1ManageSendDatLen == 0)//沒有在發送數據

{

Usart1ManageSendDelayCnt++;if(Usart1ManageSendDelayCnt>=10)//延遲10Ms

{

Usart1ManageSendDelayCnt= 0;if(rbCanRead(&Uart1rbManage)>0)//是否是有須要發送的數據

{//取出此次要發送的數據個數

rbRead(&Uart1rbManage, &Usart1ManageSendDatLen, 1);

USART_ITConfig(USART1, USART_IT_TXE, ENABLE);//打開發送中斷

}else{//沒有數據發送的時候1Ms判斷一次,延遲1Ms

Usart1ManageSendDelayCnt=10;

}

}

}

測試

若是想測試的明顯

如今說下如今這個程序帶來的新問題

1.發送數據最低延遲 1Ms

其實這個延遲再加點變量就能夠解決,可是呢,我怕加多了,你們理解起來困難....

因此先這樣吧,有興趣本身去修改

2.無疑又增長了內存開銷

3.這是是我最不肯意的事情

影響了printf一開始使用的中斷發送

由于一開始是不停的插入一個數據,而后中斷發出去

如今不能夠這樣了,還須要想辦法呀

須要一次性獲得printf發送的內容,而后填充到環形隊列里面.............

真很差搞的話,仍是用 sprintf 把,把數據序列化到一個數組里面,而后

發送的數據個數 = sprintf(數組,XXXXXXX)

PutData(&Uart1rb,NULL,數組,發送的數據個數);//數據寫入環形隊列

SendCount[0] = 發送的數據個數;//此次發送的數據個數

PutData(&Uart1rbManage,NULL,SendCount,1);//數據寫入環形隊列,記錄此次要發送的數據個數

總結

以上是生活随笔為你收集整理的单片机实现环形队列_单片机模块化程序: 难道有环形队列串口发送数据就万事大吉了吗...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久久久99人妻一区二区三区 | 国产又黄又粗又猛又爽视频 | www.蜜臀av.com| 日日射天天干 | 奶波霸巨乳一二三区乳 | 国产精品一区二区三区四区 | av免费久久 | 亚洲日本久久久 | 亚洲综合色婷婷 | 欧美精品偷拍 | 成人免费看片网站 | 中文在线а√在线8 | 精品色 | 亚洲在线视频一区 | 日韩69| 91亚洲国产成人精品一区 | 91porn九色 | 精品99久久久 | 亚洲av无码一区二区三区观看 | 久久无码精品丰满人妻 | 日本韩国欧美中文字幕 | 国产精品黄色 | 在线国产中文字幕 | 亚洲无码久久久久久久 | 国产女人高潮的av毛片 | 99视屏| 豆花视频在线播放 | 波多野结衣之潜藏淫欲 | 中国女人内精69xxxxxx | 亚洲综合无码一区二区 | 日本黄区免费视频观看 | 婷婷天堂网 | 可以在线观看的黄色 | 国产精品揄拍一区二区 | 国产免费无码XXXXX视频 | 91看片黄色 | 久久特黄视频 | 久久精品在线观看 | 在线观看色视频 | 国产在线精品观看 | 欧美精品久久久久久 | 精品少妇一区二区三区在线观看 | 大地资源中文在线观看免费版 | 亚洲国产97| 美攻壮受大胸奶汁(高h) | 丁香久久| 亚洲天堂五月天 | 精品人妻aV中文字幕乱码色欲 | 欧美日韩在线视频播放 | 九九热这里只有精品6 | 波多野一区二区 | 动漫精品一区一码二码三码四码 | 强行无套内谢大学生初次 | 九九视频在线 | 狠狠操网址 | 无码乱人伦一区二区亚洲 | 日韩电影一区二区在线观看 | av一卡二卡 | 欧美com | 国产一区二区在线看 | 欧美人妻一区二区 | 国产又大又粗又硬 | 亚洲欧洲日本国产 | 性xx紧缚网站 | 日韩中文字幕久久 | 日本韩国视频 | 亚洲少妇色 | 99久久免费国产精精品 | 日本精品网 | 在线www | 日本ww色 | 国产成人在线精品 | 亚洲国产日韩一区无码精品久久久 | 国产黄色大全 | 亚洲色婷婷久久精品av蜜桃 | 欧美a网站| 日日摸夜夜添夜夜添高潮喷水 | 久久综合欧美 | 国内偷拍精品视频 | 中文字幕av免费观看 | 欧美激情一二区 | 亚洲av成人片色在线观看高潮 | 亚洲精品乱码久久久久久9色 | 欧美做爰爽爽爽爽爽爽 | 午夜免费高清视频 | 国产在线精品观看 | 中国老熟妇自拍hd发布 | 中国av免费看 | 99国产精品99久久久久久粉嫩 | 黄色资源网站 | 国产亚洲一区二区在线 | 日韩在线视频播放 | 久久国产在线观看 | 欧美日韩一区二区久久 | 免费成人深夜在线观看 | 91免费看黄| 日韩国产欧美精品 | 伊人国产在线观看 | 在线观看av的网址 |