欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
STM32 CAN轉USART問題
[打印本頁]
作者:
我的天空-
時間:
2019-5-16 22:28
標題:
STM32 CAN轉USART問題
最近在做一個CAN轉USART的工具,主要是把特定格式發回來的CAN數據,解析之后通過串口轉發回來,一包數據是有多幀CAN數據轉換回來的,長度不固定,如果前一包數據長度較長,后一包數據就會把上一包多出來的數據也打印出來,試過每次printf完一包數據之后,把數組通過memset函數清零,但是依然不行,求大神支招
我是每次中斷里把CAN每一幀數據解析,每一次進中斷都會把解析到需要的數據存到一個全局變量X的數組里面,在多次進中斷,解析完之后,就在主函數里打印全局變量X
作者:
yzwzfyz
時間:
2019-5-17 09:01
你要好好規劃好存儲數據的地方,并能區分:
1、上個包數據放在何處?
2、這次包又放在了哪進?
3、下個包來了,這次包又如何變成了上個包?
4、包是什么概念,他是如何被界定的,大小多少……
這此都是邏輯問題,規劃好后,畫成框圖,再依框圖寫程序,不難。
作者:
我的天空-
時間:
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函數給這個全局變量清零,但是直接全部數據都亂了,還未找到原因;
作者:
yzwzfyz
時間:
2019-5-17 11:14
本帖最后由 yzwzfyz 于 2019-5-18 07:59 編輯
這是你的方案,而你已經認識到這個方案不能解決你遇到的問題了,那就設法改進方案。
“覆蓋”出問題,就讓它“不復蓋”好了。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1