本帖最后由 mrhw 于 2014-12-3 19:46 编辑
产品原来是使用STM32F103C8T6的,为节省成本准备使用GD32F130C8T6, 移植编译成功后测试,果然体现出了GD32 M3内核的运算性能优势(之前我们移植过STM32F051C8T6最后因运算能力不足而放弃),但也带来了新的问题:程序中我们使用了1个EXTI2中断和1个TIM3中断,EXTI2中断抢占优先级为1,TIM3中断抢点优先级为0, 在进入EXTI2中断后开启TIM3并运行计算任务,计算任务尚未完成时,TIM3中断发生打断EXTI2,TIM3中断处理函数中使能DMA_SPI_TX,此时TIM3中断已经处理完成,EXTI2中断继续运行至完成,接下来又来一个EXTI2中断(EXTI2的中断频率为18K/秒)。
程序逻辑编程正确,经测试有一点不能达到要求:每次进入TIM3后使能DMA_SPI_TX,发出的数据并不在同一时间,有时提前<1us,有时延时<1us ,并不能实现时间上的对齐,在STM32F0和F1上没有这种现象,(EXTI2的中断源频率非常稳定,这个我们已经成熟应用于STM32F1),我们尝试提高SPI的速度,速度设置越高,SPI发出数据的时间对齐程序越高,但是超出了接收设备的极限,这里希望能得到一个解决的思路! |