我是ARM微控制器编程的初学者,有以下问题需要解决。
问题是main()和ISR_Buffer访问外部SRAM以及访问的内存都不是原子。函数在缓冲区重新计算期间将数据写入SRAM。ISR_Buffers读取数据以填充小设备缓冲区。如何解决这个问题?
IDE:IAR。芯片:AT91SAM7.
发布于 2011-12-21 15:50:28
如果我理解得对,你可以使用循环缓冲器。如果实现正确,它将保证原子写入和读取。
或者,您可以在缓冲区操作期间屏蔽main()中的中断,以确保ISR无法访问数据。但这些操作必须是快速的,否则你的外部设备将得到缓冲下溢。
https://stackoverflow.com/questions/8592115
复制相似问题