»
(008)CubeIDE实现USB外设*
(018)C99 的指针*
(019)C99 只有值赋值,没有move*
(022)POSIX线程库pthread的同步锁*
(023)POSIX线程库pthread的多线程*
(027)C99标准库中的计时与等待 *
(028)C语言中的高精度计算库GMP *
(029)C语言中的Web服务*
(030)C语言中的字符转码ICU*
(031)从几个方面显然C语言比C++效率高*
(035)STM32 UART连续接收数据函数
HAL库函数:
(单个字节的例子)
使能UART接收单字节的中断:
HAL_UART_Receive_IT(&huartX, &rx_uint8, 1);
UART单字节接收完成的中断
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
if (huart->Instance == huartX.Instance) {
// 处理接收到的字节数据
// 重新使能UART接收中断
HAL_UART_Receive_IT(huart, &rx_uint8, 1);
}
}
//其中,DMA的优势:DMA拷贝接收数据寄存器RDR的单字节内容到内存的过程,不需要管理。
//HAL_UART_Receive_IT函数调用过程中的最后一个参数可以按需求改为非单字节的更大的数。
//同样,在缓冲区不为单字节的情况下,只有当缓冲区被填满或者被填半满的时候才会调用HAL_UART_RxCpltCallback或者HAL_UART_RxHalfCpltCallback中断函数。
//当然,ARM系列CPU中,数据传输基本上以8个位为一个传输单元。如果您的能力特别强,可以考虑以5、6、7、8个位为一次传输的基本传输单元。