新手上路
- 积分
- 42
- 金钱
- 42
- 注册时间
- 2016-3-20
- 在线时间
- 9 小时
|

楼主 |
发表于 2016-4-4 16:27:00
|
显示全部楼层
为什么我把DMA设置成普通模式不循环,然后用串口给单片机发送01 02 03这三个字节,在DMA的TC中断服务函数里面打印USART_RX_BUF[0],USART_RX_BUF[1],USART_RX_BUF[2]也就是想把01 02 03打印出来(设置buffersize为3),结果确实打印出来了01 02 03但是打印完一次01 02 03之后仍然继续不停打印03,如果我只发送一次01 02 03难道不应该只进入一次TC中断吗?
这是中断服务程序
void DMA2_Stream7_IRQHandler(void)
{
if(DMA_GetFlagStatus(DMA2_Stream7,DMA_FLAG_TCIF7) != RESET)
{
DMA_ClearFlag(DMA2_Stream7,DMA_FLAG_TCIF7);
DMA_ClearITPendingBit(DMA2_Stream7, DMA_IT_TCIF7);
USART_SendData(USART1,USART_RX_BUF[0]);
USART_SendData(USART1,USART_RX_BUF[1]);
USART_SendData(USART1,USART_RX_BUF[2]);
}
MYDMA_Enable(DMA2_Stream7,SEND_BUF_SIZE);
|
|