用的阿波罗STM32F767开发板,做串口1DMA+空闲中断接收,发现数据可以接收到,接收的数量也是对的,但接收到数据缓存的数据前四位为0,有没有大神遇到过,该怎样解决???
//串口1中断服务函数如下
void USART1_IRQHandler(Void)
{
u8 len;
u16 temp;
if((__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_IDLE)!=RESET)) //接收到了串口空闲中断
{
temp=USART1_ISR;
temp=USART1_RDR;
CLEAR_BIT(USART1->ISR,UART_FLAG_RXNE);
HAL_UART_DMAStop(&UART1_Handler); //关闭DMA
__HAL_UART_CLEAR_IDLEFLAG(&UART1_Handler); //清除空闲中断标志
num=__HAL_DMA_GET_COUNtER(&UART1RxDMA_Handler); //获取接收剩余数量
}
}
//KEY0按下一次,开启一次DMA接收
//串口发送数据dddddddfghsjsjsj,进入串口中断服务函数,关闭DMA
//数据接收到了,但前四个字节的数据均为0,丢失了
//主函数
int main(void)
{
while(1)
{
t=KEY_Scan(0);
if(t==KEY0_PRES) \KEY0按下
{
HAL——UART_Receive_DMA(&UART1_Handler,ReceiveBuff,sizeof(ReceiveBuff)); //开启DMA接收
}
}
一周热门 更多>