欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32 CAN轉USART問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:540281 發表于 2019-5-16 22:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近在做一個CAN轉USART的工具,主要是把特定格式發回來的CAN數據,解析之后通過串口轉發回來,一包數據是有多幀CAN數據轉換回來的,長度不固定,如果前一包數據長度較長,后一包數據就會把上一包多出來的數據也打印出來,試過每次printf完一包數據之后,把數組通過memset函數清零,但是依然不行,求大神支招

我是每次中斷里把CAN每一幀數據解析,每一次進中斷都會把解析到需要的數據存到一個全局變量X的數組里面,在多次進中斷,解析完之后,就在主函數里打印全局變量X
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:123289 發表于 2019-5-17 09:01 | 只看該作者
你要好好規劃好存儲數據的地方,并能區分:
1、上個包數據放在何處?
2、這次包又放在了哪進?
3、下個包來了,這次包又如何變成了上個包?
4、包是什么概念,他是如何被界定的,大小多少……
這此都是邏輯問題,規劃好后,畫成框圖,再依框圖寫程序,不難。
回復

使用道具 舉報

板凳
ID:540281 發表于 2019-5-17 10:04 | 只看該作者
yzwzfyz 發表于 2019-5-17 09:01
你要好好規劃好存儲數據的地方,并能區分:
1、上個包數據放在何處?
2、這次包又放在了哪進?

是這樣的,
1、每次解析出來的數據,也就是一包數據,我會按每幀的方式放在一個全局變量的數組里面,也就是一個數組,前8個字節存第一幀,8-16存第二幀,16-24第三幀,結束之后,這個全局變量就是一包;
2、然后這次包來了的話,依舊是把它按上一包的方式,覆蓋在這個全局變量里面;
3、下包來了,依然是解析出來,放在上一包上面
4、包的概念主要是,多幀解析之后組合成一包,比如說一幀8個字節,這次這一包是3幀,這三幀就會組成一包,大小的話,由第一幀里面的某個數據表示;比如說第一包是00 00 07 00 00 00 00 00,這里的07就是長度,表示7個字節,這一包完整的一包就是,00 00 07 00 00 00 00 00    01 xx xx xx 00 00 00 00,這里就是一包;

我現在遇到的問題是,如果上一包數據長度比這一包數據長度長的話,這一包的數據除了原本需要有的數據以外,還會多出來上一包數據未被覆蓋的數據,導致一包數據不對,這里我嘗試過打印完數據之后,用memset函數給這個全局變量清零,但是直接全部數據都亂了,還未找到原因;
回復

使用道具 舉報

地板
ID:123289 發表于 2019-5-17 11:14 | 只看該作者
本帖最后由 yzwzfyz 于 2019-5-18 07:59 編輯

這是你的方案,而你已經認識到這個方案不能解決你遇到的問題了,那就設法改進方案。
“覆蓋”出問題,就讓它“不復蓋”好了。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表