大家早上好!
我在 MSP430f6779上的程序有一个奇怪的问题。
问题是、当我在主文件中有一个空 while 循环时:
while{
}
它都按预期工作。 DMASZ 递减计数至零并运行中断。
当我在 while 环路中放置一个额外的 for 循环时、一切都会发生变化。
while{
for (i=0;i<3;i++){
//不执行任何操作
}
}
然后 DMA 数据传输停止工作。
有人有这样的问题吗?
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
这里是我的 DMA 配置:
DMACTL0 = DMA0TSEL__USCIA1RX;//将 DMA0触发器设置为 UCA1RXIFG
__data20_write_long (((uintptr_t)&DMA0SA、(uintptr_t)&UCA1RXBUF);
//源块地址
__data20_write_long (((uintptr_t)&DMA0DA、(uintptr_t)&EXT_UART_buffer);
DMA0SZ = EXT_UART_Buffer_MAX;//Ile danych ma przyjsc po uarcie.
DMA0CTL =(0 << 12)|// 0:单次传输,4:单次传输;单次传输意味着 DMA 将在填满整个缓冲区后停止
(3 << 10)|//目标地址递增
(0 << 8)|//源地址不变
(1 << 7)|//目标为字节
(1 << 6)|//源是字节
(1 << 5)|
(0 < 4)|//禁用 DMA // TODO
(1 << 2)|
(1 << 0);