欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
MCU SPI+DMA驅動LCD的16bit數據拼接
[打印本頁]
作者:
hxdby
時間:
2022-7-19 11:02
標題:
MCU SPI+DMA驅動LCD的16bit數據拼接
我現在驅動一塊TFT LCD,需要使用到SPI+DMA,并且需要同時使用SPI+DMA發送8bit和16bit數據。
初始化配置的是SPI+DMA的8bit發送,現在需要發送16bit,采用的是把兩個8bit拼接的方法,這也是網上很多人用的
一種方法,大概是這么實現的:
先定義一個數組
uint8_t sendBuff[2]; //數組中的元素是8bit,共兩個元素,發送16bit數據的時候需要拼接這兩個元素
void senddata16(uint16_t data16)
{
sendBuff[0] = data16 >>8; //---------------1
sendBuff[1] = data16; //--------------------2
//DMA依次搬運以上1,2數據就可以實現16bit發送
DMA_Cmd(Enable);
}
主要上面這兩個1,2拼接方法不太理解,為什么這樣拼接一下就可以實現發送16bit數據?
比如data16=0x4A33, 右移8位變成0x004A, 不還是16位嗎?把0x004A賦給sendBuff[0], 因為這是8位數組,所以把16bit的0x004A賦值后,
高8位0x00被切斷了?實際上只是把0x4A賦給了數組?
下面的sendBuff[1] = data16; 相當于sendBuff[1] = 0x4A33; 把16bit數據直接賦值給8位數組?所以sendBuff[1] 最終的值是什么?
這幾個實在不太理解,希望得到專家的幫助,感謝
作者:
的花朵
時間:
2022-7-19 13:36
還是截斷哇,sendbuff[1] = 0x33
作者:
wpppmlah
時間:
2022-7-19 13:53
比如data16=0x4A33
uint8_t sendBuff[2]; //
sendBuff[0] = data16 >>8; //---------------1
sendBuff[1] = data16; //--------------------2
經過以上賦值以后:
sendBuff[0] 當前值為 0X4A
sendBuff[1] 當前值為 0X33
作者:
hxdby
時間:
2022-7-19 14:32
發表于 2022-7-19 13:36
還是截斷哇,sendbuff[1] = 0x33
明白了,謝謝
作者:
jizhongbiao
時間:
2022-7-20 11:42
你的sendbuff是u8類型的,只能保存u16的低8bit數據
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1