arm Las velocidades de los dos puertos serie son las mismas. ¿Por qué necesitamos un búfer de recepción del puerto serie?
1. Primero, escriba datos en el búfer de envío al enviar, luego comience a enviar, espere a que se complete el envío e interrumpa, y continúe escribiendo datos... Similar a recibir, este método es fácil de implementar. , pero solo es adecuado para una sola tarea en el programa. Si varias tareas usan el puerto serie para enviar o recibir, se producirán problemas. El método habitual es establecer buffers de recepción y envío. >
2. Cree dos matrices TX_BUFFER[tx_buffer_size] y RX_BUFFER[rx_buffer_size]], tomando la recepción como ejemplo, establezca dos bits de bandera, una bandera de búfer vacío RX_Empty, una bandera llena RX_Full, un número de miembro de búfer RX_Num, una búsqueda. índice RX_RD_Index y un índice de almacenamiento RX_WR_Index Durante la programación, cuando se produce un puerto serie Al recibir una interrupción, juzgue el RX_Num y rx_buffer_size actuales en el programa de interrupción del puerto serie. Si no están satisfechos, almacene los datos recibidos y modifique el índice. Si el índice es mayor que rx_buffer_size, cámbielo a 0, lo que significa una cola circular cuando los datos recibidos se analizan en el programa. El procesamiento del marco es similar al proceso de recepción, principalmente modificando el índice y el número de datos, etc.
3. Si la aceptación es de algunos comandos, se debe agregar un juicio de tiempo en medio de la recepción de un cuadro de datos. Se debe agregar un temporizador o retraso al programa que procesa los datos recibidos. se recibe antes de que el temporizador interrumpa, los datos continúan recibiéndose. Si el temporizador genera una interrupción, el valor predeterminado es que se completa una trama de recepción de datos. Dado que el número de bytes recibidos se modifica en la interrupción, se puede utilizar como una interrupción. condición de juicio sobre si se han recibido datos.
4. Entonces el buffer todavía juega un papel determinado