stm32l073xx.h中有定义中断函数: #define LPUART1_IRQHandler RNG_LPUART1_IRQHandler ...... #define AES_RNGLPUART1_IRQHandler RNG_LPUART1_IRQHandler ...... 并且在stm32l0xx_it.c中,定义了函数AES_RNGLPUART1_IRQHandler(){} 按照预编译原理分析,A 用 B替换, C用B替换,是不是说明调用A,执行是按照C执行的呢? 如果这样,上面的define等同于#define A B, #define B C,原文中这种换位置的定义的意义何在? 如果不是上面这种理解, 那么调用 AES_RNGLPUART1_IRQHandler()时,到底使用的是哪个函数?是自己的定义过程,还是RNG_LPUART1_IRQHandler过程(没有发现实现过程)。如是后者,AES_RNGLPUART1_IRQHandler()实现过程是不是多余了? 以前没见过这种定义方式,想确认一下,有没有网友在其他地方遇到过? |
PWD13F60功率模块在应用时是否需要加额外的散热器
使用L476_NUCLEO板串口通信,波特率为什么到460800就收不到数据?目标为1382400
为什么Stm32F103驱动ov7670有严重的分屏现象。
签到
签到
STM32f407ZG使用STM32CubeMX创建USB应用失败
关于STM32的高精度定时器应用问题请求帮助
STM32L031X 1.65V 低压应用
L6470的应用问题,高速不转振动
MDK能否仿真App应用程序(STM32起始地址不为0x08000000)?
只是定义了个符号,遇到AES_RNGLPUART1_IRQHandler会用RNG_LPUART1_IRQHandler替换掉。
如果一些函数没有加weak修饰,而你又重复定义的话,应该会提示重复定义error吧。
一般来说,会更习惯用
#define A B
#define C B
...
然后定义函数:
B()
{
}
而文件中的
#define A B
#define C B
..
函数:
C()
{
}
预编译本意是替换,替换后的结果,还是要定义函数B了。