在线时间272 小时
UID254171
ST金币1804
蝴蝶豆2
注册时间2009-7-18
该用户从未签到
金牌会员
- 最后登录
- 2021-6-4
|
发表于 2017-6-2 11:28:17
|
显示全部楼层
这个 需要配合 串口数据 收发 协议来,否则无法确认 到底接收多少数据。
HAL_UART_Receive_DMA(&huart1, RX_DATA, RX_DATA_NUM);
__HAL_DMA_DISABLE_IT(huart1.hdmarx, DMA_IT_TC | DMA_IT_HT | DMA_IT_TE);//关闭DMA 错误 传输一半 全部完成 中断
__HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);//使能 串口 空闲中断
HAL_NVIC_SetPriority(USART1_IRQn, 1, 0);
HAL_NVIC_EnableIRQ(USART1_IRQn); //使能中断
void USART1_IRQHandler(void)
{
if((__HAL_DMA_GET_COUNTER(huart1.hdmarx) + RX_DATA[3]) == (RX_DATA_NUM - 6))
{
Flag_RX = 1;
}
__HAL_UART_CLEAR_IT(&huart1, UART_CLEAR_IDLEF);
__HAL_DMA_DISABLE(huart1.hdmarx);
huart1.hdmarx->Instance->CNDTR = RX_DATA_NUM;
__HAL_DMA_ENABLE(huart1.hdmarx); //DMA接收数据 必须在 DMA 禁止 时 重新写入
} |
|