乙個簡單的串列埠接收(帶協議)
資料頭資訊(5個)
資料長度資訊(1個)
資料(<1024個)
資料校驗(1個)
資料尾一.串列埠資料接收buf
typedef struct _uartcommadtype
uartcommadtype;
二. 串列埠接收的狀態,如果在時間限制內未完成接收,則認為接收錯誤
uint16_t g_uart2checktick;//時間限制
uint8_t g_buart2detected;//檢測標誌
void uart2_1ms_isr(void)
}}
三. 接收檢測,一直把資料放進buf裡,如果檢測到資料長度位,則再接收資料長度位里資料個長度結束
#define uart_rx_header ( 0x00 )
#define uart_rx_id ( 0x01 )
#define uart_rx_category ( 0x02 )
#define uart_rx_page ( 0x03 )
#define uart_rx_func ( 0x04 )
#define uart_rx_data_length ( 0x05 )
#define uart_rx_control ( 0x06 )
void uart2_recvhandler(int c)
g_uart2command.buffer[g_uart2command.index] = c;
g_uart2command.index++;
g_uart2command.index &= 0x3ff;//max is 1024
if(g_uart2command.index > uart_rx_data_length) }
}
四. 校驗資料頭
uint8_t uart2_verify(void)
return 0;
}
校驗位可以自己定義 C 乙個串列埠接收思路
void uart rx isr void 接收中斷函式 else recv state 0 回到初始狀態 break case1 if c 0xff 是陣列第二位元組 攏共 3位資料 中間這位 為資料位 就不進行校驗判斷了 else break case2 if c 0x03 是陣列第三位元組 e...
乙個串列埠接收資料的狀態機
關於串列埠接收轉義字元狀態機 s1 s2 s3 s4 s5 s1空閒狀態,收到第乙個開始前導符,跳轉到s2 s2收到第乙個開始前導符狀態,收到開始第二個前導符,跳到s3 收到其他資料,跳轉到s1 s3收到第二個開始前導符狀態,收到其他資料進行接收,跳轉到s3 收到第乙個結束前導符,跳轉到s4 s4收...
乙個簡單的串列埠過濾驅動
學習驅動開發一段時間了,在嘗試著從最簡單的驅動開發著手學習,我再嘗試著編寫乙個最簡單的串列埠過濾驅動,可是多次嘗試都沒有成功,總是一載入就藍屏。看了網上的例子他們都是採用的ioattachdevicetodevicestack,而我採用的是ioattachdevice,現在把網上的 整理成最簡單的形...