我是ARM微控制器编程的初学者,有以下问题需要解决。
问题是main()和ISR_Buffer都访问外部SRAM,那些访问不是原子。 main()函数在缓冲区重新计算期间将数据写入SRAM。 ISR_Buffers读取数据以填充小型设备缓冲区。如何解决这个问题?
IDE :IAR。 芯片:AT91SAM7。
答案 0 :(得分:1)
如果我理解正确,您可以使用cyclic buffer。正确实施,它将保证原子写入和读取。
或者,您可以在缓冲区操作期间屏蔽main()
中的中断,以确保ISR无法访问数据。但这些操作必须很快,否则外部设备将获得缓冲区下溢。