你好
团队
如果一个全局变量是 在 main 函数,中运行的 Assignment、那么中断中断将中断该,、因此这个变量具有风险
我想知道 CPU,是否可以中断代码“ A=0x32”?
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.
你好
团队
如果一个全局变量是 在 main 函数,中运行的 Assignment、那么中断中断将中断该,、因此这个变量具有风险
我想知道 CPU,是否可以中断代码“ A=0x32”?
谢谢你
如果在函数中(而不是 ISR)和中断 ISR 中使用全局变量。 在函数中写入此全局变量时、需要屏蔽中断。
是 的、我需要在函数和中断 ISR 中读取和写入全局变量。现在、我写入一些函数读取函数和写入函数、以便在(XXX.C)中写入和读取全局变量。可以避免这种情况吗?、因为如果 屏蔽中断、可能会影响系统稳定性。
dose TMS570 CPU 的中断可以发出汇编指令?
黄先生、您好!
ARM 汇编指令可由异常(IRQ、FIQ、SVC、ABORT、..)中断。 我知道使用全局标志是 ISR 通信的一种方式、但您应该注意二者之间的竞争条件。 您需要禁用 INT 或实现互斥量以在函数中写入全局变量(例如 main())。
volatile char gcFlag;
int main (空)
{
//重置时初始化全局变量
GcFlag = 0;
while (1)
{
if (gcFlag){
//您可能需要在此处实现某种互斥,或禁用
//中断直到您完成。
GcFlag = 0;
…μ A。
}
…μ A。
}
ISR()
{
gcFlag = 1;
…μ A。
}
你好
根据您的代码
A. C.
静态 uint8_t gcFlag;
ISR()
{
gcFlag = 1;
…μ A。
}
uint8_t 读取()
{
返回 gcFlag
}
uint8_t set(uint8_t value)
{
gcFlag=值
}
main.C
int main (空)
{
//重置时初始化全局变量
置位(0)
;
while (1)
{
如果(Read())
{
//您可能需要在此处实现某种互斥,或禁用
//中断直到您完成。
置位(0)
;
…μ A。
}
…μ A。
}
现在、我想用这种方法来执行程序。好吗、将会发生什么。
当运行一个汇编指令,一条指令,IRQ 时、某些 CPU 无法在执行这个指令,,后中断进入中断函数的指令