比如程序中会对一些关键性代码(函数)做保护,不允许被其他中断函数打断,怎么实现呢?可否有具体的实现代码,因为我们目前通过简单的在进入关键性代码之前关中断,执行完关键代码后开中断,会导致程序跑飞,进入_dabort,实在找不到原因,我个人也觉得这样简单的操作是有问题的,TI的大神们,可否提供相关例子参考参考?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
比如程序中会对一些关键性代码(函数)做保护,不允许被其他中断函数打断,怎么实现呢?可否有具体的实现代码,因为我们目前通过简单的在进入关键性代码之前关中断,执行完关键代码后开中断,会导致程序跑飞,进入_dabort,实在找不到原因,我个人也觉得这样简单的操作是有问题的,TI的大神们,可否提供相关例子参考参考?
你好,Susan Yang:
可能是我没有表达清楚,我并不是想要实现中断嵌套,我是想实现代码的临界区保护功能(critical section)。因为我们程序中用到了MCAL,在MCAL的程序中有很多如下的语句,目前都是空语句(未实现):
如下图所示在Gpt模块里面的:
在SPI模块里面的:
之前我们是用_disable_interrupt_()和_enable_interrupt_()来实现Spi_GlobalSuspend()和Spi_GlobalRestore(),发现程序一运行就会进入_dabort。所以怀疑是不是实现方式有问题。
另外想问一下,你们能否提供MCAL相关的570例程,供我们参考一下你们是怎么实现的?如果有的话我们可以在你们工程的基础上移植我们的程序,保证底层都是没问题的,因为我们目前碰到的问题貌似是程序运行的时候有一个全局缓冲区的数据会错乱,因为我们程序的整体架构(程序很大)就是以临界区保护机制为基准的,目前被卡在一加中断锁,程序就跑入_dabort,实在找不到原因。