for debug

This commit is contained in:
yelvlab 2025-01-23 10:35:12 +08:00
parent 11cf546438
commit c11db2c9bf
3 changed files with 40 additions and 26 deletions

View File

@ -2,7 +2,7 @@
MEMORY MEMORY
{ {
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 64K FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 64K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 4K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 8K
} }
ENTRY(Reset_Handler) ENTRY(Reset_Handler)

View File

@ -163,15 +163,15 @@ void USART1_IRQHandler(void) {
// static uint8_t rx_buffer[RX_BUFFER_SIZE]; // static uint8_t rx_buffer[RX_BUFFER_SIZE];
if (RESET != usart_interrupt_flag_get(USART_PHY, USART_INT_FLAG_RBNE)) { if (RESET != usart_interrupt_flag_get(USART_PHY, USART_INT_FLAG_RBNE)) {
usart_interrupt_flag_clear(USART_PHY, USART_INT_FLAG_RBNE); // usart_interrupt_flag_clear(USART_PHY, USART_INT_FLAG_RBNE);
uint8_t received_data = (uint8_t) usart_data_receive(USART_PHY); uint8_t received_data = (uint8_t) usart_data_receive(USART_PHY);
printf("%c", received_data); // printf("%c", received_data);
// // 将接收到的数据存储到缓冲区 // 将接收到的数据存储到缓冲区
// if (rx_index < RX_BUFFER_SIZE - 1) { // if (rx_index < RX_BUFFER_SIZE - 1) {
// rx_buffer[rx_index++] = received_data; // rx_buffer[rx_index++] = received_data;
// } // }
// store_char(received_data, &rx_buffer); store_char(received_data, &rx_buffer);
} }
// //
// if (RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_IDLE)) { // if (RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_IDLE)) {

View File

@ -18,9 +18,20 @@ static char *strchr_pointer = NULL;
static packet_state_t packet_state = PS_LEN; static packet_state_t packet_state = PS_LEN;
// bool code_seen(char code) {
// // strchr_pointer = strchr(cmd_buffer[buf_index_r], code);
// return (strchr_pointer != NULL); //Return True if a character was found
// }
bool code_seen(char code) { bool code_seen(char code) {
strchr_pointer = strchr(cmd_buffer[buf_index_r], code); strchr_pointer = NULL;
return (strchr_pointer != NULL); //Return True if a character was found for (int i = 0; cmd_buffer[buf_index_r][i] != '\0'; i++) {
if (cmd_buffer[buf_index_r][i] == code) {
strchr_pointer = &cmd_buffer[buf_index_r][i];
break;
}
}
return (strchr_pointer != NULL); // Return True if a character was found
} }
float code_value(void) { float code_value(void) {
@ -149,6 +160,7 @@ void start_communication(void) {
} }
if (buf_length) { if (buf_length) {
printf("DONE\r\n");
prcess_command(); prcess_command();
buf_length--; buf_length--;
buf_index_r = (buf_index_r + 1) % BUF_SIZE; buf_index_r = (buf_index_r + 1) % BUF_SIZE;
@ -178,34 +190,36 @@ void get_command(void) {
} else { } else {
serial_count = 0; serial_count = 0;
} }
break; break;
case PS_TYPE: case PS_TYPE:
packet_type = serial_char; packet_type = serial_char;
check_sum += serial_char; check_sum += serial_char;
packet_state = PS_LEN; packet_state = PS_LEN;
break; break;
case PS_LEN: case PS_LEN:
check_sum += serial_char; check_sum += serial_char;
packet_len = serial_char; packet_len = serial_char;
packet_state = PS_PAYLOAD; packet_state = PS_PAYLOAD;
break; break;
case PS_PAYLOAD: case PS_PAYLOAD:
check_sum += serial_char; check_sum += serial_char;
cmd_buffer[buf_index_w][serial_count++] = serial_char; cmd_buffer[buf_index_w][serial_count++] = serial_char;
if (serial_count >= packet_len) { if (serial_count >= packet_len) {
packet_state = PS_CRC; packet_state = PS_CRC;
} }
break; break;
case PS_CRC: case PS_CRC:
packet_state = PS_NULL; packet_state = PS_NULL;
if (!serial_count || check_sum != serial_char) { if (!serial_count || check_sum != serial_char) {
serial_count = 0;
return;
}
cmd_buffer[buf_index_w][serial_count] = 0;
buf_index_w = (buf_index_w + 1) % BUF_SIZE;
buf_length++;
serial_count = 0; serial_count = 0;
return; default:
} break;
cmd_buffer[buf_index_w][serial_count] = 0;
buf_index_w = (buf_index_w + 1) % BUF_SIZE;
buf_length++;
serial_count = 0;
} }
} }
} }