这只是个人兴趣的问题.我知道我的JTAG能够读取uController的寄存器值.但我不知道JTAG设备如何知道何时停止uController.我认为可能会添加一些代码来调用中断,但是你可以在操作期间添加断点,因此这种接缝是错误的.那怎么办?
我有一个由不同模块组成的程序.模块通过函数调用互连.例如,State Init调用每个模块的init函数.应该可以禁用模块(从编译中排除).最简单的方法是使用预处理器定义.但这会产生大量代码:
#IF MODULE_XXX_COMPILE
ret = module_func(...);
#ELSE
ret = 0;
#ENDIF
Run Code Online (Sandbox Code Playgroud)
我想得到一个像这样的宏:
ret = MOD_COMPILE_CALL(module_func(...));
Run Code Online (Sandbox Code Playgroud)
因此宏检查define是否为1如果是,它执行函数,否则它会跳过执行并返回0.问题是我的编译器告诉我它不可能#IF在宏中使用.有办法解决吗?
以下两个代码序列产生相同的结果:
uint mod = val % 4;
uint mod1 = val & 0x3;
Run Code Online (Sandbox Code Playgroud)
我可以用两者来计算相同的结果.我知道在硬件中,&操作员比%操作员更容易实现.因此我希望它比%运营商有更好的性能.
我可以一直认为&性能更好或相同吗?编译器会自动优化吗?
c ×3
bare-metal ×1
bitwise-and ×1
debugging ×1
embedded ×1
jtag ×1
macros ×1
modulo ×1
performance ×1