1,硬件平台stm32f407
2,问题:之前使用usart1的DMA发送正常,之后拷贝增加了网络相关的功能代码后,一到运行HAL_UART_Transmit_DMA()函数时单片机卡死
3,各种对比前后配置均无问题:配置串口中断、串口发送DMA中断、串口接收DMA中断,允许生成中断处理函数,添加初始化时设为接收状态,在串口中断处理函数中添加空闲判定接收完成。等等。
4,突然灵光一现,HAL_UART_Transmit_DMA()函数所指向的发送数据存储区太小。未拷贝增加网络相关功能代码前只发送简短的信息,故存储区只设了30字节;而拷贝来的功能代码里要发送MAC地址,数据量大于30。增大存储区后恢复正常。
5,不过,发送并不会导致内存数据变化,为啥会导致卡死,具体的机理尚未弄清!