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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java16位字符串压缩成8位_在8位UART上发送16位值

發布時間:2025/3/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java16位字符串压缩成8位_在8位UART上发送16位值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先在中斷例程中使用sprintf是一個非常糟糕的想法甚至id禁用中斷 . 更糟糕的是將數據發送到那里:)你可能是一個非常非常初學者 . 始終保持中斷例程盡可能短 .

將調試代碼移到中斷之外 .

其次,你只能讀取你在中斷中收到的內容(這是一個字節)而你只讀了兩個 .

最后,我不認為 UART_GetByte 被發明用于中斷例程 . 只需讀取數據寄存器即可 .

我個人更喜歡工會 .

typedef union

{

uint16_t u16;

int16_t i16;

uint8_t b[2];

}data16;

volatile data16 revcb, tb; // tb can be local and not volatile

volatile int pointer = 0;

volatile int flag = 0;

CY_ISR(UART_ISR){

Status_pin_Write(0xFF); //Used for debugging

revcb.b[pointer] = dataregister; // place the appripriate code here

pointer = ! pointer;

if(!pointer) flag = 1;

Status_pin_Write(0x00);

}

//in the main function

while(1)

{

if(flag)

{

ISR_Rx_Disable(); // make it atomic

tb = recv;

flag = 0;

ISR_Rx_Enable();

sprintf(TransmitBufferUSB,"%d\n\r",tb.u16);

UART_USB_PutString(TransmitBufferUSB);

}

}

但請記住 - 當您發送調試數據時 - 許多其他值可能會出現,您可能會丟失一些東西 . 您需要實現循環緩沖區 - 但這超出了此問題的范圍 .

總結

以上是生活随笔為你收集整理的java16位字符串压缩成8位_在8位UART上发送16位值的全部內容,希望文章能夠幫你解決所遇到的問題。

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