智能车制作

标题: ..\src\mian.c(13): warning: #174-D: expression has no effect [打印本页]

作者: jhgj    时间: 2016-8-5 11:05
标题: ..\src\mian.c(13): warning: #174-D: expression has no effect
在主函数中使用common.h里的DisableInterrupts;和 EnableInterrupts;时,编译提示..\src\mian.c(13): warning:  #174-D: expression has no effect,这是表示这两句没起到作用吗?怎么解决?

作者: jhgj    时间: 2016-8-5 12:05
新人求教,大神支支招啊
作者: melon_1    时间: 2016-8-5 14:04
1,DisableInterrupts;和 EnableInterrupts;这两句的内容是啥?
2,mian.c?? or main.c??
作者: jhgj    时间: 2016-8-5 20:15
melon_1 发表于 2016-8-5 14:04
1,DisableInterrupts;和 EnableInterrupts;这两句的内容是啥?
2,mian.c?? or main.c??

#define EnableInterrupts    __enable_irq
#define DisableInterrupts   __disable_irq
这两句是在common.h里的,我是在main函数里用,禁止总中断再开总中断


作者: melon_1    时间: 2016-8-6 15:41
jhgj 发表于 2016-8-5 20:15
#define EnableInterrupts    __enable_irq
#define DisableInterrupts   __disable_irq
这两句是在com ...

http://infocenter.arm.com/help/i ... 348bc/CJAEAEHA.html

4.7.10. __enable_irq
此内在函数启用 IRQ 中断。
Note
通常,此内在函数通过清除 CPSR 中的 I 位启用 IRQ 中断。但对于 Cortex M-profile 处理器,它清除异常掩码寄存器 (PRIMASK)。

语法
void __enable_irq(void)
限制
只能在特权模式(即非用户模式)下执行 __enable_irq 内在函数。在用户模式下,此内在函数不会更改 CPSR 中的中断标记。

另请参阅

这里的 __enale_irq 应该是一个函数,无形参的函数调用应该不是直接写个函数名(一个地址)吧?比如说调用__enable_irq的时候应该是这样:

  1. __enable_irq();
复制代码
而你那个宏,不一样。









欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2