
我是用I2C和串口都用到了DMA,结果通道冲突了,然后我就加了互斥锁,且在串口或I2C外设使用DMA时就把所有用到这个DMA通道的外设都关闭了DMA功能,然后单独打开当前外设的DMA功能来使用。我是硬件I2C + DMA + 中断这么用的。 现在的问题是能用,串口和I2C都能用,就是用着用着会卡死,开了看门狗的,而且是不同任务的调用,且获取互斥锁是阻塞式的。我不知道是中断出问题了,还是因为频繁的切换DMA配置出问题了,因为每次调用都要更改DMA配置(内存地址、数据量、外设内存地址)。 |
低速晶振不起振问题
使用STM32F1能实现USB和fatfs同时访问SD卡吗
STM32G473RC timer8的CCDS bit, Capture/Compare DMA selection.
STM32H7+SAI+DMA双缓冲配置失败.
STM32F1使用FSMC外扩SRAM数据读写高8位数据异常问题
利用stm32f412 的SPI 的DMA 模式读取外部ADC数据如何提高效率
FW_H7 V1.12.1-HAL库DMA双缓冲配置
STM32G030K6Tx使用ADC+DMA进行6通道ADC采集,DMA传输错位问题。
STM32F103烧录程序后电流变大
STM32F103CBT6读取单总线温湿度传感器,需要手动重启。
楼主我看了一下,串口2和I2C1是公用的,只能这样分时操作。建议选择其中一个用中断的方式操作吧。这样避免冲突。
换一个端口吧。